Repository navigation
스킬 마켓플레이스와 AppContainer 평가 도구 통합 - #320
Merged
Merged
Conversation
스킬 지침 참조 여부를 확정하지 못하는 응답 기록 표시와 전용 수집 코드, 테스트 및 문서를 제거합니다. c636ff9cb6bebc9146908e6ec69ecff3f9e6e8a8을 되돌립니다.
Merged
스킬 사용 확인 표시 철회 이력 통합
AppContainer 기반 Python 및 Node 스킬 실행 PoC
There was a problem hiding this comment.
🔵 Needs a closer look
Remote installation and native process-isolation boundaries need final human review beyond the recorded CI and PoC evidence.
2 open issues
What changed in this PR
This PR consolidates remote skill discovery and installed-skill management into TableCloth’s marketplace and adds standalone AppContainer evaluation tools without enabling script execution in product chat.
Changes:
- Adds catalog validation, pinned-source installation, revision tracking, and marketplace controls.
- Removes bundled skill resources and updates guidance for optional installation.
- Adds isolated execution probes, pinned evaluation fixtures, and bilingual documentation distinguishing measured results from product support.
| File | Description |
|---|---|
| tools/appcontainer-skill-poc/skills/tablecloth-calculators/SKILL.md | Preserves upstream calculator instructions. |
| tools/appcontainer-skill-poc/skills/tablecloth-calculators/README.md | Preserves English calculator guidance. |
| tools/appcontainer-skill-poc/skills/tablecloth-calculators/README.ko.md | Preserves Korean calculator guidance. |
| tools/appcontainer-skill-poc/skills/tablecloth-calculators/LICENSE-COMMERCIAL | Retains upstream commercial-license notice. |
| tools/appcontainer-skill-poc/skills/tablecloth-calculators/docs/COPYRIGHT.md | Records independent-implementation boundaries. |
| tools/appcontainer-skill-poc/skills/tablecloth-calculators/docs/COPYRIGHT.ko.md | Provides Korean copyright guidance. |
| tools/appcontainer-skill-poc/skills/tablecloth-calculators/CONTRIBUTING.md | Preserves contribution requirements. |
| tools/appcontainer-skill-poc/skills/tablecloth-calculators/CONTRIBUTING.ko.md | Preserves Korean contribution requirements. |
| tools/appcontainer-skill-poc/skills/tablecloth-calculators/.gitignore | Excludes local Python artifacts. |
| tools/appcontainer-skill-poc/skills/tablecloth-calculators/.github/workflows/test.yml | Preserves upstream test workflow. |
| tools/appcontainer-skill-poc/skills/README.md | Explains fixture provenance and execution boundaries. |
| tools/appcontainer-skill-poc/skills/README.ko.md | Provides Korean fixture guidance. |
| tools/appcontainer-skill-poc/skills/kosis-stats/tests/fixtures/search_response.json | Adds sample search results. |
| tools/appcontainer-skill-poc/skills/kosis-stats/tests/fixtures/meta_response.json | Adds sample table metadata. |
| tools/appcontainer-skill-poc/skills/kosis-stats/tests/fixtures/data_response.json | Adds sample statistical rows. |
| tools/appcontainer-skill-poc/skills/kosis-stats/tests/__init__.py | Preserves test package marker. |
| tools/appcontainer-skill-poc/skills/kosis-stats/SKILL.md | Preserves upstream KOSIS instructions. |
| tools/appcontainer-skill-poc/skills/kosis-stats/skill.json | Retains KOSIS skill metadata. |
| tools/appcontainer-skill-poc/skills/kosis-stats/references/kosis-openapi-guide.md | Preserves API reference material. |
| tools/appcontainer-skill-poc/skills/kosis-stats/LICENSE | Retains upstream MIT license. |
| tools/appcontainer-skill-poc/skills/bok-ecos-stats/tests/test_bok_ecos.py | Adds upstream helper tests. |
| tools/appcontainer-skill-poc/skills/bok-ecos-stats/SKILL.md | Preserves upstream BOK instructions. |
| tools/appcontainer-skill-poc/skills/bok-ecos-stats/skill.json | Retains BOK skill metadata. |
| tools/appcontainer-skill-poc/skills/bok-ecos-stats/LICENSE | Retains upstream MIT license. |
| tools/appcontainer-skill-poc/skills/bok-ecos-stats/instruction.md | Preserves BOK command contracts. |
| tools/appcontainer-skill-poc/RESULTS.md | Records evaluation results and limitations. |
| tools/appcontainer-skill-poc/RESULTS.ko.md | Provides Korean evaluation results. |
| tools/appcontainer-skill-poc/README.md | Documents standalone execution and reproduction. |
| tools/appcontainer-skill-poc/README.ko.md | Provides Korean PoC guidance. |
| tools/appcontainer-skill-poc/Program.cs | Dispatches evaluation and recovery commands. |
| tools/appcontainer-skill-poc/Probes/wait.py | Exercises timeout handling. |
| tools/appcontainer-skill-poc/Probes/unicode.py | Exercises Unicode input and output. |
| tools/appcontainer-skill-poc/Probes/output.py | Exercises output limits. |
| tools/appcontainer-skill-poc/Probes/node-json.cjs | Adds fixed Node addition fixture. |
| tools/appcontainer-skill-poc/Probes/memory.py | Exercises memory limits. |
| tools/appcontainer-skill-poc/Probes/isolation.py | Probes Python isolation controls. |
| tools/appcontainer-skill-poc/Probes/isolation.cjs | Probes Node isolation controls. |
| tools/appcontainer-skill-poc/Preparation.cs | Stages pinned runtimes and registrations. |
| tools/appcontainer-skill-poc/Poc.csproj | Defines standalone Windows evaluation project. |
| tools/appcontainer-skill-poc/Native/Win32.cs | Declares native isolation APIs. |
| tools/appcontainer-skill-poc/Native/SandboxRunContracts.cs | Defines execution limits and results. |
| tools/appcontainer-skill-poc/Native/OwnedPaths.cs | Validates owned paths and manages cleanup. |
| tools/appcontainer-skill-poc/evaluation-summary.json | Stores sanitized evaluation evidence. |
| tools/appcontainer-skill-poc/Broker/SkillExecutionRegistry.cs | Validates and executes registered scripts. |
| tools/appcontainer-skill-poc/Broker/README.md | Documents broker contracts and limits. |
| tools/appcontainer-skill-poc/.gitattributes | Preserves fixture bytes across checkouts. |
| src/TableCloth.Test/OptionsSkillTests.cs | Tests marketplace entry and loading behavior. |
| src/TableCloth.ManagedAi.Test/TableCloth.ManagedAi.Test.csproj | Includes catalog fixture in test output. |
| src/TableCloth.ManagedAi.Test/ProviderTests.cs | Checks former runtime files remain inactive. |
| src/TableCloth.ManagedAi.Poc/Program.cs | Names diagnostic paths before registration. |
| src/TableCloth.ManagedAi.OpenAi/TableCloth.ManagedAi.OpenAi.csproj | Removes bundled skill resources. |
| src/TableCloth.ManagedAi.OpenAi/Skills/SkillDirectoryCleanup.cs | Adds best-effort staging cleanup. |
| src/TableCloth.ManagedAi.OpenAi/Skills/SkillCatalogClient.cs | Fetches and validates bounded XML catalogs. |
| src/TableCloth.ManagedAi.OpenAi/Skills/GithubSkillInstaller.cs | Installs and updates pinned skill sources. |
| src/TableCloth.ManagedAi.OpenAi/Skills/Bundled/tablecloth-windows-sandbox/SKILL.md | Removes bundled Sandbox instructions. |
| src/TableCloth.ManagedAi.OpenAi/Skills/Bundled/tablecloth-certificate-expiry/SKILL.md | Removes bundled certificate instructions. |
| src/TableCloth.ManagedAi.OpenAi/ServiceCollectionExtensions.cs | Registers marketplace services and HTTP client. |
| src/TableCloth.ManagedAi.Core/SkillCatalog.cs | Defines catalog and provenance contracts. |
| src/TableCloth.ManagedAi.Core/Contracts.cs | Adds skill validity and source metadata. |
| src/TableCloth.App/ViewModels/SkillSettingsItem.cs | Presents installed state and revision details. |
| src/TableCloth.App/ViewModels/OptionsWindowViewModel.Skills.cs | Replaces inline management with marketplace creation. |
| src/TableCloth.App/ViewModels/OptionsWindowViewModel.cs | Integrates marketplace dependency and removes eager loading. |
| src/TableCloth.App/ManagedAi/ManagedAiText.cs | Adds localized marketplace text. |
| src/TableCloth.App/Dialogs/SkillMarketplaceWindow.axaml.cs | Handles marketplace lifecycle and folder selection. |
| src/TableCloth.App/Dialogs/SkillMarketplaceWindow.axaml | Adds catalog and installed-skill tabs. |
| src/TableCloth.App/Dialogs/OptionsWindow.axaml.cs | Opens the marketplace dialog. |
| src/TableCloth.App/Dialogs/OptionsWindow.axaml | Replaces inline controls with marketplace guidance. |
| README.md | Updates optional-skill guidance and documentation links. |
| docs/SKILL_MARKETPLACE.md | Documents marketplace behavior and support boundaries. |
| docs/SKILL_MARKETPLACE.ko.md | Provides Korean marketplace documentation. |
| docs/RELEASING.md | Updates manual skill-installation verification. |
| docs/poc/managed-ai-runtime.md | Replaces bundled-skill descriptions with optional installation. |
Review effort: Balanced
| { | ||
| timeout.Token.ThrowIfCancellationRequested(); | ||
| var repositoryPath = entry.SourcePath == "." ? file.Path : entry.SourcePath + "/" + file.Path; | ||
| var content = await GetContentAsync(api, repositoryPath, entry.SourceRef, file, budget, timeout.Token); |
| process.stdin.on('end', () => { | ||
| const value = JSON.parse(text); | ||
| if (!Number.isFinite(value.a) || !Number.isFinite(value.b)) process.exit(2); | ||
| process.stdout.write(JSON.stringify({ok: true, sum: value.a + value.b, runtime: process.version})); |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.

식탁보 AI에서 원격 스킬 탐색과 설치된 스킬 관리를 하나의 마켓플레이스 창으로 제공합니다. 옵션과 AI 설정 팝업은 같은 창으로 연결하고 첫 메시지에는 안내 카드 세 개와 스킬 탐색 링크를 표시합니다. 스킬을 기본 설치하지 않으며 기존 설치본은 계속 관리할 수 있습니다.
클라이언트는 XML 카탈로그의 고정 원본과 라이선스를 GitHub API로 검증해 설치합니다. 출처 및 버전 기록, 업데이트, 활성화 전환과 제거를 지원하며 원격 목록에서 내리거나 카탈로그 조회가 실패해도 로컬 설치본을 관리할 수 있습니다. 등재 및 검토 상태로 설치 버튼을 제한하지 않습니다.
제품의
shell_tool=false,unified_exec=false, 읽기 전용 샌드박스와never승인 정책을 유지합니다. 사용하지 않는 전용 Python 및 Node.js 설치, 환경 주입, 진단과 UI를 제거했습니다. AppContainer 격리 실행기와 고정 스크립트 MCP 중계기는 tools 아래의 독립 평가 도구로 통합하며 제품 채팅에 연결하지 않습니다. 스킬 사용을 확정하지 못하던 응답별 기록 표시도 제거한 상태를 유지합니다.카탈로그 서브모듈은 TableClothCatalog #150의 main
30a8ad90c3557db849ba866c9d3905e5645d286b를 참조합니다. 활성 6개 중 고정 스크립트 3개는 공개 평가 후보로 유지합니다. API 키 설정과 DPAPI 자격 증명 보호 및 전달은 #321에서 추적합니다. 영한 안내에서 제품 지원 범위와 PoC 실측 범위를 구분했습니다.#323과 #322를 merge commit으로 연결하여 지정한 세 브랜치의 원본 이력을 보존했습니다. 최종 HEAD
d630849480a91bab6e4621abe4710abd18156d85의 소스 트리590e5602c31a79df45dc0d63b355d96b116e0b99는 원격 CI Build602를 통과한415a5cc5와 동일합니다. develop은 현재 HEAD의 조상이므로 통합 시 새 코드 충돌이 없습니다.검증:
병합 후 최종 develop HEAD의 전체 CI를 별도로 확인합니다. PoC의 Windows 10 22H2, ARM64 실측과 실제 모델의 도구 선택은 후속 범위입니다. 이번 통합에서 버전, 태그와 공개 릴리스를 변경하지 않습니다.
병합 후 검증 완료: 최종 develop
2bc0e3dd623e5b3bc4d602c5882a91bc97af3ac3의 원격 CI Build604가 성공했습니다. Debug/Release x64/ARM64 네 구성의 전체 테스트, 식탁보 Native AOT와 패키징, Release의 Spork 및 Bootstrapper 작업과 업로드를 확인했습니다. Release ARM64 로그에서도 Spork 43개, 앱 322개, Managed AI 197개 테스트를 확인했습니다. 지정한 세 브랜치의 원본 및 최종 HEAD가 모두 develop의 조상이며 PR #323, #322, #320 모두 병합 상태입니다. 두 저장소의 열린 PR은 없고 로컬 develop과 origin/develop, 카탈로그 고정 커밋 및 main이 일치합니다. 루트와 서브모듈 작업 트리도 깨끗합니다.