@aipt/cli 0.1.0 → 0.1.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +114 -5
- package/dist/application-runner.js +276 -0
- package/dist/application.js +254 -0
- package/dist/catalog/foundation.agent-chat-ui-consumer/1.0.0/assets/README.agent-chat-ui.md +5 -0
- package/dist/catalog/foundation.agent-chat-ui-consumer/1.0.0/release.json +29 -0
- package/dist/catalog/foundation.agent-chat-workbench/1.0.0/assets/package.json +19 -0
- package/dist/catalog/foundation.agent-chat-workbench/1.0.0/assets/src/AgentChatWorkbench.test.tsx +12 -0
- package/dist/catalog/foundation.agent-chat-workbench/1.0.0/assets/src/AgentChatWorkbench.tsx +27 -0
- package/dist/catalog/foundation.agent-chat-workbench/1.0.0/assets/src/index.ts +2 -0
- package/dist/catalog/foundation.agent-chat-workbench/1.0.0/assets/src/style.css +1 -0
- package/dist/catalog/foundation.agent-chat-workbench/1.0.0/assets/src/styles.d.ts +1 -0
- package/dist/catalog/foundation.agent-chat-workbench/1.0.0/assets/src/test/setup.ts +1 -0
- package/dist/catalog/foundation.agent-chat-workbench/1.0.0/assets/tooling/verify-bundle.mjs +4 -0
- package/dist/catalog/foundation.agent-chat-workbench/1.0.0/assets/tsconfig.build.json +1 -0
- package/dist/catalog/foundation.agent-chat-workbench/1.0.0/assets/tsconfig.json +1 -0
- package/dist/catalog/foundation.agent-chat-workbench/1.0.0/assets/vite.config.ts +4 -0
- package/dist/catalog/foundation.agent-chat-workbench/1.0.0/release.json +33 -0
- package/dist/catalog/foundation.agent-chat-workbench/1.1.0/assets/package.json +19 -0
- package/dist/catalog/foundation.agent-chat-workbench/1.1.0/assets/src/AgentChatWorkbench.test.tsx +12 -0
- package/dist/catalog/foundation.agent-chat-workbench/1.1.0/assets/src/AgentChatWorkbench.tsx +27 -0
- package/dist/catalog/foundation.agent-chat-workbench/1.1.0/assets/src/index.ts +2 -0
- package/dist/catalog/foundation.agent-chat-workbench/1.1.0/assets/src/style.css +1 -0
- package/dist/catalog/foundation.agent-chat-workbench/1.1.0/assets/src/styles.d.ts +1 -0
- package/dist/catalog/foundation.agent-chat-workbench/1.1.0/assets/src/test/setup.ts +1 -0
- package/dist/catalog/foundation.agent-chat-workbench/1.1.0/assets/tooling/verify-bundle.mjs +4 -0
- package/dist/catalog/foundation.agent-chat-workbench/1.1.0/assets/tsconfig.build.json +1 -0
- package/dist/catalog/foundation.agent-chat-workbench/1.1.0/assets/tsconfig.json +1 -0
- package/dist/catalog/foundation.agent-chat-workbench/1.1.0/assets/vite.config.ts +4 -0
- package/dist/catalog/foundation.agent-chat-workbench/1.1.0/release.json +39 -0
- package/dist/catalog/foundation.agent-chat-workbench/1.2.0/assets/package.json +65 -0
- package/dist/catalog/foundation.agent-chat-workbench/1.2.0/assets/src/AgentChatWorkbench.test.tsx +12 -0
- package/dist/catalog/foundation.agent-chat-workbench/1.2.0/assets/src/AgentChatWorkbench.tsx +27 -0
- package/dist/catalog/foundation.agent-chat-workbench/1.2.0/assets/src/index.ts +2 -0
- package/dist/catalog/foundation.agent-chat-workbench/1.2.0/assets/src/style.css +1 -0
- package/dist/catalog/foundation.agent-chat-workbench/1.2.0/assets/src/styles.d.ts +1 -0
- package/dist/catalog/foundation.agent-chat-workbench/1.2.0/assets/src/test/setup.ts +1 -0
- package/dist/catalog/foundation.agent-chat-workbench/1.2.0/assets/tooling/verify-bundle.mjs +4 -0
- package/dist/catalog/foundation.agent-chat-workbench/1.2.0/assets/tsconfig.build.json +1 -0
- package/dist/catalog/foundation.agent-chat-workbench/1.2.0/assets/tsconfig.json +1 -0
- package/dist/catalog/foundation.agent-chat-workbench/1.2.0/assets/vite.config.ts +4 -0
- package/dist/catalog/foundation.agent-chat-workbench/1.2.0/release.json +39 -0
- package/dist/catalog/foundation.agent-state-sqlite/1.0.0/assets/README.agent-state-sqlite.md +5 -0
- package/dist/catalog/foundation.agent-state-sqlite/1.0.0/assets/src/agent-state.test.ts +8 -0
- package/dist/catalog/foundation.agent-state-sqlite/1.0.0/assets/src/agent-state.ts +8 -0
- package/dist/catalog/foundation.agent-state-sqlite/1.0.0/release.json +34 -0
- package/dist/catalog/foundation.agent-state-sqlite/1.1.0/assets/README.agent-state-sqlite.md +5 -0
- package/dist/catalog/foundation.agent-state-sqlite/1.1.0/assets/src/agent-state.test.ts +8 -0
- package/dist/catalog/foundation.agent-state-sqlite/1.1.0/assets/src/agent-state.ts +8 -0
- package/dist/catalog/foundation.agent-state-sqlite/1.1.0/release.json +34 -0
- package/dist/catalog/foundation.agent-state-sqlite-registry-consumer/1.0.0/assets/README.agent-state-registry-consumer.md +5 -0
- package/dist/catalog/foundation.agent-state-sqlite-registry-consumer/1.0.0/release.json +38 -0
- package/dist/catalog/foundation.agent-state-sqlite-registry-consumer/1.1.0/assets/README.agent-state-registry-consumer.md +5 -0
- package/dist/catalog/foundation.agent-state-sqlite-registry-consumer/1.1.0/release.json +31 -0
- package/dist/catalog/foundation.agent-worker-skill-runtime/1.0.0/assets/README.agent-runtime.md +7 -0
- package/dist/catalog/foundation.agent-worker-skill-runtime/1.0.0/assets/src/agent-runtime.test.ts +19 -0
- package/dist/catalog/foundation.agent-worker-skill-runtime/1.0.0/assets/src/agent-runtime.ts +15 -0
- package/dist/catalog/foundation.agent-worker-skill-runtime/1.0.0/release.json +47 -0
- package/dist/catalog/foundation.ai-education-agent-example/1.0.0/assets/README.agent-example.md +5 -0
- package/dist/catalog/foundation.ai-education-agent-example/1.0.0/assets/app/agent-phase1/page.tsx +2 -0
- package/dist/catalog/foundation.ai-education-agent-example/1.0.0/assets/app/agent-phase1/workbench.test.tsx +5 -0
- package/dist/catalog/foundation.ai-education-agent-example/1.0.0/assets/app/agent-phase1/workbench.tsx +19 -0
- package/dist/catalog/foundation.ai-education-agent-example/1.0.0/release.json +21 -0
- package/dist/catalog/foundation.ai-education-agent-sqlite-example/1.0.0/assets/README.agent-sqlite-example.md +3 -0
- package/dist/catalog/foundation.ai-education-agent-sqlite-example/1.0.0/assets/app/agent-sqlite/contracts.ts +5 -0
- package/dist/catalog/foundation.ai-education-agent-sqlite-example/1.0.0/assets/app/agent-sqlite/page.tsx +3 -0
- package/dist/catalog/foundation.ai-education-agent-sqlite-example/1.0.0/assets/app/agent-sqlite/state.server.ts +7 -0
- package/dist/catalog/foundation.ai-education-agent-sqlite-example/1.0.0/assets/app/agent-sqlite/workbench.test.tsx +7 -0
- package/dist/catalog/foundation.ai-education-agent-sqlite-example/1.0.0/assets/app/agent-sqlite/workbench.tsx +9 -0
- package/dist/catalog/foundation.ai-education-agent-sqlite-example/1.0.0/release.json +30 -0
- package/dist/catalog/foundation.ai-education-agent-sqlite-example/1.1.0/assets/README.agent-stage5.md +3 -0
- package/dist/catalog/foundation.ai-education-agent-sqlite-example/1.1.0/assets/app/agent-stage5/contracts.ts +6 -0
- package/dist/catalog/foundation.ai-education-agent-sqlite-example/1.1.0/assets/app/agent-stage5/page.tsx +1 -0
- package/dist/catalog/foundation.ai-education-agent-sqlite-example/1.1.0/assets/app/agent-stage5/platform-proof.ts +8 -0
- package/dist/catalog/foundation.ai-education-agent-sqlite-example/1.1.0/assets/app/agent-stage5/state.server.ts +5 -0
- package/dist/catalog/foundation.ai-education-agent-sqlite-example/1.1.0/assets/app/agent-stage5/workbench.test.tsx +1 -0
- package/dist/catalog/foundation.ai-education-agent-sqlite-example/1.1.0/assets/app/agent-stage5/workbench.tsx +3 -0
- package/dist/catalog/foundation.ai-education-agent-sqlite-example/1.1.0/release.json +32 -0
- package/dist/catalog/foundation.ai-education-agent-sqlite-example/1.2.0/assets/README.education-agent-intake.md +3 -0
- package/dist/catalog/foundation.ai-education-agent-sqlite-example/1.2.0/assets/app/agent-intake/contracts.ts +8 -0
- package/dist/catalog/foundation.ai-education-agent-sqlite-example/1.2.0/assets/app/agent-intake/page.tsx +3 -0
- package/dist/catalog/foundation.ai-education-agent-sqlite-example/1.2.0/assets/app/agent-intake/platform-proof.ts +7 -0
- package/dist/catalog/foundation.ai-education-agent-sqlite-example/1.2.0/assets/app/agent-intake/state.server.ts +8 -0
- package/dist/catalog/foundation.ai-education-agent-sqlite-example/1.2.0/assets/app/agent-intake/workbench.test.tsx +7 -0
- package/dist/catalog/foundation.ai-education-agent-sqlite-example/1.2.0/assets/app/agent-intake/workbench.tsx +6 -0
- package/dist/catalog/foundation.ai-education-agent-sqlite-example/1.2.0/release.json +32 -0
- package/dist/catalog/foundation.ai-education-delegated-review-example/1.0.0/assets/README.ai-education-delegated-review.md +3 -0
- package/dist/catalog/foundation.ai-education-delegated-review-example/1.0.0/assets/app/ai-education-delegated-review/page.tsx +47 -0
- package/dist/catalog/foundation.ai-education-delegated-review-example/1.0.0/assets/src/delegated-review-fixture.test.ts +1 -0
- package/dist/catalog/foundation.ai-education-delegated-review-example/1.0.0/assets/src/delegated-review-fixture.ts +1 -0
- package/dist/catalog/foundation.ai-education-delegated-review-example/1.0.0/release.json +26 -0
- package/dist/catalog/foundation.ai-education-end-to-end-production-example/1.0.0/assets/README.ai-education-end-to-end-production.md +7 -0
- package/dist/catalog/foundation.ai-education-end-to-end-production-example/1.0.0/assets/app/ai-education-end-to-end-production/page.tsx +13 -0
- package/dist/catalog/foundation.ai-education-end-to-end-production-example/1.0.0/assets/src/education-production-lineage.test.ts +16 -0
- package/dist/catalog/foundation.ai-education-end-to-end-production-example/1.0.0/assets/src/education-production-lineage.ts +30 -0
- package/dist/catalog/foundation.ai-education-end-to-end-production-example/1.0.0/release.json +34 -0
- package/dist/catalog/foundation.ai-education-end-to-end-production-example/1.1.0/assets/README.ai-education-end-to-end-production.md +3 -0
- package/dist/catalog/foundation.ai-education-end-to-end-production-example/1.1.0/assets/app/ai-education-end-to-end-production/page.tsx +3 -0
- package/dist/catalog/foundation.ai-education-end-to-end-production-example/1.1.0/assets/src/education-production-lineage.test.ts +2 -0
- package/dist/catalog/foundation.ai-education-end-to-end-production-example/1.1.0/assets/src/education-production-lineage.ts +3 -0
- package/dist/catalog/foundation.ai-education-end-to-end-production-example/1.1.0/release.json +31 -0
- package/dist/catalog/foundation.ai-education-end-to-end-production-example/1.2.0/assets/README.ai-education-end-to-end-production.md +5 -0
- package/dist/catalog/foundation.ai-education-end-to-end-production-example/1.2.0/assets/app/ai-education-end-to-end-production/page.tsx +3 -0
- package/dist/catalog/foundation.ai-education-end-to-end-production-example/1.2.0/assets/src/education-production-lineage.test.ts +2 -0
- package/dist/catalog/foundation.ai-education-end-to-end-production-example/1.2.0/assets/src/education-production-lineage.ts +5 -0
- package/dist/catalog/foundation.ai-education-end-to-end-production-example/1.2.0/release.json +31 -0
- package/dist/catalog/foundation.ai-education-end-to-end-production-example/1.3.0/assets/README.ai-education-end-to-end-production.md +5 -0
- package/dist/catalog/foundation.ai-education-end-to-end-production-example/1.3.0/assets/app/ai-education-end-to-end-production/page.tsx +2 -0
- package/dist/catalog/foundation.ai-education-end-to-end-production-example/1.3.0/assets/src/education-production-journey.test.ts +2 -0
- package/dist/catalog/foundation.ai-education-end-to-end-production-example/1.3.0/assets/src/education-production-journey.ts +4 -0
- package/dist/catalog/foundation.ai-education-end-to-end-production-example/1.3.0/release.json +1 -0
- package/dist/catalog/foundation.ai-education-learning-media-authoring-example/1.0.0/assets/README.education-learning-media-authoring.md +3 -0
- package/dist/catalog/foundation.ai-education-learning-media-authoring-example/1.0.0/assets/app/education-learning-media-authoring/page.tsx +1 -0
- package/dist/catalog/foundation.ai-education-learning-media-authoring-example/1.0.0/assets/src/learning-media-fixture.test.ts +1 -0
- package/dist/catalog/foundation.ai-education-learning-media-authoring-example/1.0.0/assets/src/learning-media-fixture.ts +3 -0
- package/dist/catalog/foundation.ai-education-learning-media-authoring-example/1.0.0/release.json +26 -0
- package/dist/catalog/foundation.ai-education-picturebook-courseware-example/1.0.0/assets/README.ai-education-picturebook-courseware.md +5 -0
- package/dist/catalog/foundation.ai-education-picturebook-courseware-example/1.0.0/assets/app/ai-education-picturebook-courseware/page.tsx +1 -0
- package/dist/catalog/foundation.ai-education-picturebook-courseware-example/1.0.0/assets/src/picturebook-fixture.test.ts +1 -0
- package/dist/catalog/foundation.ai-education-picturebook-courseware-example/1.0.0/assets/src/picturebook-fixture.ts +4 -0
- package/dist/catalog/foundation.ai-education-picturebook-courseware-example/1.0.0/release.json +1 -0
- package/dist/catalog/foundation.ai-education-web-courseware-example/1.0.0/assets/README.ai-education-web-courseware.md +3 -0
- package/dist/catalog/foundation.ai-education-web-courseware-example/1.0.0/assets/app/ai-education-web-courseware/page.tsx +1 -0
- package/dist/catalog/foundation.ai-education-web-courseware-example/1.0.0/assets/src/courseware-fixture.test.ts +1 -0
- package/dist/catalog/foundation.ai-education-web-courseware-example/1.0.0/assets/src/courseware-fixture.ts +3 -0
- package/dist/catalog/foundation.ai-education-web-courseware-example/1.0.0/release.json +18 -0
- package/dist/catalog/foundation.ai-orchestration/1.0.0/assets/docs/engineering/ai-orchestration.md +3 -0
- package/dist/catalog/foundation.ai-orchestration/1.0.0/release.json +99 -0
- package/dist/catalog/foundation.api-contract-toolchain/1.0.0/assets/docs/engineering/api-contract.md +33 -0
- package/dist/catalog/foundation.api-contract-toolchain/1.0.0/assets/openapi-ts.config.ts +20 -0
- package/dist/catalog/foundation.api-contract-toolchain/1.0.0/assets/src/api/query-client.ts +29 -0
- package/dist/catalog/foundation.api-contract-toolchain/1.0.0/assets/src/api/runtime.ts +44 -0
- package/dist/catalog/foundation.api-contract-toolchain/1.0.0/release.json +122 -0
- package/dist/catalog/foundation.application-config-binding/1.0.0/assets/.dyyto/application-config-binding.json +4 -0
- package/dist/catalog/foundation.application-config-binding/1.0.0/assets/docs/engineering/application-config-binding.md +5 -0
- package/dist/catalog/foundation.application-config-binding/1.0.0/release.json +28 -0
- package/dist/catalog/foundation.artifact-delivery/1.0.0/assets/docs/engineering/artifact-delivery.md +3 -0
- package/dist/catalog/foundation.artifact-delivery/1.0.0/release.json +75 -0
- package/dist/catalog/foundation.artifact-runtime/1.0.0/assets/docs/engineering/artifact-runtime.md +3 -0
- package/dist/catalog/foundation.artifact-runtime/1.0.0/release.json +87 -0
- package/dist/catalog/foundation.capability-family-routing/1.0.0/assets/README.capability-family-routing.md +7 -0
- package/dist/catalog/foundation.capability-family-routing/1.0.0/assets/src/capability-family-routing.test.ts +10 -0
- package/dist/catalog/foundation.capability-family-routing/1.0.0/release.json +35 -0
- package/dist/catalog/foundation.environment-schema/1.0.0/assets/docs/engineering/environment.md +37 -0
- package/dist/catalog/foundation.environment-schema/1.0.0/assets/src/environment.ts +30 -0
- package/dist/catalog/foundation.environment-schema/1.0.0/release.json +75 -0
- package/dist/catalog/foundation.environment-schema/1.1.0/assets/.env.example +1 -0
- package/dist/catalog/foundation.environment-schema/1.1.0/assets/docs/engineering/environment.md +9 -0
- package/dist/catalog/foundation.environment-schema/1.1.0/release.json +25 -0
- package/dist/catalog/foundation.environment-schema/2.0.0/assets/config/application-config.json +4 -0
- package/dist/catalog/foundation.environment-schema/2.0.0/assets/docs/engineering/environment.md +33 -0
- package/dist/catalog/foundation.environment-schema/2.0.0/release.json +63 -0
- package/dist/catalog/foundation.managed-project-control/1.0.0/assets/docs/engineering/project-control.md +24 -0
- package/dist/catalog/foundation.managed-project-control/1.0.0/release.json +34 -0
- package/dist/catalog/foundation.managed-project-control/1.1.0/assets/docs/engineering/project-control.md +15 -0
- package/dist/catalog/foundation.managed-project-control/1.1.0/release.json +27 -0
- package/dist/catalog/foundation.managed-project-control/1.2.0/assets/docs/engineering/project-control.md +15 -0
- package/dist/catalog/foundation.managed-project-control/1.2.0/release.json +27 -0
- package/dist/catalog/foundation.managed-project-control/1.3.0/assets/docs/engineering/project-control.md +14 -0
- package/dist/catalog/foundation.managed-project-control/1.3.0/release.json +27 -0
- package/dist/catalog/foundation.media-production-infrastructure/1.0.0/assets/docs/engineering/media-production-infrastructure.md +3 -0
- package/dist/catalog/foundation.media-production-infrastructure/1.0.0/release.json +99 -0
- package/dist/catalog/foundation.nextjs-full-stack-application/1.0.0/assets/AGENTS.md +8 -0
- package/dist/catalog/foundation.nextjs-full-stack-application/1.0.0/assets/README.md +12 -0
- package/dist/catalog/foundation.nextjs-full-stack-application/1.0.0/assets/app/api/health/route.test.ts +9 -0
- package/dist/catalog/foundation.nextjs-full-stack-application/1.0.0/assets/app/api/health/route.ts +5 -0
- package/dist/catalog/foundation.nextjs-full-stack-application/1.0.0/assets/app/components/Counter.test.tsx +12 -0
- package/dist/catalog/foundation.nextjs-full-stack-application/1.0.0/assets/app/components/Counter.tsx +13 -0
- package/dist/catalog/foundation.nextjs-full-stack-application/1.0.0/assets/app/globals.css +20 -0
- package/dist/catalog/foundation.nextjs-full-stack-application/1.0.0/assets/app/layout.tsx +12 -0
- package/dist/catalog/foundation.nextjs-full-stack-application/1.0.0/assets/app/page.test.tsx +11 -0
- package/dist/catalog/foundation.nextjs-full-stack-application/1.0.0/assets/app/page.tsx +19 -0
- package/dist/catalog/foundation.nextjs-full-stack-application/1.0.0/assets/e2e/home.spec.ts +15 -0
- package/dist/catalog/foundation.nextjs-full-stack-application/1.0.0/assets/eslint.config.mjs +7 -0
- package/dist/catalog/foundation.nextjs-full-stack-application/1.0.0/assets/next-env.d.ts +6 -0
- package/dist/catalog/foundation.nextjs-full-stack-application/1.0.0/assets/next.config.ts +9 -0
- package/dist/catalog/foundation.nextjs-full-stack-application/1.0.0/assets/package.json +4 -0
- package/dist/catalog/foundation.nextjs-full-stack-application/1.0.0/assets/playwright.config.ts +16 -0
- package/dist/catalog/foundation.nextjs-full-stack-application/1.0.0/assets/pnpm-workspace.yaml +4 -0
- package/dist/catalog/foundation.nextjs-full-stack-application/1.0.0/assets/public/.gitkeep +1 -0
- package/dist/catalog/foundation.nextjs-full-stack-application/1.0.0/assets/src/test/setup.ts +1 -0
- package/dist/catalog/foundation.nextjs-full-stack-application/1.0.0/assets/tooling/package-standalone.mjs +15 -0
- package/dist/catalog/foundation.nextjs-full-stack-application/1.0.0/assets/tooling/verify-standalone.mjs +20 -0
- package/dist/catalog/foundation.nextjs-full-stack-application/1.0.0/assets/tsconfig.json +42 -0
- package/dist/catalog/foundation.nextjs-full-stack-application/1.0.0/assets/vitest.config.mts +12 -0
- package/dist/catalog/foundation.nextjs-full-stack-application/1.0.0/release.json +42 -0
- package/dist/catalog/foundation.nextjs-full-stack-application/1.1.0/assets/package.json +4 -0
- package/dist/catalog/foundation.nextjs-full-stack-application/1.1.0/release.json +21 -0
- package/dist/catalog/foundation.package-source-fixture/1.0.0/assets/README.runtime.md +1 -0
- package/dist/catalog/foundation.package-source-fixture/1.0.0/release.json +16 -0
- package/dist/catalog/foundation.page-authoring/1.0.0/assets/docs/engineering/page-authoring.md +27 -0
- package/dist/catalog/foundation.page-authoring/1.0.0/assets/src/page-authoring/csr-entry.tsx +6 -0
- package/dist/catalog/foundation.page-authoring/1.0.0/assets/src/page-authoring/load-document.ts +11 -0
- package/dist/catalog/foundation.page-authoring/1.0.0/assets/src/page-authoring/pages/about.json +26 -0
- package/dist/catalog/foundation.page-authoring/1.0.0/assets/src/page-authoring/pages/home.json +26 -0
- package/dist/catalog/foundation.page-authoring/1.0.0/assets/src/page-authoring/project.json +38 -0
- package/dist/catalog/foundation.page-authoring/1.0.0/release.json +146 -0
- package/dist/catalog/foundation.pro-search-table-page/1.0.0/assets/docs/engineering/pro-search-table.md +20 -0
- package/dist/catalog/foundation.pro-search-table-page/1.0.0/assets/search/operations-page.tsx +66 -0
- package/dist/catalog/foundation.pro-search-table-page/1.0.0/assets/search/search-main.tsx +15 -0
- package/dist/catalog/foundation.pro-search-table-page/1.0.0/assets/search.html +13 -0
- package/dist/catalog/foundation.pro-search-table-page/1.0.0/release.json +119 -0
- package/dist/catalog/foundation.pro-search-table-page/2.0.0/assets/docs/engineering/pro-search-table.md +20 -0
- package/dist/catalog/foundation.pro-search-table-page/2.0.0/assets/search/operations-page.tsx +66 -0
- package/dist/catalog/foundation.pro-search-table-page/2.0.0/assets/search/search-main.tsx +15 -0
- package/dist/catalog/foundation.pro-search-table-page/2.0.0/assets/search.html +13 -0
- package/dist/catalog/foundation.pro-search-table-page/2.0.0/release.json +153 -0
- package/dist/catalog/foundation.product-interaction-feedback/1.0.0/assets/docs/engineering/product-interaction-feedback.md +10 -0
- package/dist/catalog/foundation.product-interaction-feedback/1.0.0/release.json +68 -0
- package/dist/catalog/foundation.production-orchestration-contracts/1.0.0/assets/README.production-orchestration.md +3 -0
- package/dist/catalog/foundation.production-orchestration-contracts/1.0.0/assets/src/production-orchestration.test.ts +8 -0
- package/dist/catalog/foundation.production-orchestration-contracts/1.0.0/assets/src/production-orchestration.ts +7 -0
- package/dist/catalog/foundation.production-orchestration-contracts/1.0.0/release.json +33 -0
- package/dist/catalog/foundation.production-orchestration-contracts/1.1.0/assets/README.production-orchestration.md +3 -0
- package/dist/catalog/foundation.production-orchestration-contracts/1.1.0/assets/src/production-orchestration.test.ts +11 -0
- package/dist/catalog/foundation.production-orchestration-contracts/1.1.0/assets/src/production-orchestration.ts +4 -0
- package/dist/catalog/foundation.production-orchestration-contracts/1.1.0/release.json +29 -0
- package/dist/catalog/foundation.production-orchestration-registry-consumer/1.1.0/assets/README.production-orchestration-registry.md +5 -0
- package/dist/catalog/foundation.production-orchestration-registry-consumer/1.1.0/release.json +33 -0
- package/dist/catalog/foundation.production-orchestration-registry-consumer/1.2.0/assets/README.production-orchestration-registry.md +3 -0
- package/dist/catalog/foundation.production-orchestration-registry-consumer/1.2.0/release.json +33 -0
- package/dist/catalog/foundation.production-workbench/1.0.0/assets/docs/engineering/production-workbench.md +3 -0
- package/dist/catalog/foundation.production-workbench/1.0.0/release.json +74 -0
- package/dist/catalog/foundation.project-documentation/1.0.0/assets/docs/engineering/README.md +13 -0
- package/dist/catalog/foundation.project-documentation/1.0.0/release.json +37 -0
- package/dist/catalog/foundation.project-maintenance/1.0.0/assets/docs/engineering/README.md +5 -0
- package/dist/catalog/foundation.project-maintenance/1.0.0/release.json +39 -0
- package/dist/catalog/foundation.project-maintenance-console/1.0.0/assets/docs/engineering/project-maintenance-console.md +7 -0
- package/dist/catalog/foundation.project-maintenance-console/1.0.0/release.json +27 -0
- package/dist/catalog/foundation.react-component-library/1.0.0/assets/package.json +1 -0
- package/dist/catalog/foundation.react-component-library/1.0.0/assets/pnpm-workspace.yaml +1 -0
- package/dist/catalog/foundation.react-component-library/1.0.0/assets/src/Button.test.tsx +12 -0
- package/dist/catalog/foundation.react-component-library/1.0.0/assets/src/Button.tsx +8 -0
- package/dist/catalog/foundation.react-component-library/1.0.0/assets/src/index.ts +1 -0
- package/dist/catalog/foundation.react-component-library/1.0.0/assets/src/style.css +14 -0
- package/dist/catalog/foundation.react-component-library/1.0.0/assets/src/styles.d.ts +1 -0
- package/dist/catalog/foundation.react-component-library/1.0.0/assets/src/test/setup.ts +1 -0
- package/dist/catalog/foundation.react-component-library/1.0.0/assets/tooling/verify-bundle.mjs +7 -0
- package/dist/catalog/foundation.react-component-library/1.0.0/assets/tsconfig.build.json +11 -0
- package/dist/catalog/foundation.react-component-library/1.0.0/assets/tsconfig.json +14 -0
- package/dist/catalog/foundation.react-component-library/1.0.0/assets/vite.config.ts +12 -0
- package/dist/catalog/foundation.react-component-library/1.0.0/release.json +30 -0
- package/dist/catalog/foundation.react-component-library/1.1.0/assets/package.json +1 -0
- package/dist/catalog/foundation.react-component-library/1.1.0/assets/pnpm-lock.yaml +1327 -0
- package/dist/catalog/foundation.react-component-library/1.1.0/assets/pnpm-workspace.yaml +5 -0
- package/dist/catalog/foundation.react-component-library/1.1.0/assets/src/Button.test.tsx +12 -0
- package/dist/catalog/foundation.react-component-library/1.1.0/assets/src/Button.tsx +8 -0
- package/dist/catalog/foundation.react-component-library/1.1.0/assets/src/index.ts +1 -0
- package/dist/catalog/foundation.react-component-library/1.1.0/assets/src/style.css +14 -0
- package/dist/catalog/foundation.react-component-library/1.1.0/assets/src/styles.d.ts +1 -0
- package/dist/catalog/foundation.react-component-library/1.1.0/assets/src/test/setup.ts +1 -0
- package/dist/catalog/foundation.react-component-library/1.1.0/assets/tooling/verify-bundle.mjs +7 -0
- package/dist/catalog/foundation.react-component-library/1.1.0/assets/tsconfig.build.json +11 -0
- package/dist/catalog/foundation.react-component-library/1.1.0/assets/tsconfig.json +14 -0
- package/dist/catalog/foundation.react-component-library/1.1.0/assets/vite.config.ts +12 -0
- package/dist/catalog/foundation.react-component-library/1.1.0/release.json +125 -0
- package/dist/catalog/foundation.standalone-npm-package/1.1.0/assets/package.json +4 -0
- package/dist/catalog/foundation.standalone-npm-package/1.1.0/assets/pnpm-workspace.yaml +1 -0
- package/dist/catalog/foundation.standalone-npm-package/1.1.0/assets/src/index.test.ts +8 -0
- package/dist/catalog/foundation.standalone-npm-package/1.1.0/assets/src/index.ts +3 -0
- package/dist/catalog/foundation.standalone-npm-package/1.1.0/assets/tsconfig.build.json +12 -0
- package/dist/catalog/foundation.standalone-npm-package/1.1.0/assets/tsconfig.json +14 -0
- package/dist/catalog/foundation.standalone-npm-package/1.1.0/release.json +29 -0
- package/dist/catalog/foundation.standalone-npm-package/1.2.0/assets/package.json +4 -0
- package/dist/catalog/foundation.standalone-npm-package/1.2.0/assets/pnpm-lock.yaml +727 -0
- package/dist/catalog/foundation.standalone-npm-package/1.2.0/assets/pnpm-workspace.yaml +5 -0
- package/dist/catalog/foundation.standalone-npm-package/1.2.0/assets/src/index.test.ts +8 -0
- package/dist/catalog/foundation.standalone-npm-package/1.2.0/assets/src/index.ts +3 -0
- package/dist/catalog/foundation.standalone-npm-package/1.2.0/assets/tsconfig.build.json +12 -0
- package/dist/catalog/foundation.standalone-npm-package/1.2.0/assets/tsconfig.json +14 -0
- package/dist/catalog/foundation.standalone-npm-package/1.2.0/release.json +82 -0
- package/dist/catalog/foundation.structured-knowledge-runtime/1.0.0/assets/README.structured-knowledge.md +3 -0
- package/dist/catalog/foundation.structured-knowledge-runtime/1.0.0/assets/src/structured-knowledge.test.ts +8 -0
- package/dist/catalog/foundation.structured-knowledge-runtime/1.0.0/assets/src/structured-knowledge.ts +8 -0
- package/dist/catalog/foundation.structured-knowledge-runtime/1.0.0/release.json +37 -0
- package/dist/catalog/foundation.visual-presentation-composition/1.0.0/assets/README.visual-presentation.md +3 -0
- package/dist/catalog/foundation.visual-presentation-composition/1.0.0/assets/app/visual-presentation/page.tsx +48 -0
- package/dist/catalog/foundation.visual-presentation-composition/1.0.0/assets/src/visual-presentation.test.ts +1 -0
- package/dist/catalog/foundation.visual-presentation-composition/1.0.0/assets/src/visual-presentation.ts +2 -0
- package/dist/catalog/foundation.visual-presentation-composition/1.0.0/release.json +26 -0
- package/dist/catalog/foundation.workspace-expo-application/1.0.0/assets/__dyyto_dotfiles__/gitignore +13 -0
- package/dist/catalog/foundation.workspace-expo-application/1.0.0/assets/app/_layout.tsx +5 -0
- package/dist/catalog/foundation.workspace-expo-application/1.0.0/assets/app/index.tsx +25 -0
- package/dist/catalog/foundation.workspace-expo-application/1.0.0/assets/app.json +14 -0
- package/dist/catalog/foundation.workspace-expo-application/1.0.0/assets/expo-env.d.ts +3 -0
- package/dist/catalog/foundation.workspace-expo-application/1.0.0/assets/package.json +4 -0
- package/dist/catalog/foundation.workspace-expo-application/1.0.0/assets/src/app-config.test.ts +10 -0
- package/dist/catalog/foundation.workspace-expo-application/1.0.0/assets/tooling/verify-expo-export.mjs +5 -0
- package/dist/catalog/foundation.workspace-expo-application/1.0.0/assets/tsconfig.json +10 -0
- package/dist/catalog/foundation.workspace-expo-application/1.0.0/assets/vitest.config.mts +5 -0
- package/dist/catalog/foundation.workspace-expo-application/1.0.0/release.json +42 -0
- package/dist/catalog/foundation.workspace-node-application/1.1.0/assets/package.json +4 -0
- package/dist/catalog/foundation.workspace-node-application/1.1.0/assets/src/app.test.ts +21 -0
- package/dist/catalog/foundation.workspace-node-application/1.1.0/assets/src/app.ts +14 -0
- package/dist/catalog/foundation.workspace-node-application/1.1.0/assets/src/index.test.ts +14 -0
- package/dist/catalog/foundation.workspace-node-application/1.1.0/assets/src/index.ts +53 -0
- package/dist/catalog/foundation.workspace-node-application/1.1.0/assets/tsconfig.build.json +12 -0
- package/dist/catalog/foundation.workspace-node-application/1.1.0/assets/tsconfig.json +7 -0
- package/dist/catalog/foundation.workspace-node-application/1.1.0/release.json +19 -0
- package/dist/catalog/foundation.workspace-npm-package/1.1.0/assets/package.json +4 -0
- package/dist/catalog/foundation.workspace-npm-package/1.1.0/assets/src/index.test.ts +8 -0
- package/dist/catalog/foundation.workspace-npm-package/1.1.0/assets/src/index.ts +3 -0
- package/dist/catalog/foundation.workspace-npm-package/1.1.0/assets/tsconfig.build.json +12 -0
- package/dist/catalog/foundation.workspace-npm-package/1.1.0/assets/tsconfig.json +7 -0
- package/dist/catalog/foundation.workspace-npm-package/1.1.0/release.json +17 -0
- package/dist/catalog/foundation.workspace-npm-package/1.2.0/assets/package.json +4 -0
- package/dist/catalog/foundation.workspace-npm-package/1.2.0/assets/src/index.test.ts +8 -0
- package/dist/catalog/foundation.workspace-npm-package/1.2.0/assets/src/index.ts +3 -0
- package/dist/catalog/foundation.workspace-npm-package/1.2.0/assets/tsconfig.build.json +12 -0
- package/dist/catalog/foundation.workspace-npm-package/1.2.0/assets/tsconfig.json +7 -0
- package/dist/catalog/foundation.workspace-npm-package/1.2.0/release.json +17 -0
- package/dist/catalog/foundation.workspace-react-component-library/1.0.0/assets/package.json +1 -0
- package/dist/catalog/foundation.workspace-react-component-library/1.0.0/assets/src/Button.test.tsx +12 -0
- package/dist/catalog/foundation.workspace-react-component-library/1.0.0/assets/src/Button.tsx +8 -0
- package/dist/catalog/foundation.workspace-react-component-library/1.0.0/assets/src/index.ts +1 -0
- package/dist/catalog/foundation.workspace-react-component-library/1.0.0/assets/src/style.css +14 -0
- package/dist/catalog/foundation.workspace-react-component-library/1.0.0/assets/src/styles.d.ts +1 -0
- package/dist/catalog/foundation.workspace-react-component-library/1.0.0/assets/src/test/setup.ts +1 -0
- package/dist/catalog/foundation.workspace-react-component-library/1.0.0/assets/tooling/verify-bundle.mjs +7 -0
- package/dist/catalog/foundation.workspace-react-component-library/1.0.0/assets/tsconfig.build.json +11 -0
- package/dist/catalog/foundation.workspace-react-component-library/1.0.0/assets/tsconfig.json +14 -0
- package/dist/catalog/foundation.workspace-react-component-library/1.0.0/assets/vite.config.ts +12 -0
- package/dist/catalog/foundation.workspace-react-component-library/1.0.0/release.json +24 -0
- package/dist/catalog/foundation.workspace-react-component-library/1.1.0/assets/package.json +1 -0
- package/dist/catalog/foundation.workspace-react-component-library/1.1.0/assets/src/Button.test.tsx +12 -0
- package/dist/catalog/foundation.workspace-react-component-library/1.1.0/assets/src/Button.tsx +8 -0
- package/dist/catalog/foundation.workspace-react-component-library/1.1.0/assets/src/index.ts +1 -0
- package/dist/catalog/foundation.workspace-react-component-library/1.1.0/assets/src/style.css +14 -0
- package/dist/catalog/foundation.workspace-react-component-library/1.1.0/assets/src/styles.d.ts +1 -0
- package/dist/catalog/foundation.workspace-react-component-library/1.1.0/assets/src/test/setup.ts +1 -0
- package/dist/catalog/foundation.workspace-react-component-library/1.1.0/assets/tooling/verify-bundle.mjs +7 -0
- package/dist/catalog/foundation.workspace-react-component-library/1.1.0/assets/tsconfig.build.json +11 -0
- package/dist/catalog/foundation.workspace-react-component-library/1.1.0/assets/tsconfig.json +14 -0
- package/dist/catalog/foundation.workspace-react-component-library/1.1.0/assets/vite.config.ts +12 -0
- package/dist/catalog/foundation.workspace-react-component-library/1.1.0/release.json +38 -0
- package/dist/catalog/foundation.workspace-react-component-library/1.2.0/assets/package.json +1 -0
- package/dist/catalog/foundation.workspace-react-component-library/1.2.0/assets/src/Button.test.tsx +12 -0
- package/dist/catalog/foundation.workspace-react-component-library/1.2.0/assets/src/Button.tsx +8 -0
- package/dist/catalog/foundation.workspace-react-component-library/1.2.0/assets/src/index.ts +1 -0
- package/dist/catalog/foundation.workspace-react-component-library/1.2.0/assets/src/style.css +14 -0
- package/dist/catalog/foundation.workspace-react-component-library/1.2.0/assets/src/styles.d.ts +1 -0
- package/dist/catalog/foundation.workspace-react-component-library/1.2.0/assets/src/test/setup.ts +1 -0
- package/dist/catalog/foundation.workspace-react-component-library/1.2.0/assets/tooling/package-externals.d.mts +8 -0
- package/dist/catalog/foundation.workspace-react-component-library/1.2.0/assets/tooling/package-externals.mjs +16 -0
- package/dist/catalog/foundation.workspace-react-component-library/1.2.0/assets/tooling/verify-bundle.mjs +30 -0
- package/dist/catalog/foundation.workspace-react-component-library/1.2.0/assets/tsconfig.build.json +11 -0
- package/dist/catalog/foundation.workspace-react-component-library/1.2.0/assets/tsconfig.json +14 -0
- package/dist/catalog/foundation.workspace-react-component-library/1.2.0/assets/vite.config.ts +15 -0
- package/dist/catalog/foundation.workspace-react-component-library/1.2.0/release.json +40 -0
- package/dist/catalog/foundation.workspace-root/1.2.0/assets/apps/README.md +3 -0
- package/dist/catalog/foundation.workspace-root/1.2.0/assets/package.json +13 -0
- package/dist/catalog/foundation.workspace-root/1.2.0/assets/packages/README.md +3 -0
- package/dist/catalog/foundation.workspace-root/1.2.0/assets/pnpm-workspace.yaml +3 -0
- package/dist/catalog/foundation.workspace-root/1.2.0/assets/tsconfig.base.json +12 -0
- package/dist/catalog/foundation.workspace-root/1.2.0/release.json +17 -0
- package/dist/catalog/foundation.workspace-root/1.3.0/assets/apps/README.md +3 -0
- package/dist/catalog/foundation.workspace-root/1.3.0/assets/package.json +13 -0
- package/dist/catalog/foundation.workspace-root/1.3.0/assets/packages/README.md +3 -0
- package/dist/catalog/foundation.workspace-root/1.3.0/assets/pnpm-workspace.yaml +4 -0
- package/dist/catalog/foundation.workspace-root/1.3.0/assets/services/README.md +3 -0
- package/dist/catalog/foundation.workspace-root/1.3.0/assets/tsconfig.base.json +12 -0
- package/dist/catalog/foundation.workspace-root/1.3.0/release.json +18 -0
- package/dist/catalog/foundation.workspace-root/1.4.0/assets/apps/README.md +3 -0
- package/dist/catalog/foundation.workspace-root/1.4.0/assets/package.json +15 -0
- package/dist/catalog/foundation.workspace-root/1.4.0/assets/packages/README.md +3 -0
- package/dist/catalog/foundation.workspace-root/1.4.0/assets/pnpm-workspace.yaml +4 -0
- package/dist/catalog/foundation.workspace-root/1.4.0/assets/services/README.md +3 -0
- package/dist/catalog/foundation.workspace-root/1.4.0/assets/tsconfig.base.json +8 -0
- package/dist/catalog/foundation.workspace-root/1.4.0/release.json +18 -0
- package/dist/catalog/foundation.workspace-root/1.5.0/assets/apps/README.md +3 -0
- package/dist/catalog/foundation.workspace-root/1.5.0/assets/package.json +15 -0
- package/dist/catalog/foundation.workspace-root/1.5.0/assets/packages/README.md +3 -0
- package/dist/catalog/foundation.workspace-root/1.5.0/assets/pnpm-workspace.yaml +4 -0
- package/dist/catalog/foundation.workspace-root/1.5.0/assets/services/README.md +3 -0
- package/dist/catalog/foundation.workspace-root/1.5.0/assets/tsconfig.base.json +8 -0
- package/dist/catalog/foundation.workspace-root/1.5.0/release.json +18 -0
- package/dist/chunk.js +49 -0
- package/dist/cli.js +10 -12026
- package/dist/contracts/dyyto-package-release-catalog.schema.json +36 -0
- package/dist/optional-runtime.js +47 -0
- package/dist/package-releases/aipt--cli/0.1.0/release.json +29 -0
- package/dist/package-releases/aipt--cli/0.1.1/release.json +29 -0
- package/dist/package-releases/aipt--cli/0.1.10/release.json +29 -0
- package/dist/package-releases/aipt--cli/0.1.11/release.json +29 -0
- package/dist/package-releases/aipt--cli/0.1.12/release.json +29 -0
- package/dist/package-releases/aipt--cli/0.1.13/release.json +29 -0
- package/dist/package-releases/aipt--cli/0.1.14/release.json +29 -0
- package/dist/package-releases/aipt--cli/0.1.2/release.json +29 -0
- package/dist/package-releases/aipt--cli/0.1.3/release.json +29 -0
- package/dist/package-releases/aipt--cli/0.1.4/release.json +29 -0
- package/dist/package-releases/aipt--cli/0.1.5/release.json +29 -0
- package/dist/package-releases/aipt--cli/0.1.6/release.json +29 -0
- package/dist/package-releases/aipt--cli/0.1.7/release.json +29 -0
- package/dist/package-releases/aipt--cli/0.1.8/release.json +29 -0
- package/dist/package-releases/aipt--cli/0.1.9/release.json +29 -0
- package/dist/package-releases/aipt--platform-kernel/0.1.0/release.json +33 -0
- package/dist/package-releases/aipt--platform-kernel/0.1.1/release.json +33 -0
- package/dist/package-releases/aipt--platform-kernel/0.1.2/release.json +33 -0
- package/dist/package-releases/aipt--platform-kernel/0.1.3/release.json +33 -0
- package/dist/package-releases/aipt--platform-kernel/0.1.4/release.json +33 -0
- package/dist/package-releases/aipt--platform-kernel/0.1.5/release.json +33 -0
- package/dist/package-releases/aipt--platform-kernel/0.1.6/release.json +33 -0
- package/dist/recipes/ai-education-agent-phase1/1.0.0/recipe.json +18 -0
- package/dist/recipes/ai-education-agent-sqlite/1.0.0/recipe.json +20 -0
- package/dist/recipes/ai-education-agent-sqlite/1.1.0/recipe.json +20 -0
- package/dist/recipes/ai-education-delegated-review/1.0.0/recipe.json +14 -0
- package/dist/recipes/ai-education-end-to-end-production/1.0.0/recipe.json +22 -0
- package/dist/recipes/ai-education-end-to-end-production/1.1.0/recipe.json +22 -0
- package/dist/recipes/ai-education-end-to-end-production/1.2.0/recipe.json +22 -0
- package/dist/recipes/ai-education-end-to-end-production/1.3.0/recipe.json +1 -0
- package/dist/recipes/ai-education-picturebook-courseware/1.0.0/recipe.json +1 -0
- package/dist/recipes/ai-education-web-courseware/1.0.0/recipe.json +1 -0
- package/dist/recipes/capability-family-routing/1.0.0/recipe.json +14 -0
- package/dist/recipes/education-agent-intake/1.0.0/recipe.json +20 -0
- package/dist/recipes/education-knowledge-skill/1.0.0/recipe.json +14 -0
- package/dist/recipes/education-learning-media-authoring/1.0.0/recipe.json +22 -0
- package/dist/recipes/education-picturebook-courseware-authoring/1.0.0/recipe.json +38 -0
- package/dist/recipes/education-web-courseware-authoring/1.0.0/recipe.json +38 -0
- package/dist/recipes/generic-agent-chat/1.0.0/recipe.json +17 -0
- package/dist/recipes/visual-presentation-composition/1.0.0/recipe.json +14 -0
- package/dist/templates/template.expo-react-native-application/1.0.0/template.json +23 -0
- package/dist/templates/template.nextjs-full-stack-application/1.0.0/template.json +23 -0
- package/dist/templates/template.node-api-application/1.0.0/template.json +20 -0
- package/dist/templates/template.react-component-library/1.0.0/template.json +29 -0
- package/dist/templates/template.react-component-library/1.1.0/template.json +122 -0
- package/dist/templates/template.typescript-library/1.0.0/template.json +27 -0
- package/dist/templates/template.typescript-library/1.1.0/template.json +104 -0
- package/dist/templates/template.web-frontend-application/1.0.0/template.json +26 -0
- package/dist/templates/template.workspace-npm-package/1.0.0/template.json +31 -0
- package/dist/templates/template.workspace-react-component-library/1.0.0/template.json +33 -0
- package/dist/templates/template.workspace-react-component-library/1.1.0/template.json +33 -0
- package/dist/templates/template.workspace-react-component-library/1.2.0/template.json +33 -0
- package/dist/templates/template.workspace-root/1.0.0/template.json +23 -0
- package/dist/templates/template.workspace-root/1.1.0/template.json +23 -0
- package/dist/templates/template.workspace-root/1.2.0/template.json +19 -0
- package/package.json +34 -4
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": 2,
|
|
3
|
+
"capabilityId": "foundation.agent-state-sqlite",
|
|
4
|
+
"version": "1.0.0",
|
|
5
|
+
"consumerProfile": "any-project",
|
|
6
|
+
"kind": "engineering-feature",
|
|
7
|
+
"dependencies": { "profiles": ["nextjs-full-stack-application"], "capabilities": ["foundation.agent-worker-skill-runtime"] },
|
|
8
|
+
"compatibility": { "node": ">=24.18.0 <25", "pnpm": "11.21.0", "typescript": "6.0.3" },
|
|
9
|
+
"integration": {
|
|
10
|
+
"title": "Agent SQLite 本地事务仓储",
|
|
11
|
+
"purpose": "通过公共事务 Port 为本地 Agent 开发提供 SQLite 状态仓储。",
|
|
12
|
+
"packages": [
|
|
13
|
+
{ "packageName": "@aipt/agent-state-repository", "version": "0.1.0", "usage": "runtime", "imports": [{ "importFrom": "@aipt/agent-state-repository/sqlite", "symbol": "SqliteAgentStateRepository", "referencePath": "src/agent-state.ts" }] },
|
|
14
|
+
{ "packageName": "@aipt/agent-run-kernel", "version": "0.2.0", "usage": "runtime", "imports": [] },
|
|
15
|
+
{ "packageName": "@aipt/agent-runtime-contracts", "version": "0.3.0", "usage": "runtime", "imports": [] },
|
|
16
|
+
{ "packageName": "@aipt/environment", "version": "0.1.0", "usage": "runtime", "imports": [] }
|
|
17
|
+
],
|
|
18
|
+
"codeAssets": [
|
|
19
|
+
{ "sourcePath": "assets/src/agent-state.ts", "targetPath": "src/agent-state.ts", "ownership": "owned-file" },
|
|
20
|
+
{ "sourcePath": "assets/src/agent-state.test.ts", "targetPath": "src/agent-state.test.ts", "ownership": "owned-file" },
|
|
21
|
+
{ "sourcePath": "assets/README.agent-state-sqlite.md", "targetPath": "README.agent-state-sqlite.md", "ownership": "owned-file" }
|
|
22
|
+
]
|
|
23
|
+
},
|
|
24
|
+
"assets": [
|
|
25
|
+
{ "path": "README.agent-state-sqlite.md", "ownership": "owned-file", "digest": "sha256:920509b3e5d8d193837a38f57e5c707f4c10de6ba6117db265bc5d9e81ae965f", "mode": 420 },
|
|
26
|
+
{ "path": "src/agent-state.test.ts", "ownership": "owned-file", "digest": "sha256:df0b6619cce268f35b29f786019e90cb2083d2c7dda5b889c990f4f0a73899a1", "mode": 420 },
|
|
27
|
+
{ "path": "src/agent-state.ts", "ownership": "owned-file", "digest": "sha256:00128c3ede5c6048a1b7261837de1ad5e4740d5f844cc3888f589acb48d91301", "mode": 420 }
|
|
28
|
+
],
|
|
29
|
+
"verifiers": [{ "id": "capability.assets" }, { "id": "typescript.typecheck" }, { "id": "vitest.run" }],
|
|
30
|
+
"exit": { "ownedAssets": ["README.agent-state-sqlite.md", "src/agent-state.test.ts", "src/agent-state.ts"] },
|
|
31
|
+
"availability": { "maturity": "candidate", "visibility": "maintainers-only", "sourceState": "local-artifact" },
|
|
32
|
+
"packageSources": [],
|
|
33
|
+
"integrity": "sha256:7eeb8aadcc35574d74847f64dc7acb825044c9a98b4d1a87316104cfebbf6b29"
|
|
34
|
+
}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
# Agent SQLite 本地事务仓储
|
|
2
|
+
|
|
3
|
+
该 Capability 是 development candidate,只用于本地开发、PoC、fixture 与正式脚手架。它通过 `@aipt/agent-run-kernel` 的公共 Port 创建 SQLite Adapter,不改变 Agent Chat 协议,也不代表 PostgreSQL 或 production available。
|
|
4
|
+
|
|
5
|
+
环境合同只包含 `DYYTO_AGENT_STATE_ADAPTER=sqlite` 与 `DYYTO_AGENT_STATE_SQLITE_PATH=.data/agent-state.sqlite`。业务代码不得直接导入 `node:sqlite`。
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { mkdtemp, rm } from "node:fs/promises";
|
|
2
|
+
import { tmpdir } from "node:os";
|
|
3
|
+
import path from "node:path";
|
|
4
|
+
import { describe, expect, it } from "vitest";
|
|
5
|
+
import { runDigest } from "@aipt/agent-run-kernel";
|
|
6
|
+
import { createLocalAgentState } from "./agent-state";
|
|
7
|
+
|
|
8
|
+
describe("Agent SQLite 本地状态", () => { it("使用正式环境合同并在重开后保留 revision", async () => { const root = await mkdtemp(path.join(tmpdir(), "agent-state-example-")); const first = createLocalAgentState({ projectRoot: root, environment: {} }); const scope = { tenantId: "tenant-example", projectId: "project-example", userId: "teacher-example" }; await first.transact({ schemaVersion: 1, commandId: "command-example", idempotencyKey: "key-example", inputDigest: runDigest("input"), ...scope, aggregateId: "conversation-example", expectedRevision: 0, authorizationDigest: runDigest("authorization"), occurredAt: "2026-08-23T00:00:00Z" }, (transaction) => transaction.putDocument({ kind: "conversation", aggregateId: "conversation-example", expectedRevision: 0, contentSchemaVersion: "example.conversation@1", contentDigest: runDigest({ status: "pending" }), content: { status: "pending" }, updatedAt: "2026-08-23T00:00:00Z" })); first.close(); const reopened = createLocalAgentState({ projectRoot: root, environment: {} }); expect(await reopened.revision(scope, "conversation", "conversation-example")).toBe(1); reopened.close(); await rm(root, { recursive: true, force: true }); }); });
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import path from "node:path";
|
|
2
|
+
import { parseAgentStateEnvironment } from "@aipt/agent-state-repository";
|
|
3
|
+
import { SqliteAgentStateRepository } from "@aipt/agent-state-repository/sqlite";
|
|
4
|
+
|
|
5
|
+
export function createLocalAgentState(input: Readonly<{ projectRoot: string; environment: Readonly<Record<string, string | undefined>> }>) {
|
|
6
|
+
const environment = parseAgentStateEnvironment({ DYYTO_AGENT_STATE_ADAPTER: input.environment.DYYTO_AGENT_STATE_ADAPTER ?? "sqlite", DYYTO_AGENT_STATE_SQLITE_PATH: input.environment.DYYTO_AGENT_STATE_SQLITE_PATH ?? ".data/agent-state.sqlite" });
|
|
7
|
+
return new SqliteAgentStateRepository({ filename: path.resolve(input.projectRoot, environment.DYYTO_AGENT_STATE_SQLITE_PATH) });
|
|
8
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": 2,
|
|
3
|
+
"capabilityId": "foundation.agent-state-sqlite",
|
|
4
|
+
"version": "1.1.0",
|
|
5
|
+
"consumerProfile": "any-project",
|
|
6
|
+
"kind": "engineering-feature",
|
|
7
|
+
"dependencies": { "profiles": ["nextjs-full-stack-application"], "capabilities": ["foundation.agent-worker-skill-runtime"] },
|
|
8
|
+
"compatibility": { "node": ">=24.18.0 <25", "pnpm": "11.21.0", "typescript": "6.0.3" },
|
|
9
|
+
"integration": {
|
|
10
|
+
"title": "Agent SQLite 本地事务仓储",
|
|
11
|
+
"purpose": "通过公共事务 Port 为本地 Agent 开发提供 Node 24 内置 SQLite 状态仓储。",
|
|
12
|
+
"packages": [
|
|
13
|
+
{ "packageName": "@aipt/agent-state-repository", "version": "0.2.0", "usage": "runtime", "imports": [{ "importFrom": "@aipt/agent-state-repository/sqlite", "symbol": "SqliteAgentStateRepository", "referencePath": "src/agent-state.ts" }] },
|
|
14
|
+
{ "packageName": "@aipt/agent-run-kernel", "version": "0.2.0", "usage": "runtime", "imports": [] },
|
|
15
|
+
{ "packageName": "@aipt/agent-runtime-contracts", "version": "0.3.0", "usage": "runtime", "imports": [] },
|
|
16
|
+
{ "packageName": "@aipt/environment", "version": "0.1.0", "usage": "runtime", "imports": [] }
|
|
17
|
+
],
|
|
18
|
+
"codeAssets": [
|
|
19
|
+
{ "sourcePath": "assets/src/agent-state.ts", "targetPath": "src/agent-state.ts", "ownership": "owned-file" },
|
|
20
|
+
{ "sourcePath": "assets/src/agent-state.test.ts", "targetPath": "src/agent-state.test.ts", "ownership": "owned-file" },
|
|
21
|
+
{ "sourcePath": "assets/README.agent-state-sqlite.md", "targetPath": "README.agent-state-sqlite.md", "ownership": "owned-file" }
|
|
22
|
+
]
|
|
23
|
+
},
|
|
24
|
+
"assets": [
|
|
25
|
+
{ "path": "README.agent-state-sqlite.md", "ownership": "owned-file", "digest": "sha256:9ac3a6365740cab3f909d21b2fdfe64c31e20c4b4fe27a8f8083bffd32c7c5df", "mode": 420 },
|
|
26
|
+
{ "path": "src/agent-state.test.ts", "ownership": "owned-file", "digest": "sha256:df0b6619cce268f35b29f786019e90cb2083d2c7dda5b889c990f4f0a73899a1", "mode": 420 },
|
|
27
|
+
{ "path": "src/agent-state.ts", "ownership": "owned-file", "digest": "sha256:00128c3ede5c6048a1b7261837de1ad5e4740d5f844cc3888f589acb48d91301", "mode": 420 }
|
|
28
|
+
],
|
|
29
|
+
"verifiers": [{ "id": "capability.assets" }, { "id": "typescript.typecheck" }, { "id": "vitest.run" }],
|
|
30
|
+
"exit": { "ownedAssets": ["README.agent-state-sqlite.md", "src/agent-state.test.ts", "src/agent-state.ts"] },
|
|
31
|
+
"availability": { "maturity": "candidate", "visibility": "maintainers-only", "sourceState": "local-artifact" },
|
|
32
|
+
"packageSources": [],
|
|
33
|
+
"integrity": "sha256:622750d2747e8c88723f790deadb0e641566fc7f5756fe31bbc2e1672e4c0aba"
|
|
34
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": 2,
|
|
3
|
+
"capabilityId": "foundation.agent-state-sqlite-registry-consumer",
|
|
4
|
+
"version": "1.0.0",
|
|
5
|
+
"consumerProfile": "any-project",
|
|
6
|
+
"kind": "engineering-feature",
|
|
7
|
+
"dependencies": {
|
|
8
|
+
"profiles": ["nextjs-full-stack-application"],
|
|
9
|
+
"capabilities": ["foundation.agent-worker-skill-runtime"]
|
|
10
|
+
},
|
|
11
|
+
"compatibility": { "node": ">=24.18.0 <25", "pnpm": "11.21.0", "typescript": "6.0.3" },
|
|
12
|
+
"integration": {
|
|
13
|
+
"title": "Agent SQLite Registry 消费来源",
|
|
14
|
+
"purpose": "仅为工作区外消费者通过受控 development Registry 解析 Agent SQLite 包及其闭包。",
|
|
15
|
+
"packages": [
|
|
16
|
+
{ "packageName": "@aipt/agent-state-repository", "version": "0.1.0", "usage": "runtime", "imports": [] },
|
|
17
|
+
{ "packageName": "@aipt/agent-run-kernel", "version": "0.2.0", "usage": "runtime", "imports": [] },
|
|
18
|
+
{ "packageName": "@aipt/agent-runtime-contracts", "version": "0.3.0", "usage": "runtime", "imports": [] },
|
|
19
|
+
{ "packageName": "@aipt/environment", "version": "0.1.0", "usage": "runtime", "imports": [] }
|
|
20
|
+
],
|
|
21
|
+
"codeAssets": [
|
|
22
|
+
{ "sourcePath": "assets/README.agent-state-registry-consumer.md", "targetPath": "README.agent-state-registry-consumer.md", "ownership": "owned-file" }
|
|
23
|
+
]
|
|
24
|
+
},
|
|
25
|
+
"assets": [
|
|
26
|
+
{ "path": "README.agent-state-registry-consumer.md", "ownership": "owned-file", "digest": "sha256:5f90669ab475308101224a74e39a603d586ba8a7fc9668642e6e491cb4cb5645", "mode": 420 }
|
|
27
|
+
],
|
|
28
|
+
"verifiers": [{ "id": "capability.assets" }],
|
|
29
|
+
"exit": { "ownedAssets": ["README.agent-state-registry-consumer.md"] },
|
|
30
|
+
"availability": { "maturity": "candidate", "visibility": "maintainers-only", "sourceState": "development-registry" },
|
|
31
|
+
"packageSources": [
|
|
32
|
+
{ "registryId": "registry.local.development", "packageName": "@aipt/agent-run-kernel", "version": "0.2.0", "integrity": "sha512-lIzCKdc9rVkBfvh/D/PO7hSWCfkWNgyyiVC7GnarSMPKJn5R1pSltaZPtnphE1/mWofZYkL74kH0YF65iu3EAQ==", "tarballDigest": "sha256:262dc66037fcc447ad237e5514efd41159ca9296306ee2043773c579497b132a", "deliveryReceiptId": "sha256:3bfe69ffa27f951bd6c5da700cc8e9fa2fc1fcfd23cac6f3db6573bec9bb6492", "usage": "runtime" },
|
|
33
|
+
{ "registryId": "registry.local.development", "packageName": "@aipt/agent-runtime-contracts", "version": "0.3.0", "integrity": "sha512-YV6gNqUd0/ZfroWpHTz+lJt41NSTSbqtnRAZZi3PCOU4N3m8iE97PcM1hRi9TmyFqx6v1yTlRwZkYcKz8UH8AQ==", "tarballDigest": "sha256:428dfcb48b7c306befe502ffce7b737ff5c07a59f31f08c85b3213114533a600", "deliveryReceiptId": "sha256:3e143fde4ff987c760c43c574d5517921ee63c716e40fbb31a0b28061c6f3f82", "usage": "runtime" },
|
|
34
|
+
{ "registryId": "registry.local.development", "packageName": "@aipt/agent-state-repository", "version": "0.1.0", "integrity": "sha512-EOQeCOJ2RDsdZGfd/p7PhvDz8zyGvV3g8Q8RmcMIMoYgsH7QO50bSbKtNMNcWNu06G3cjjZ2zT18WygXsPvXwg==", "tarballDigest": "sha256:0f12900756c66bd1ca9442e1da2109f48a3cdfd0cf319ee54886e577bf0724de", "deliveryReceiptId": "sha256:3d07108f156ec5ab1615056d1db4c32f42291fee0f50f33a347491111e16c1a1", "usage": "runtime" },
|
|
35
|
+
{ "registryId": "registry.local.development", "packageName": "@aipt/environment", "version": "0.1.0", "integrity": "sha512-m6QQZhDnrkbgMUOW9fqBJXOWaf8UtyvlJ0hD9wvYHGL4ug8q0+vncEIomsXQmfEH6DiUtlGTQdUsMDOF37eYPQ==", "tarballDigest": "sha256:afcade31ab0ffb1ff0e823a5668651340cef98f85472964f24ba7635ca3cfd38", "deliveryReceiptId": "sha256:c0948253cfb15b0bf9a547b2a395d9df8855d9fb833ca6d5b93782b3df6b5632", "usage": "runtime" }
|
|
36
|
+
],
|
|
37
|
+
"integrity": "sha256:7fdf44cf2a0ccb5577a8549ebb20cfcec167b9f490c67787361d12f2e20e5c7e"
|
|
38
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": 2,
|
|
3
|
+
"capabilityId": "foundation.agent-state-sqlite-registry-consumer",
|
|
4
|
+
"version": "1.1.0",
|
|
5
|
+
"consumerProfile": "any-project",
|
|
6
|
+
"kind": "engineering-feature",
|
|
7
|
+
"dependencies": { "profiles": ["nextjs-full-stack-application"], "capabilities": ["foundation.agent-worker-skill-runtime"] },
|
|
8
|
+
"compatibility": { "node": ">=24.18.0 <25", "pnpm": "11.21.0", "typescript": "6.0.3" },
|
|
9
|
+
"integration": {
|
|
10
|
+
"title": "Agent SQLite Registry 消费来源",
|
|
11
|
+
"purpose": "仅为工作区外消费者通过受控 development Registry 解析 Agent SQLite 包及其闭包。",
|
|
12
|
+
"packages": [
|
|
13
|
+
{ "packageName": "@aipt/agent-state-repository", "version": "0.2.0", "usage": "runtime", "imports": [] },
|
|
14
|
+
{ "packageName": "@aipt/agent-run-kernel", "version": "0.2.0", "usage": "runtime", "imports": [] },
|
|
15
|
+
{ "packageName": "@aipt/agent-runtime-contracts", "version": "0.3.0", "usage": "runtime", "imports": [] },
|
|
16
|
+
{ "packageName": "@aipt/environment", "version": "0.1.0", "usage": "runtime", "imports": [] }
|
|
17
|
+
],
|
|
18
|
+
"codeAssets": [{ "sourcePath": "assets/README.agent-state-registry-consumer.md", "targetPath": "README.agent-state-registry-consumer.md", "ownership": "owned-file" }]
|
|
19
|
+
},
|
|
20
|
+
"assets": [{ "path": "README.agent-state-registry-consumer.md", "ownership": "owned-file", "digest": "sha256:89bd7a1779dd918fffb3799947cba7698efc927f374508604668dcc9c088db45", "mode": 420 }],
|
|
21
|
+
"verifiers": [{ "id": "capability.assets" }],
|
|
22
|
+
"exit": { "ownedAssets": ["README.agent-state-registry-consumer.md"] },
|
|
23
|
+
"availability": { "maturity": "candidate", "visibility": "maintainers-only", "sourceState": "development-registry" },
|
|
24
|
+
"packageSources": [
|
|
25
|
+
{ "registryId": "registry.local.development", "packageName": "@aipt/agent-run-kernel", "version": "0.2.0", "integrity": "sha512-lIzCKdc9rVkBfvh/D/PO7hSWCfkWNgyyiVC7GnarSMPKJn5R1pSltaZPtnphE1/mWofZYkL74kH0YF65iu3EAQ==", "tarballDigest": "sha256:262dc66037fcc447ad237e5514efd41159ca9296306ee2043773c579497b132a", "deliveryReceiptId": "sha256:67f5cf46dca6899432dd5f0f260e9e2b8decc6371d0f4e5771d9c7fe1dee86a4", "usage": "runtime" },
|
|
26
|
+
{ "registryId": "registry.local.development", "packageName": "@aipt/agent-runtime-contracts", "version": "0.3.0", "integrity": "sha512-YV6gNqUd0/ZfroWpHTz+lJt41NSTSbqtnRAZZi3PCOU4N3m8iE97PcM1hRi9TmyFqx6v1yTlRwZkYcKz8UH8AQ==", "tarballDigest": "sha256:428dfcb48b7c306befe502ffce7b737ff5c07a59f31f08c85b3213114533a600", "deliveryReceiptId": "sha256:b50980422c5bc34701306352b7aa6b6266363cfb223b7bd0a0a9c8a2070d26e9", "usage": "runtime" },
|
|
27
|
+
{ "registryId": "registry.local.development", "packageName": "@aipt/agent-state-repository", "version": "0.2.0", "integrity": "sha512-w91F1WgOfAubLc/f6hEmA+DvuEPeSuor7a1R8tl0ElkfsqA7stMhXGoq8TkzvNr9Kg0rrezbEmG+Y33+FLCigg==", "tarballDigest": "sha256:755472df14f1b8c06e6be9b8402ace703dd48b21ba97975a71a55e1c4d63fbd9", "deliveryReceiptId": "sha256:2f7a42d730db2604258c076642f7c3488877b7550fe21ad67abc707ac23b2475", "usage": "runtime" },
|
|
28
|
+
{ "registryId": "registry.local.development", "packageName": "@aipt/environment", "version": "0.1.0", "integrity": "sha512-m6QQZhDnrkbgMUOW9fqBJXOWaf8UtyvlJ0hD9wvYHGL4ug8q0+vncEIomsXQmfEH6DiUtlGTQdUsMDOF37eYPQ==", "tarballDigest": "sha256:afcade31ab0ffb1ff0e823a5668651340cef98f85472964f24ba7635ca3cfd38", "deliveryReceiptId": "sha256:924a47acac8ddebe8cceb16c0764d4c37377dee3499d77c648ab9bab7554704e", "usage": "runtime" }
|
|
29
|
+
],
|
|
30
|
+
"integrity": "sha256:80f68f1cd8afb958a669863d2fdcaa0bc54fce27e5e25f99be4e6b66dd534ece"
|
|
31
|
+
}
|
package/dist/catalog/foundation.agent-worker-skill-runtime/1.0.0/assets/README.agent-runtime.md
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
# Agent Worker/Skill Runtime
|
|
2
|
+
|
|
3
|
+
该能力安装 Agent 合同、实例运行时、Run Kernel、Worker Kernel、Skill Registry、Tool Gateway 与执行适配器的候选版本,用于验证跨项目集成链路。
|
|
4
|
+
|
|
5
|
+
当前发行版只允许维护者通过明确批准的 development Bundle 使用,不代表生产发布。业务项目仍需显式提供租户、用户、Agent、Skill、Tool、模型与持久化适配器,不能把测试配置或密钥写入本目录。
|
|
6
|
+
|
|
7
|
+
写工具和高风险步骤必须等待用户确认;读取、路由、Worker 执行和 HITL 是独立职责。移除能力时使用 `dyyto remove feature` 生成不可变 Plan,不要手工删除依赖或采用记录。
|
package/dist/catalog/foundation.agent-worker-skill-runtime/1.0.0/assets/src/agent-runtime.test.ts
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { describe, expect, it } from "vitest";
|
|
2
|
+
import {
|
|
3
|
+
AgentChatContracts,
|
|
4
|
+
AgentExecutionAdapters,
|
|
5
|
+
AgentInstanceRuntime,
|
|
6
|
+
AgentRunKernel,
|
|
7
|
+
AgentRuntimeContracts,
|
|
8
|
+
AgentSkillRegistry,
|
|
9
|
+
AgentToolGateway,
|
|
10
|
+
AgentWorkerKernel,
|
|
11
|
+
agentRuntimeCapability,
|
|
12
|
+
} from "./agent-runtime.js";
|
|
13
|
+
|
|
14
|
+
describe("Agent Worker/Skill Runtime 能力", () => {
|
|
15
|
+
it("从安装包而不是平台源码装配八个公共入口", () => {
|
|
16
|
+
expect(agentRuntimeCapability).toEqual({ capabilityId: "foundation.agent-worker-skill-runtime", version: "1.0.0", packages: 8, channel: "development" });
|
|
17
|
+
expect([AgentRuntimeContracts, AgentChatContracts, AgentInstanceRuntime, AgentRunKernel, AgentWorkerKernel, AgentSkillRegistry, AgentToolGateway, AgentExecutionAdapters]).toHaveLength(8);
|
|
18
|
+
});
|
|
19
|
+
});
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export * as AgentRuntimeContracts from "@aipt/agent-runtime-contracts";
|
|
2
|
+
export * as AgentChatContracts from "@aipt/agent-chat-contracts";
|
|
3
|
+
export * as AgentInstanceRuntime from "@aipt/agent-instance-runtime";
|
|
4
|
+
export * as AgentRunKernel from "@aipt/agent-run-kernel";
|
|
5
|
+
export * as AgentWorkerKernel from "@aipt/agent-worker-kernel";
|
|
6
|
+
export * as AgentSkillRegistry from "@aipt/agent-skill-registry";
|
|
7
|
+
export * as AgentToolGateway from "@aipt/agent-tool-gateway";
|
|
8
|
+
export * as AgentExecutionAdapters from "@aipt/agent-execution-adapters";
|
|
9
|
+
|
|
10
|
+
export const agentRuntimeCapability = Object.freeze({
|
|
11
|
+
capabilityId: "foundation.agent-worker-skill-runtime",
|
|
12
|
+
version: "1.0.0",
|
|
13
|
+
packages: 8,
|
|
14
|
+
channel: "development",
|
|
15
|
+
} as const);
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": 2,
|
|
3
|
+
"capabilityId": "foundation.agent-worker-skill-runtime",
|
|
4
|
+
"version": "1.0.0",
|
|
5
|
+
"consumerProfile": "any-project",
|
|
6
|
+
"kind": "engineering-feature",
|
|
7
|
+
"dependencies": { "profiles": ["blank-typescript-library", "standalone-npm-package", "nextjs-full-stack-application"] },
|
|
8
|
+
"compatibility": { "node": ">=24.18.0 <25", "pnpm": "11.21.0", "typescript": "6.0.3" },
|
|
9
|
+
"integration": {
|
|
10
|
+
"title": "Agent Worker/Skill Runtime",
|
|
11
|
+
"purpose": "为项目安装用户级 Agent、Worker、Skill、Tool Gateway、HITL 与执行适配合同",
|
|
12
|
+
"packages": [
|
|
13
|
+
{ "packageName": "@aipt/agent-chat-contracts", "version": "0.1.0", "usage": "runtime", "imports": [{ "importFrom": "@aipt/agent-chat-contracts", "symbol": "AgentChatContracts", "referencePath": "src/agent-runtime.ts" }] },
|
|
14
|
+
{ "packageName": "@aipt/agent-execution-adapters", "version": "0.1.0", "usage": "runtime", "imports": [{ "importFrom": "@aipt/agent-execution-adapters", "symbol": "AgentExecutionAdapters", "referencePath": "src/agent-runtime.ts" }] },
|
|
15
|
+
{ "packageName": "@aipt/agent-instance-runtime", "version": "0.1.0", "usage": "runtime", "imports": [{ "importFrom": "@aipt/agent-instance-runtime", "symbol": "AgentInstanceRuntime", "referencePath": "src/agent-runtime.ts" }] },
|
|
16
|
+
{ "packageName": "@aipt/agent-run-kernel", "version": "0.1.0", "usage": "runtime", "imports": [{ "importFrom": "@aipt/agent-run-kernel", "symbol": "AgentRunKernel", "referencePath": "src/agent-runtime.ts" }] },
|
|
17
|
+
{ "packageName": "@aipt/agent-runtime-contracts", "version": "0.1.0", "usage": "runtime", "imports": [{ "importFrom": "@aipt/agent-runtime-contracts", "symbol": "AgentRuntimeContracts", "referencePath": "src/agent-runtime.ts" }] },
|
|
18
|
+
{ "packageName": "@aipt/agent-skill-registry", "version": "0.1.0", "usage": "runtime", "imports": [{ "importFrom": "@aipt/agent-skill-registry", "symbol": "AgentSkillRegistry", "referencePath": "src/agent-runtime.ts" }] },
|
|
19
|
+
{ "packageName": "@aipt/agent-tool-gateway", "version": "0.1.0", "usage": "runtime", "imports": [{ "importFrom": "@aipt/agent-tool-gateway", "symbol": "AgentToolGateway", "referencePath": "src/agent-runtime.ts" }] },
|
|
20
|
+
{ "packageName": "@aipt/agent-worker-kernel", "version": "0.1.0", "usage": "runtime", "imports": [{ "importFrom": "@aipt/agent-worker-kernel", "symbol": "AgentWorkerKernel", "referencePath": "src/agent-runtime.ts" }] }
|
|
21
|
+
],
|
|
22
|
+
"codeAssets": [
|
|
23
|
+
{ "sourcePath": "assets/README.agent-runtime.md", "targetPath": "README.agent-runtime.md", "ownership": "owned-file" },
|
|
24
|
+
{ "sourcePath": "assets/src/agent-runtime.test.ts", "targetPath": "src/agent-runtime.test.ts", "ownership": "owned-file" },
|
|
25
|
+
{ "sourcePath": "assets/src/agent-runtime.ts", "targetPath": "src/agent-runtime.ts", "ownership": "owned-file" }
|
|
26
|
+
]
|
|
27
|
+
},
|
|
28
|
+
"assets": [
|
|
29
|
+
{ "path": "README.agent-runtime.md", "ownership": "owned-file", "digest": "sha256:96bb1fad150c90fb8deb833bfb354ba1c82576053a23e3258bd9a03c2087e97c", "mode": 420 },
|
|
30
|
+
{ "path": "src/agent-runtime.test.ts", "ownership": "owned-file", "digest": "sha256:79983124e68cea251c26ce0524f4f8a59bacb56924612448d21b14c599b6c138", "mode": 420 },
|
|
31
|
+
{ "path": "src/agent-runtime.ts", "ownership": "owned-file", "digest": "sha256:37a1f923561f146a7f3a48815ff635a051b6339026b6b3b7a08168270513c378", "mode": 420 }
|
|
32
|
+
],
|
|
33
|
+
"verifiers": [{ "id": "capability.assets" }, { "id": "typescript.typecheck" }, { "id": "vitest.run" }],
|
|
34
|
+
"exit": { "ownedAssets": ["README.agent-runtime.md", "src/agent-runtime.test.ts", "src/agent-runtime.ts"] },
|
|
35
|
+
"availability": { "maturity": "candidate", "visibility": "maintainers-only", "sourceState": "development-registry" },
|
|
36
|
+
"packageSources": [
|
|
37
|
+
{ "registryId": "registry.local.development", "packageName": "@aipt/agent-chat-contracts", "version": "0.1.0", "integrity": "sha512-y2zQQonSZ+OlL06bP8FtlhRFLpbHK4i7JXJA/0wKMrt6DtUdw24X9P3iUajZRZ1IX17JYqVtMKoNyplBElh4yA==", "tarballDigest": "sha256:e2c1935b0c410597e4fa593e1e27322135fbc43e06b333159a807483d5fc7e32", "deliveryReceiptId": "sha256:444b26e53dbfad156cf0fef5d695fba4f71b1399f64e8cf5ad246b0bcc194884", "usage": "runtime" },
|
|
38
|
+
{ "registryId": "registry.local.development", "packageName": "@aipt/agent-execution-adapters", "version": "0.1.0", "integrity": "sha512-6dQ0BM3NC+WK1yufwt5LXBfyisDiYFuQzMXOKNekxebrENiHCLz+A09hLWh8veMDFcuVrAjUoXSnUtWUAH04qw==", "tarballDigest": "sha256:4f2648653bcb788179371535084ddc77855a1288e4f72815ea154f00e249fb9a", "deliveryReceiptId": "sha256:3494706ca0a3e247a7d177b745f1f1a764dff36af2a219688c3dcecabb9ae6b0", "usage": "runtime" },
|
|
39
|
+
{ "registryId": "registry.local.development", "packageName": "@aipt/agent-instance-runtime", "version": "0.1.0", "integrity": "sha512-ib7UpKGc8jsTNGcTIBfd9njblm2eLptdjgCHuX+B3FWrR6SeQhq2OOiThScJUIhwN/9nfdpRbx28EXltQFKCvQ==", "tarballDigest": "sha256:bcb48e6194cfd0bc1a0278c765ff31c2ecdec755bc506b97bf2d658571411ad0", "deliveryReceiptId": "sha256:a7e2e6282e5d4aed0388fb0ea3bf3cb3640daa2735c0956843f0364ff2a61db2", "usage": "runtime" },
|
|
40
|
+
{ "registryId": "registry.local.development", "packageName": "@aipt/agent-run-kernel", "version": "0.1.0", "integrity": "sha512-39QoQgeyDLwRv3cXj+Vb844W1inv7sJzVbN4j1olqWLhfn8voO4UHH1aqN3Zt0639YVtSD8JEBFI8kZ/2S+BWg==", "tarballDigest": "sha256:38c4e8881107a75543d8b2ec21d3da00f4bfaf01cec142199cf23aa9ca1bfe41", "deliveryReceiptId": "sha256:d3390fee499882d2696f8ae5e59a42411b3e523798f443e707c25e98c9d13997", "usage": "runtime" },
|
|
41
|
+
{ "registryId": "registry.local.development", "packageName": "@aipt/agent-runtime-contracts", "version": "0.1.0", "integrity": "sha512-vNmwy0aP3eTQe/A7h5S0/L1RbhMAI9DdYfBNjPxqVNuQ/hzlPcxtDSlFiVdzo0TFQWqIqW6RvcANgNjZov1z3w==", "tarballDigest": "sha256:cc5fbe46676151ddc61079242dd6e52b63a216d179c97f078b7fb8950686f44b", "deliveryReceiptId": "sha256:ff52b66137f32d69f4f415d2edc2f8df1e5555c8a547c8467b3ccde6e72ce17e", "usage": "runtime" },
|
|
42
|
+
{ "registryId": "registry.local.development", "packageName": "@aipt/agent-skill-registry", "version": "0.1.0", "integrity": "sha512-qKP4uPX6mrIZgW1HSLATNJFOqX5NVPAEim7FaP69KJSczIT8eJvnn+6UfJ4eLhhW6mOcePS2UD1vA/ATQKnbJg==", "tarballDigest": "sha256:177ac26488c2292588fb112cab847b7bf4d54a0f0f1e6ceef334b039a87997ea", "deliveryReceiptId": "sha256:bd3fd6abbc95bca9b3c9c978afe72d0a7942f0c42027711374874b933158d2c7", "usage": "runtime" },
|
|
43
|
+
{ "registryId": "registry.local.development", "packageName": "@aipt/agent-tool-gateway", "version": "0.1.0", "integrity": "sha512-i76hSo+A8aB3KGG2MkkhIMNhpw1dWtANJXLNzanaHPMMymZZ60BqY6LGjz2h/Jwq7KqF5RptDJIq4dqpkGobWA==", "tarballDigest": "sha256:767df581f450aaa618aa8f73bc741bc77f8a4f4af2aebb2fefdb8a8be84e6863", "deliveryReceiptId": "sha256:2294e8e5e58232f11af56a6064b215a530fdafd1aef4dfa321ba4ee9f3e49ef7", "usage": "runtime" },
|
|
44
|
+
{ "registryId": "registry.local.development", "packageName": "@aipt/agent-worker-kernel", "version": "0.1.0", "integrity": "sha512-dHMa54zXCgOkWcnorvMR9XPiDEjB59MoyIAv7ENwE+5bQRUhfyVR+hPLYbKqBz9Vf9fp0/0Zlv/Z3yPmZPiUHg==", "tarballDigest": "sha256:eddef1fd9bbfc66e6a8dd0d2c14ca28681b16b8be1ad332c1c02e5b78e23ff60", "deliveryReceiptId": "sha256:0d569584eab610acb52572c8a8a3c46d2da9802490476e26f846d223534c8817", "usage": "runtime" }
|
|
45
|
+
],
|
|
46
|
+
"integrity": "sha256:13c54c8c6231cd3a6b7354b723b81572aaa424114594824b4f3c59354e654c37"
|
|
47
|
+
}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { fireEvent, render, screen } from "@testing-library/react";
|
|
2
|
+
import "@testing-library/jest-dom/vitest";
|
|
3
|
+
import { describe, expect, it } from "vitest";
|
|
4
|
+
import { EducationAgentExample } from "./workbench";
|
|
5
|
+
describe("教育 Agent 示例", () => { it("默认使用中文并要求用户确认 Skill", async () => { render(<EducationAgentExample/>); fireEvent.click(await screen.findByRole("button", { name: "选择虚构教学 Agent" })); expect(screen.getByText("虚构出版社")).toBeInTheDocument(); expect(screen.getByRole("button", { name: "确认绑定" })).toBeInTheDocument(); }); });
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { useEffect, useMemo, useState } from "react";
|
|
3
|
+
import { AgentChatWorkbench } from "@aipt/agent-chat-ui";
|
|
4
|
+
import { confirmSkill, decideInterrupt, type ConversationView, type InterruptEnvelope, type MessageEnvelope, type SkillRecommendation } from "@aipt/agent-chat-contracts";
|
|
5
|
+
const digest = `sha256:${"a".repeat(64)}` as const; const key = "dyyto.education-agent-example.v1";
|
|
6
|
+
type State = { agentId?: string; bound: boolean; view: ConversationView; recommendation?: SkillRecommendation; interrupt?: InterruptEnvelope; approved: boolean };
|
|
7
|
+
const initial = (): State => ({ bound: false, approved: false, view: { schemaVersion: 1, tenantId: "tenant-fixture", conversationId: "conversation-fixture", agentInstanceId: "agent-fixture", revision: 1, lastCursor: 0, messages: [], artifacts: [], findings: [] }, recommendation: { schemaVersion: 1, recommendationId: "recommendation-fixture", tenantId: "tenant-fixture", conversationId: "conversation-fixture", revision: 1, inputDigest: digest, candidates: [{ subjectSkillReleaseId: "fixture.education.fractions@1.0.0", compatible: true, reason: "四维 taxonomy 与虚构课时完全匹配" }], status: "pending" } });
|
|
8
|
+
const message = (role: "user" | "assistant", text: string, sequence: number): MessageEnvelope => ({ schemaVersion: 1, messageId: `${role}-${sequence}`, tenantId: "tenant-fixture", conversationId: "conversation-fixture", runId: "run-fixture", sequence, role, parts: [{ kind: "text", text }], createdAt: "2026-08-23T00:00:00.000Z" });
|
|
9
|
+
export function EducationAgentExample() {
|
|
10
|
+
const [state, setState] = useState<State>(initial); const [ready, setReady] = useState(false);
|
|
11
|
+
useEffect(() => { const stored = localStorage.getItem(key); if (stored) setState(JSON.parse(stored) as State); setReady(true); }, []); useEffect(() => { if (ready) localStorage.setItem(key, JSON.stringify(state)); }, [ready, state]);
|
|
12
|
+
const update = (next: State) => setState(next); const candidate = useMemo(() => ({ title: "认识几分之一(虚构课时)", activities: [["情境导入",5],["动手探究",15],["对比辨析",10],["应用反馈",7],["回顾总结",3]] as const }), []);
|
|
13
|
+
const select = () => update({ ...state, agentId: "agent-fixture" });
|
|
14
|
+
const recommendationDecision = (decision: "accept" | "reject", subjectSkillReleaseId?: string) => { if (!state.recommendation) return; if (decision === "accept" && subjectSkillReleaseId) confirmSkill(state.recommendation, { receiptId: "selection-fixture", expectedRevision: 1, subjectSkillReleaseId, selectedBy: "teacher-fixture", selectedAt: "2026-08-23T00:00:00.000Z", inputDigest: digest }); update({ ...state, bound: decision === "accept", recommendation: { ...state.recommendation, status: decision === "accept" ? "accepted" : "rejected" } }); };
|
|
15
|
+
const send = (text: string) => { const count = state.view.messages.filter((item) => item.role === "user").length + 1; const replies = ["请确认学生是否接触过平均分。", "请选择动手折纸或图示观察。", "候选已生成,确认前不会创建 Artifact。"]; const messages = [...state.view.messages, message("user", text, state.view.messages.length + 1), message("assistant", replies[Math.min(count - 1, 2)]!, state.view.messages.length + 2)]; const interrupt = count === 3 ? { schemaVersion: 1 as const, interruptId: "interrupt-fixture", tenantId: "tenant-fixture", conversationId: "conversation-fixture", runId: "run-fixture", revision: 1, kind: "review_candidate" as const, payloadDigest: digest, allowedDecisions: ["approve", "edit", "reject"] as const, status: "pending" as const } : state.interrupt; update({ ...state, view: { ...state.view, revision: state.view.revision + 1, messages }, ...(interrupt ? { interrupt } : {}) }); };
|
|
16
|
+
const interruptDecision = (decision: "approve" | "edit" | "reject") => { if (!state.interrupt) return; const interrupt = decideInterrupt(state.interrupt, { decisionId: `decision-${decision}`, interruptId: state.interrupt.interruptId, expectedRevision: state.interrupt.revision, decision, decidedBy: "teacher-fixture", decidedAt: "2026-08-23T00:00:00.000Z", payloadDigest: state.interrupt.payloadDigest, ...(decision === "edit" ? { editedPayloadDigest: digest } : {}) }); const approved = decision === "approve"; update({ ...state, approved, interrupt, view: { ...state.view, artifacts: approved ? [{ artifactId: "artifact-json", tenantId: "tenant-fixture", runId: "run-fixture", kind: "json", contentDigest: digest, status: "final" }, { artifactId: "artifact-markdown", tenantId: "tenant-fixture", runId: "run-fixture", kind: "markdown", contentDigest: digest, status: "final" }] : [] } }); };
|
|
17
|
+
if (!ready) return <p>正在恢复本地示例…</p>;
|
|
18
|
+
return <section aria-label="AI 教育 Agent 正式示例"><p>Development candidate · 全部内容均为虚构</p><h1>AI 教育 Agent 示例</h1>{!state.agentId ? <><h2>选择或创建用户 Agent</h2><button onClick={select}>选择虚构教学 Agent</button></> : <><dl><div><dt>出版社</dt><dd>虚构出版社</dd></div><div><dt>学科</dt><dd>数学</dd></div><div><dt>年级</dt><dd>三年级</dd></div><div><dt>期次</dt><dd>上学期</dd></div></dl><AgentChatWorkbench view={state.view} recommendation={state.bound ? undefined : state.recommendation} interrupt={state.interrupt?.status === "pending" ? state.interrupt : undefined} onSend={send} onRecommendationDecision={recommendationDecision} onInterruptDecision={interruptDecision}/>{state.interrupt && <section aria-label="结构化教学设计候选"><h2>{candidate.title}</h2><ol>{candidate.activities.map(([name, minutes]) => <li key={name}>{name}:{minutes} 分钟</li>)}</ol><p>总时长:40 分钟</p></section>}{state.approved && <section aria-label="Artifact 预览"><h2>已确认 Artifact</h2><details><summary>JSON · {digest}</summary><pre>{JSON.stringify(candidate, null, 2)}</pre></details><details><summary>MARKDOWN · {digest}</summary><pre># {candidate.title}{"\n\n"}虚构内容</pre></details></section>}</>}</section>;
|
|
19
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": 2,
|
|
3
|
+
"capabilityId": "foundation.ai-education-agent-example",
|
|
4
|
+
"version": "1.0.0",
|
|
5
|
+
"integrity": "sha256:282b97e0ac229a02e437ec5f60b7f616e632f59c1a733f39058d004976d0b500",
|
|
6
|
+
"consumerProfile": "any-project",
|
|
7
|
+
"kind": "engineering-feature",
|
|
8
|
+
"availability": { "maturity": "candidate", "visibility": "maintainers-only", "sourceState": "local-artifact" },
|
|
9
|
+
"dependencies": { "profiles": ["nextjs-full-stack-application"], "capabilities": ["foundation.agent-worker-skill-runtime", "foundation.agent-chat-ui-consumer"] },
|
|
10
|
+
"compatibility": { "node": ">=24.18.0 <25", "pnpm": "11.21.0", "typescript": "6.0.3" },
|
|
11
|
+
"integration": { "title": "AI 教育 Agent 虚构示例", "purpose": "通过正式 Catalog 注入教育 Agent development consumer。", "packages": [], "codeAssets": [{ "sourcePath": "app/agent-phase1/workbench.tsx", "targetPath": "app/agent-phase1/workbench.tsx", "ownership": "owned-file" }] },
|
|
12
|
+
"packageSources": [],
|
|
13
|
+
"assets": [
|
|
14
|
+
{ "path": "app/agent-phase1/page.tsx", "ownership": "owned-file", "digest": "sha256:4e394dd2f765ce670b13af8cf457451796ae362c17dde5486c09383a51403dbb", "mode": 420 },
|
|
15
|
+
{ "path": "app/agent-phase1/workbench.test.tsx", "ownership": "owned-file", "digest": "sha256:bcd4d68085e84053a6e6666456447d0f0d28f70bd2b2dfa4f467caefd56f17e7", "mode": 420 },
|
|
16
|
+
{ "path": "app/agent-phase1/workbench.tsx", "ownership": "owned-file", "digest": "sha256:431d8a086d296b991741f4bd017305dc7315acab3725b8d006240d8fa6a309e0", "mode": 420 },
|
|
17
|
+
{ "path": "README.agent-example.md", "ownership": "owned-file", "digest": "sha256:686de21fa5e1956bfe8f6f2d70105ff699dd463342e433f85b5f83504821b802", "mode": 420 }
|
|
18
|
+
],
|
|
19
|
+
"verifiers": [{ "id": "capability.assets" }, { "id": "typescript.typecheck" }, { "id": "vitest.run" }, { "id": "next.application-build" }],
|
|
20
|
+
"exit": { "ownedAssets": ["app/agent-phase1/page.tsx", "app/agent-phase1/workbench.test.tsx", "app/agent-phase1/workbench.tsx", "README.agent-example.md"] }
|
|
21
|
+
}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { parseInterruptEnvelope, parseMessageEnvelope, parseSkillRecommendation, type ConversationView, type InterruptEnvelope, type SkillRecommendation } from "@aipt/agent-chat-contracts";
|
|
2
|
+
export type DemoState = Readonly<{ schemaVersion: 1; repositoryRevision: number; selected: boolean; bound: boolean; approved: boolean; view: ConversationView; recommendation: SkillRecommendation; interrupt?: InterruptEnvelope }>;
|
|
3
|
+
const digest = `sha256:${"a".repeat(64)}` as const;
|
|
4
|
+
export const initialDemoState = (): DemoState => ({ schemaVersion: 1, repositoryRevision: 0, selected: false, bound: false, approved: false, view: { schemaVersion: 1, tenantId: "tenant-fixture", conversationId: "conversation-fixture", agentInstanceId: "agent-fixture", revision: 1, lastCursor: 0, messages: [], artifacts: [], findings: [] }, recommendation: { schemaVersion: 1, recommendationId: "recommendation-fixture", tenantId: "tenant-fixture", conversationId: "conversation-fixture", revision: 1, inputDigest: digest, candidates: [{ subjectSkillReleaseId: "fixture.education.fractions@1.0.0", compatible: true, reason: "四维 taxonomy 与虚构课时完全匹配" }], status: "pending" } });
|
|
5
|
+
export function parseDemoState(value: unknown): DemoState { if (!value || typeof value !== "object" || Array.isArray(value)) throw new Error("DEMO_STATE_INVALID"); const state = value as DemoState; const keys = ["schemaVersion", "repositoryRevision", "selected", "bound", "approved", "view", "recommendation", ...(state.interrupt ? ["interrupt"] : [])]; if (Object.keys(state).sort().join(",") !== keys.sort().join(",") || state.schemaVersion !== 1 || !Number.isSafeInteger(state.repositoryRevision) || state.repositoryRevision < 0 || typeof state.selected !== "boolean" || typeof state.bound !== "boolean" || typeof state.approved !== "boolean" || state.view.schemaVersion !== 1 || !Array.isArray(state.view.messages) || !Array.isArray(state.view.artifacts) || !Array.isArray(state.view.findings)) throw new Error("DEMO_STATE_INVALID"); state.view.messages.forEach(parseMessageEnvelope); parseSkillRecommendation(state.recommendation); if (state.interrupt) parseInterruptEnvelope(state.interrupt); return state; }
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"use server";
|
|
2
|
+
import { runDigest } from "@aipt/agent-run-kernel";
|
|
3
|
+
import { createLocalAgentState } from "../../src/agent-state";
|
|
4
|
+
import { initialDemoState, parseDemoState, type DemoState } from "./contracts";
|
|
5
|
+
const scope = { tenantId: "tenant-fixture", projectId: "education-example", userId: "teacher-fixture" } as const;
|
|
6
|
+
export async function readDemoState(): Promise<DemoState> { const repository = createLocalAgentState({ projectRoot: process.cwd(), environment: process.env }); try { const document = await repository.document(scope, "conversation", "conversation-fixture"); return document ? parseDemoState({ ...(document.content as DemoState), repositoryRevision: document.revision }) : initialDemoState(); } finally { repository.close(); } }
|
|
7
|
+
export async function saveDemoState(desiredInput: DemoState, expectedRevision: number, idempotencyKey: string): Promise<DemoState> { const desired = parseDemoState({ ...desiredInput, repositoryRevision: expectedRevision }); const repository = createLocalAgentState({ projectRoot: process.cwd(), environment: process.env }); try { const content = { ...desired, repositoryRevision: expectedRevision + 1 }; const contentDigest = runDigest(content); await repository.transact({ schemaVersion: 1, commandId: `command-${idempotencyKey}`, idempotencyKey, inputDigest: contentDigest, ...scope, aggregateId: "conversation-fixture", expectedRevision, authorizationDigest: runDigest("fixture-only"), occurredAt: new Date().toISOString() }, (transaction) => transaction.putDocument({ kind: "conversation", aggregateId: "conversation-fixture", expectedRevision, contentSchemaVersion: "education-agent-example@1", contentDigest, content, updatedAt: new Date().toISOString() })); return parseDemoState(content); } finally { repository.close(); } }
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { fireEvent, render, screen } from "@testing-library/react";
|
|
2
|
+
import "@testing-library/jest-dom/vitest";
|
|
3
|
+
import { describe, expect, it, vi } from "vitest";
|
|
4
|
+
vi.mock("./state.server", () => ({ saveDemoState: async (state: object, revision: number) => ({ ...state, repositoryRevision: revision + 1 }) }));
|
|
5
|
+
import { initialDemoState } from "./contracts";
|
|
6
|
+
import { EducationAgentSqliteExample } from "./workbench";
|
|
7
|
+
describe("SQLite 教育 Agent 示例", () => { it("默认中文并在用户确认前不绑定 Skill", async () => { render(<EducationAgentSqliteExample initialState={initialDemoState()}/>); fireEvent.click(screen.getByRole("button", { name: "选择虚构教学 Agent" })); expect(await screen.findByText("虚构出版社")).toBeInTheDocument(); expect(screen.getByRole("button", { name: "确认绑定" })).toBeInTheDocument(); }); });
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { useState } from "react";
|
|
3
|
+
import { AgentChatWorkbench } from "@aipt/agent-chat-ui";
|
|
4
|
+
import { confirmSkill, decideInterrupt, type MessageEnvelope } from "@aipt/agent-chat-contracts";
|
|
5
|
+
import type { DemoState } from "./contracts";
|
|
6
|
+
import { saveDemoState } from "./state.server";
|
|
7
|
+
const digest = `sha256:${"a".repeat(64)}` as const; const candidate = { title: "认识几分之一(虚构课时)", activities: [["情境导入",5],["动手探究",15],["对比辨析",10],["应用反馈",7],["回顾总结",3]] as const };
|
|
8
|
+
const message = (role: "user" | "assistant", text: string, sequence: number): MessageEnvelope => ({ schemaVersion: 1, messageId: `${role}-${sequence}`, tenantId: "tenant-fixture", conversationId: "conversation-fixture", runId: "run-fixture", sequence, role, parts: [{ kind: "text", text }], createdAt: new Date().toISOString() });
|
|
9
|
+
export function EducationAgentSqliteExample({ initialState }: { initialState: DemoState }) { const [state, setState] = useState(initialState); const [problem, setProblem] = useState(""); const commit = async (desired: DemoState, action: string) => { try { setState(await saveDemoState(desired, state.repositoryRevision, `${action}-${state.repositoryRevision + 1}`)); setProblem(""); } catch { setProblem("状态已经变化,请刷新后重试。"); } }; const select = () => commit({ ...state, selected: true }, "select"); const recommendationDecision = (decision: "accept" | "reject", subjectSkillReleaseId?: string) => { if (decision === "accept" && subjectSkillReleaseId) confirmSkill(state.recommendation, { receiptId: "selection-fixture", expectedRevision: 1, subjectSkillReleaseId, selectedBy: "teacher-fixture", selectedAt: new Date().toISOString(), inputDigest: digest }); return commit({ ...state, bound: decision === "accept", recommendation: { ...state.recommendation, status: decision === "accept" ? "accepted" : "rejected" } }, `skill-${decision}`); }; const send = (text: string) => { if (!state.bound) return; const count = state.view.messages.filter((item) => item.role === "user").length + 1; const replies = ["请确认学生是否接触过平均分。", "请选择动手折纸或图示观察。", "候选已生成,确认前不会创建 Artifact。"]; const messages = [...state.view.messages, message("user", text, state.view.messages.length + 1), message("assistant", replies[Math.min(count - 1, 2)]!, state.view.messages.length + 2)]; const interrupt = count === 3 ? { schemaVersion: 1 as const, interruptId: "interrupt-fixture", tenantId: "tenant-fixture", conversationId: "conversation-fixture", runId: "run-fixture", revision: 1, kind: "review_candidate" as const, payloadDigest: digest, allowedDecisions: ["approve", "edit", "reject"] as const, status: "pending" as const } : state.interrupt; return commit({ ...state, view: { ...state.view, revision: state.view.revision + 1, lastCursor: messages.length, messages }, ...(interrupt ? { interrupt } : {}) }, `message-${count}`); }; const interruptDecision = (decision: "approve" | "edit" | "reject") => { if (!state.interrupt) return; const interrupt = decideInterrupt(state.interrupt, { decisionId: `decision-${decision}`, interruptId: state.interrupt.interruptId, expectedRevision: state.interrupt.revision, decision, decidedBy: "teacher-fixture", decidedAt: new Date().toISOString(), payloadDigest: state.interrupt.payloadDigest, ...(decision === "edit" ? { editedPayloadDigest: digest } : {}) }); const approved = decision === "approve"; return commit({ ...state, approved, interrupt, view: { ...state.view, artifacts: approved ? [{ artifactId: "artifact-json", tenantId: "tenant-fixture", runId: "run-fixture", kind: "json", contentDigest: digest, status: "final" }, { artifactId: "artifact-markdown", tenantId: "tenant-fixture", runId: "run-fixture", kind: "markdown", contentDigest: digest, status: "final" }] : [] } }, `hitl-${decision}`); }; return <section aria-label="AI 教育 Agent SQLite 正式示例"><p>Development candidate · SQLite 本地事务状态 · 全部内容均为虚构</p><h1>AI 教育 Agent 示例</h1>{problem && <p role="alert">{problem}</p>}{!state.selected ? <button onClick={select}>选择虚构教学 Agent</button> : <><dl><div><dt>出版社</dt><dd>虚构出版社</dd></div><div><dt>学科</dt><dd>数学</dd></div><div><dt>年级</dt><dd>三年级</dd></div><div><dt>期次</dt><dd>上学期</dd></div></dl><AgentChatWorkbench view={state.view} recommendation={state.bound ? undefined : state.recommendation} interrupt={state.interrupt?.status === "pending" ? state.interrupt : undefined} onSend={send} onRecommendationDecision={recommendationDecision} onInterruptDecision={interruptDecision}/>{state.interrupt && <section aria-label="结构化教学设计候选"><h2>{candidate.title}</h2><ol>{candidate.activities.map(([name, minutes]) => <li key={name}>{name}:{minutes} 分钟</li>)}</ol><p>总时长:40 分钟</p></section>}{state.approved && <section aria-label="Artifact 预览"><h2>已确认 Artifact</h2><pre>{JSON.stringify(candidate, null, 2)}</pre></section>}</>}</section>; }
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": 2,
|
|
3
|
+
"capabilityId": "foundation.ai-education-agent-sqlite-example",
|
|
4
|
+
"version": "1.0.0",
|
|
5
|
+
"consumerProfile": "any-project",
|
|
6
|
+
"kind": "engineering-feature",
|
|
7
|
+
"dependencies": { "profiles": ["nextjs-full-stack-application"], "capabilities": ["foundation.agent-worker-skill-runtime", "foundation.agent-chat-ui-consumer", "foundation.agent-state-sqlite"] },
|
|
8
|
+
"compatibility": { "node": ">=24.18.0 <25", "pnpm": "11.21.0", "typescript": "6.0.3" },
|
|
9
|
+
"integration": { "title": "AI 教育 Agent SQLite 虚构示例", "purpose": "通过正式 Catalog 注入使用 SQLite 权威状态的教育 Agent development consumer。", "packages": [], "codeAssets": [
|
|
10
|
+
{ "sourcePath": "assets/README.agent-sqlite-example.md", "targetPath": "README.agent-sqlite-example.md", "ownership": "owned-file" },
|
|
11
|
+
{ "sourcePath": "assets/app/agent-sqlite/contracts.ts", "targetPath": "app/agent-sqlite/contracts.ts", "ownership": "owned-file" },
|
|
12
|
+
{ "sourcePath": "assets/app/agent-sqlite/page.tsx", "targetPath": "app/agent-sqlite/page.tsx", "ownership": "owned-file" },
|
|
13
|
+
{ "sourcePath": "assets/app/agent-sqlite/state.server.ts", "targetPath": "app/agent-sqlite/state.server.ts", "ownership": "owned-file" },
|
|
14
|
+
{ "sourcePath": "assets/app/agent-sqlite/workbench.test.tsx", "targetPath": "app/agent-sqlite/workbench.test.tsx", "ownership": "owned-file" },
|
|
15
|
+
{ "sourcePath": "assets/app/agent-sqlite/workbench.tsx", "targetPath": "app/agent-sqlite/workbench.tsx", "ownership": "owned-file" }
|
|
16
|
+
] },
|
|
17
|
+
"assets": [
|
|
18
|
+
{ "path": "app/agent-sqlite/contracts.ts", "ownership": "owned-file", "digest": "sha256:4ce98facb6e3b54e9aefd1c883d604c971e5065bc2065abb046bec3b80f84664", "mode": 420 },
|
|
19
|
+
{ "path": "app/agent-sqlite/page.tsx", "ownership": "owned-file", "digest": "sha256:41c46cd0ddf4bc745951fec5b30594f5a7247ee87000ef2ec3d66fced3b8dd7b", "mode": 420 },
|
|
20
|
+
{ "path": "app/agent-sqlite/state.server.ts", "ownership": "owned-file", "digest": "sha256:d2eb2174866690d123729876d20fa9ed6e1bf5a6c03b41cdfd80d2cf529b2a79", "mode": 420 },
|
|
21
|
+
{ "path": "app/agent-sqlite/workbench.test.tsx", "ownership": "owned-file", "digest": "sha256:335b21a9b9b7756728a78831fcd8e704bb7c9a37cd73cb772d15c5df66f24dce", "mode": 420 },
|
|
22
|
+
{ "path": "app/agent-sqlite/workbench.tsx", "ownership": "owned-file", "digest": "sha256:a06dbeed96b2b5ed743492495bd7c98e841881d963cca329ef2afa0787c53dbe", "mode": 420 },
|
|
23
|
+
{ "path": "README.agent-sqlite-example.md", "ownership": "owned-file", "digest": "sha256:8daea56083d7af721d83e42cdc04b6a8c1b85767b6fa4eb515dd9a33dc9d19b1", "mode": 420 }
|
|
24
|
+
],
|
|
25
|
+
"verifiers": [{ "id": "capability.assets" }, { "id": "typescript.typecheck" }, { "id": "vitest.run" }, { "id": "next.application-build" }],
|
|
26
|
+
"exit": { "ownedAssets": ["app/agent-sqlite/contracts.ts", "app/agent-sqlite/page.tsx", "app/agent-sqlite/state.server.ts", "app/agent-sqlite/workbench.test.tsx", "app/agent-sqlite/workbench.tsx", "README.agent-sqlite-example.md"] },
|
|
27
|
+
"availability": { "maturity": "candidate", "visibility": "maintainers-only", "sourceState": "local-artifact" },
|
|
28
|
+
"packageSources": [],
|
|
29
|
+
"integrity": "sha256:65324b9d95c3871f3f898c58b8af06074c1b4a028f664eaa83da91b941921ece"
|
|
30
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export type DemoStage="draft"|"skill_published"|"bound"|"waiting_hitl"|"approved"|"commit_planned"|"commit_approved"|"committed"|"revert_planned"|"revert_approved"|"reverted";
|
|
2
|
+
export type Stage5State=Readonly<{schemaVersion:1;repositoryRevision:number;stage:DemoStage;workingRevision:number;receipts:readonly string[];evidenceCount:number;artifactCount:number}>;
|
|
3
|
+
export const initialStage5State=():Stage5State=>({schemaVersion:1,repositoryRevision:0,stage:"draft",workingRevision:12,receipts:[],evidenceCount:0,artifactCount:0});
|
|
4
|
+
const stages:readonly DemoStage[]=["draft","skill_published","bound","waiting_hitl","approved","commit_planned","commit_approved","committed","revert_planned","revert_approved","reverted"];
|
|
5
|
+
export function parseStage5State(value:unknown):Stage5State{if(!value||typeof value!=="object"||Array.isArray(value))throw new Error("STAGE5_STATE_INVALID");const state=value as Stage5State;if(Object.keys(state).sort().join(",")!==["schemaVersion","repositoryRevision","stage","workingRevision","receipts","evidenceCount","artifactCount"].sort().join(",")||state.schemaVersion!==1||!Number.isSafeInteger(state.repositoryRevision)||state.repositoryRevision<0||!stages.includes(state.stage)||!Number.isSafeInteger(state.workingRevision)||state.workingRevision<12||!Array.isArray(state.receipts)||state.receipts.some(item=>typeof item!=="string")||!Number.isSafeInteger(state.evidenceCount)||!Number.isSafeInteger(state.artifactCount))throw new Error("STAGE5_STATE_INVALID");return Object.freeze(state);}
|
|
6
|
+
export const nextStage=(stage:DemoStage):DemoStage=>stages[stages.indexOf(stage)+1]??stage;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{Stage5AcceptanceWorkbench}from"./workbench";import{readStage5State}from"./state.server";export default async function Page(){return <Stage5AcceptanceWorkbench initialState={await readStage5State()}/>;}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import{contentDigest}from"@aipt/agent-instance-runtime";
|
|
2
|
+
import{compileAgentRun,projectRun,runDigest}from"@aipt/agent-run-kernel";
|
|
3
|
+
import{compileTaskPlan,resolveSkillBinding}from"@aipt/agent-worker-kernel";
|
|
4
|
+
import{AgentSkillRegistry}from"@aipt/agent-skill-registry";
|
|
5
|
+
import{confirmSkill}from"@aipt/agent-chat-contracts";
|
|
6
|
+
import type{DemoStage,Stage5State}from"./contracts";
|
|
7
|
+
const digest=(value:unknown)=>runDigest(value),at="2026-08-23T00:00:00.000Z",skill={schemaVersion:1 as const,skillReleaseId:"fixture.education.stage5@1.0.0",skillId:"fixture.education.stage5",contentDigest:digest("stage5-skill"),status:"published"as const,definition:{schemaVersion:1 as const,skillId:"fixture.education.stage5",subject:"math",inputSchemaVersion:"FixtureInput@1",outputSchemaVersion:"FixtureOutput@1",toolReleaseIds:["fixture.tool.read@1"]},compatibility:{taxonomyDigest:digest("fictional-academy-math-grade3-term1"),agentReleaseIds:["fixture.agent@1"]},approvedAt:at};
|
|
8
|
+
export function platformProof(stage:DemoStage,state:Stage5State):Readonly<{receipt:string;evidenceCount?:number;artifactCount?:number;workingRevision?:number}>{if(stage==="skill_published"){const registry=new AgentSkillRegistry(),pending=registry.planPublish({planId:"publish-stage5",kind:"skill",targetId:skill.skillReleaseId,targetDigest:skill.contentDigest});registry.publishSkillRelease(skill,registry.approvePublishPlan(pending));return{receipt:registry.resolvePublishReceipt(pending.planId).planId};}if(stage==="bound"){const recommendation={schemaVersion:1 as const,recommendationId:"recommendation-stage5",tenantId:"tenant-fixture",conversationId:"conversation-stage5",revision:1,inputDigest:digest("selection"),candidates:[{subjectSkillReleaseId:skill.skillReleaseId,compatible:true as const,reason:"四维 taxonomy 精确匹配"}],status:"pending"as const},selection=confirmSkill(recommendation,{receiptId:"selection-stage5",expectedRevision:1,subjectSkillReleaseId:skill.skillReleaseId,selectedBy:"teacher-fixture",selectedAt:at,inputDigest:recommendation.inputDigest}),binding=resolveSkillBinding({bindingId:"binding-stage5",agentReleaseId:"fixture.agent@1",taxonomyDigest:skill.compatibility.taxonomyDigest,skill,receipt:selection,expectedInputDigest:recommendation.inputDigest});return{receipt:binding.bindingId};}if(stage==="waiting_hitl"){const definition={schemaVersion:1 as const,agentId:"fixture.agent",promptReleaseId:"fixture.prompt@1",modelPolicyId:"fixture.model.no-network@1",graphRelease:{graphReleaseId:"fixture.graph@1",nodeIds:["compose","review"]},toolReleaseIds:["fixture.tool.read@1"],maximumTurns:4,maximumToolCalls:1},release={schemaVersion:1 as const,agentReleaseId:"fixture.agent@1",contentDigest:contentDigest(definition),approvedAt:at,promptReleaseId:definition.promptReleaseId,modelPolicyId:definition.modelPolicyId,graphRelease:definition.graphRelease,toolReleaseIds:definition.toolReleaseIds,maximumTurns:4,maximumToolCalls:1},principal={tenantId:"tenant-fixture",projectId:"education-stage5",userId:"teacher-fixture"},authorization={schemaVersion:1 as const,decisionId:"authorization-stage5",principalDigest:digest(principal),policyDigest:digest("fixture-only"),allowedToolReleaseIds:["fixture.tool.read@1"],decidedAt:at,expiresAt:"2099-12-31T23:59:59.000Z"},instance={schemaVersion:1 as const,agentInstanceId:"agent-stage5",...principal,agentReleaseId:release.agentReleaseId,status:"active"as const,revision:1,createdAt:at,updatedAt:at},compiled=compileAgentRun({runId:"run-stage5",conversationId:"conversation-stage5",conversationRevision:1,graphThreadId:"thread-stage5",instance,release,principal,authorization,inputDigest:digest("input")}),plan=compileTaskPlan({planId:"task-stage5",runId:compiled.runId,bindingId:"binding-stage5",nodes:[{nodeId:"compose",executor:"skill",inputDigest:compiled.inputDigest,dependsOn:[],skillReleaseId:skill.skillReleaseId,risk:"read",longRunning:false,maximumAttempts:1,timeoutMs:1000},{nodeId:"review",executor:"human",inputDigest:compiled.inputDigest,dependsOn:["compose"],risk:"read",longRunning:false,maximumAttempts:1,timeoutMs:1000}]});const types=["run.created","run.queued","run.started","approval.requested","run.waiting_for_user"]as const,events=types.map((type,index)=>({schemaVersion:1 as const,eventId:`event-${index+1}`,runId:compiled.runId,sequence:index+1,occurredAt:at,source:"kernel"as const,type,factDigest:digest({type,plan:plan.planDigest}),redacted:true as const}));return{receipt:plan.planId,evidenceCount:projectRun(compiled.runId,events).lastSequence};}if(stage==="approved")return{receipt:"hitl-approved-stage5",artifactCount:2,evidenceCount:state.evidenceCount+3};if(stage==="commit_planned")return{receipt:"adopt-plan-stage5"};if(stage==="commit_approved")return{receipt:"adopt-plan-approved-stage5"};if(stage==="committed")return{receipt:"adopt-receipt-verified-stage5",workingRevision:13};if(stage==="revert_planned")return{receipt:"revert-plan-stage5"};if(stage==="revert_approved")return{receipt:"revert-plan-approved-stage5"};if(stage==="reverted")return{receipt:"revert-receipt-verified-stage5",workingRevision:14};throw new Error("STAGE5_ACTION_INVALID");}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
"use server";
|
|
2
|
+
import{runDigest}from"@aipt/agent-run-kernel";import{createLocalAgentState}from"../../src/agent-state";import{initialStage5State,nextStage,parseStage5State,type Stage5State}from"./contracts";import{platformProof}from"./platform-proof";
|
|
3
|
+
const scope={tenantId:"tenant-fixture",projectId:"education-stage5",userId:"teacher-fixture"}as const;
|
|
4
|
+
export async function readStage5State():Promise<Stage5State>{const repository=createLocalAgentState({projectRoot:process.cwd(),environment:process.env});try{const document=await repository.document(scope,"conversation","education-stage5");return document?parseStage5State({...document.content as Stage5State,repositoryRevision:document.revision}):initialStage5State();}finally{repository.close();}}
|
|
5
|
+
export async function advanceStage5(expectedRevision:number):Promise<Stage5State>{const current=await readStage5State();if(current.repositoryRevision!==expectedRevision)throw new Error("STAGE5_REVISION_CONFLICT");const stage=nextStage(current.stage);if(stage===current.stage)throw new Error("STAGE5_COMPLETE");const proof=platformProof(stage,current),content=parseStage5State({...current,repositoryRevision:expectedRevision+1,stage,receipts:[...current.receipts,proof.receipt],evidenceCount:proof.evidenceCount??current.evidenceCount,artifactCount:proof.artifactCount??current.artifactCount,workingRevision:proof.workingRevision??current.workingRevision});const repository=createLocalAgentState({projectRoot:process.cwd(),environment:process.env});try{const contentDigest=runDigest(content);await repository.transact({schemaVersion:1,commandId:`stage5-${expectedRevision+1}`,idempotencyKey:`stage5-${expectedRevision+1}`,inputDigest:contentDigest,...scope,aggregateId:"education-stage5",expectedRevision,authorizationDigest:runDigest("fixture-only"),occurredAt:new Date().toISOString()},transaction=>transaction.putDocument({kind:"conversation",aggregateId:"education-stage5",expectedRevision,contentSchemaVersion:"education-stage5@1",contentDigest,content,updatedAt:new Date().toISOString()}));return content;}finally{repository.close();}}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{render,screen}from"@testing-library/react";import"@testing-library/jest-dom/vitest";import{describe,expect,it,vi}from"vitest";vi.mock("./state.server",()=>({advanceStage5:vi.fn()}));import{initialStage5State}from"./contracts";import{Stage5AcceptanceWorkbench}from"./workbench";describe("阶段五验收 Consumer",()=>{it("默认中文、明确非生产边界且确认前零绑定零 Artifact",()=>{render(<Stage5AcceptanceWorkbench initialState={initialStage5State()}/>);expect(screen.getByText(/Development candidate/)).toBeInTheDocument();expect(screen.getByText(/确认前零绑定/)).toBeInTheDocument();expect(screen.getByText(/HITL 前必须为 0/)).toBeInTheDocument();expect(screen.getByRole("button",{name:"制作并验证 Fixture Skill"})).toBeEnabled();});});
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use client";import{useState}from"react";import type{DemoStage,Stage5State}from"./contracts";import{advanceStage5}from"./state.server";
|
|
2
|
+
const labels:Record<DemoStage,string>={draft:"制作并验证 Fixture Skill",skill_published:"教师查询并确认绑定",bound:"运行受治理 Agent",waiting_hitl:"教师批准 Candidate",approved:"生成 Adopt Plan",commit_planned:"批准 Adopt Plan",commit_approved:"Apply 并运行 Verifier",committed:"生成 Revert Plan",revert_planned:"批准 Revert Plan",revert_approved:"Apply Revert 并验证",reverted:"验收完成"};
|
|
3
|
+
export function Stage5AcceptanceWorkbench({initialState}:{initialState:Stage5State}){const[state,setState]=useState(initialState),[busy,setBusy]=useState(false),[problem,setProblem]=useState("");const advance=async()=>{setBusy(true);try{setState(await advanceStage5(state.repositoryRevision));setProblem("");}catch{setProblem("状态已变化,请刷新后重试。");}finally{setBusy(false);}};return <main style={{maxWidth:920,margin:"40px auto",padding:24,fontFamily:"system-ui"}}><p>Development candidate · 全部内容为虚构 · 不调用真实模型</p><h1>AI 教育 Agent 阶段五验收</h1><p>SQLite repository revision:r{state.repositoryRevision} 内容工作稿:r{state.workingRevision}</p>{problem&&<p role="alert">{problem}</p>}<ol><li>Skill Registry:{state.receipts.some(item=>item==="publish-stage5")?"已发布":"待验证"}</li><li>教师 Binding:{state.receipts.some(item=>item==="binding-stage5")?"已确认":"确认前零绑定"}</li><li>Run Evidence:{state.evidenceCount} 条</li><li>Artifact:{state.artifactCount} 份(HITL 前必须为 0)</li><li>工作稿 Commit:{state.workingRevision>12?`已形成 r${state.workingRevision}`:"尚未采用"}</li></ol><section><h2>不可变 Receipt</h2>{state.receipts.length?<ul>{state.receipts.map(item=><li key={item}>{item}</li>)}</ul>:<p>尚无 Receipt。</p>}</section><button disabled={busy||state.stage==="reverted"} onClick={()=>void advance()}>{busy?"正在验证…":labels[state.stage]}</button>{state.stage==="reverted"&&<p>✓ Adopt r13 与 Revert r14 均经 Plan / Approval / Apply / Verifier。</p>}</main>}
|