@inneranimalmedia/agentsam-sdk 2.6.7 → 2.6.9

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.
Files changed (371) hide show
  1. package/README.md +37 -0
  2. package/apps/README.md +25 -0
  3. package/apps/cad-creator/shared/cad/package.json +1 -1
  4. package/apps/client-cms-editor/backend/package.json +4 -6
  5. package/apps/client-cms-editor/frontend/package.json +6 -8
  6. package/apps/client-cms-editor/frontend/tsconfig.json +27 -8
  7. package/apps/client-cms-editor/package.json +1 -1
  8. package/apps/client-cms-editor/shared/cms/package.json +4 -6
  9. package/docs/LOCAL_ENGINE_COMPUTE_AUDIT_PLAN.md +299 -0
  10. package/docs/REPO_FILE_MAP.txt +132 -0
  11. package/migrations/d1/0018_goap_control_plane_remaster.sql +40 -0
  12. package/migrations/d1/0019_agentsam_agent_run_plan_todo.sql +14 -0
  13. package/migrations/d1/README_PORTABLE_CONTROL_PLANE.md +20 -9
  14. package/migrations/runtime/0002_goap_blackboard_v1.sql +15 -0
  15. package/migrations/runtime/0004_agent_run_plan_linkage.sql +8 -0
  16. package/native/agentsam-machine/cli/Cargo.toml +8 -1
  17. package/native/agentsam-machine/cli/README.md +21 -0
  18. package/native/agentsam-machine/core/Cargo.toml +7 -0
  19. package/native/agentsam-machine/core/README.md +14 -0
  20. package/native/agentsam-machine/core/build.rs +33 -0
  21. package/native/agentsam-machine/core/contracts/source-types.v1.json +353 -0
  22. package/native/agentsam-machine/core/src/lib.rs +6 -0
  23. package/native/agentsam-machine/core/src/source_types.rs +2 -2
  24. package/package.json +31 -10
  25. package/packages/agentsam-brand/package.json +1 -1
  26. package/packages/agentsam-contracts/package.json +71 -20
  27. package/packages/agentsam-contracts/scripts/build.mjs +18 -0
  28. package/packages/agentsam-contracts/test/contracts.test.mjs +4 -1
  29. package/packages/agentsam-contracts/test/repository.test.mjs +4 -1
  30. package/packages/agentsam-contracts/tsconfig.build.json +10 -0
  31. package/packages/agentsam-errors/package.json +3 -2
  32. package/packages/agentsam-errors/src/index.js +1 -0
  33. package/packages/agentsam-errors/src/tool.js +56 -0
  34. package/packages/agentsam-errors/test/tool.test.mjs +58 -0
  35. package/packages/agentsam-goap/README.md +52 -0
  36. package/packages/agentsam-goap/package.json +37 -0
  37. package/packages/agentsam-goap/src/adapters/d1-sqlite.js +570 -0
  38. package/packages/agentsam-goap/src/adapters/memory.js +199 -0
  39. package/packages/agentsam-goap/src/contracts.js +226 -0
  40. package/packages/agentsam-goap/src/control-plane.js +112 -0
  41. package/packages/agentsam-goap/src/errors.js +157 -0
  42. package/packages/agentsam-goap/src/index.js +5 -0
  43. package/packages/agentsam-goap/src/world.js +202 -0
  44. package/packages/agentsam-goap/test/goap-control-plane.test.mjs +245 -0
  45. package/packages/agentsam-goap/test/world.test.mjs +79 -0
  46. package/packages/agentsam-knowledge/package.json +3 -2
  47. package/packages/agentsam-nav/package.json +1 -1
  48. package/packages/agentsam-queue-control/package.json +1 -1
  49. package/packages/agentsam-rapid-rust/src/main.rs +1 -0
  50. package/packages/agentsam-repository/package.json +3 -2
  51. package/packages/agentsam-repository/src/goap.js +13 -14
  52. package/packages/agentsam-repository/src/tickets.js +15 -22
  53. package/packages/agentsam-repository/test/goap-tickets-workspace-state.test.mjs +19 -8
  54. package/packages/agentsam-vault/package.json +8 -5
  55. package/packages/agentsam-workbench/package.json +44 -17
  56. package/packages/connectors/cloudflare/package.json +4 -2
  57. package/packages/heuristic-theme/package.json +1 -1
  58. package/packages/identity/package.json +4 -3
  59. package/packages/identity/tests/lane1-packed-consumer.test.mjs +10 -2
  60. package/packages/providers/completeful/package.json +1 -1
  61. package/packages/theme-church-site/README.md +2 -2
  62. package/packages/theme-church-site/package.json +3 -4
  63. package/packages/theme-church-site/src/index.js +1 -1
  64. package/packages/theme-church-site/test/theme.test.mjs +1 -1
  65. package/packages/theme-companions-site/README.md +2 -2
  66. package/packages/theme-companions-site/package.json +3 -4
  67. package/packages/theme-companions-site/src/index.js +1 -1
  68. package/packages/theme-companions-site/test/theme.test.mjs +1 -1
  69. package/packages/theme-floors-site/README.md +2 -2
  70. package/packages/theme-floors-site/package.json +3 -4
  71. package/packages/theme-floors-site/src/index.js +1 -1
  72. package/packages/theme-floors-site/test/theme.test.mjs +1 -1
  73. package/packages/theme-fuelnfree-site/README.md +2 -2
  74. package/packages/theme-fuelnfree-site/package.json +3 -4
  75. package/packages/theme-fuelnfree-site/src/index.js +1 -1
  76. package/packages/theme-fuelnfree-site/test/theme.test.mjs +1 -1
  77. package/packages/theme-handyman-site/README.md +2 -2
  78. package/packages/theme-handyman-site/package.json +3 -4
  79. package/packages/theme-handyman-site/src/index.js +1 -1
  80. package/packages/theme-handyman-site/test/theme.test.mjs +1 -1
  81. package/packages/theme-insurance-site/README.md +2 -2
  82. package/packages/theme-insurance-site/package.json +3 -4
  83. package/packages/theme-insurance-site/src/index.js +1 -1
  84. package/packages/theme-insurance-site/test/theme.test.mjs +1 -1
  85. package/packages/theme-scenes/package.json +1 -1
  86. package/packages/theme-shinshu-site/README.md +2 -2
  87. package/packages/theme-shinshu-site/package.json +3 -4
  88. package/packages/theme-shinshu-site/src/index.js +1 -1
  89. package/packages/theme-shinshu-site/test/theme.test.mjs +1 -1
  90. package/packages/work-graph/package.json +3 -2
  91. package/protocol/local-engine/benchmark.v1.schema.json +14 -0
  92. package/protocol/local-engine/engine.v1.schema.json +17 -0
  93. package/python/agentsam_sdk/repository/intelligence/discovery.py +27 -2
  94. package/python/agentsam_sdk/repository/intelligence/git.py +4 -0
  95. package/python/tests/test_repository_intelligence.py +30 -0
  96. package/src/cli/command-catalog.js +3 -1
  97. package/src/cli.js +20 -1
  98. package/src/commands/app.js +10 -0
  99. package/src/commands/engine.js +10 -0
  100. package/src/commands/goap-world.js +134 -0
  101. package/src/commands/goap.js +11 -4
  102. package/src/commands/machine-binary.js +33 -27
  103. package/src/commands/machine-runtime.js +266 -0
  104. package/src/commands/machine.js +155 -51
  105. package/src/commands/package.js +537 -0
  106. package/src/commands/plan-ledger.js +370 -0
  107. package/src/commands/plan.js +183 -0
  108. package/src/commands/runtime.js +25 -10
  109. package/src/commands/setup.js +30 -6
  110. package/src/commands/skill.js +78 -17
  111. package/src/commands/terminal.js +20 -8
  112. package/src/errors/contract.js +4 -4
  113. package/src/errors/diagnostic.js +1 -1
  114. package/src/errors/index.js +1 -1
  115. package/src/index.js +20 -0
  116. package/src/indexing/ingest/materials.js +237 -30
  117. package/src/knowledge/source.js +1 -1
  118. package/src/lib/setup/runtime.js +4 -2
  119. package/src/lib/slash-commands.js +1 -1
  120. package/src/local/runtime-store.js +24 -2
  121. package/src/local/sqlite.js +17 -0
  122. package/src/local-engine/assets.js +37 -0
  123. package/src/local-engine/audit.js +133 -0
  124. package/src/local-engine/benchmark.js +26 -0
  125. package/src/local-engine/contracts.js +101 -0
  126. package/src/local-engine/engines.js +142 -0
  127. package/src/local-engine/index.js +18 -0
  128. package/src/local-engine/runtime.js +39 -0
  129. package/src/sam/operations/package-audit.js +41 -0
  130. package/src/sam/seed.js +2 -0
  131. package/skills/grok-auth/SKILL.md +0 -110
  132. package/skills/grok-auth/agentsam.skill.json +0 -25
  133. package/skills/grok-auth/references/grok-identity.md +0 -64
  134. package/skills/grok-auth/references/per-user-data.md +0 -49
  135. package/skills/grok-auth/references/prewired-and-env.md +0 -54
  136. package/skills/grok-auth/references/session-ui.md +0 -133
  137. package/skills/grok-auth/references/sign-in-methods.md +0 -55
  138. package/skills/grok-auth/references/wiring.md +0 -71
  139. package/skills/grok-building-games/SKILL.md +0 -213
  140. package/skills/grok-building-games/agentsam.skill.json +0 -25
  141. package/skills/grok-building-games/references/3d-libs.md +0 -64
  142. package/skills/grok-building-games/references/ai-pathfinding.md +0 -122
  143. package/skills/grok-building-games/references/audio.md +0 -129
  144. package/skills/grok-building-games/references/babylon.md +0 -202
  145. package/skills/grok-building-games/references/collision-physics.md +0 -122
  146. package/skills/grok-building-games/references/ecs-architecture.md +0 -111
  147. package/skills/grok-building-games/references/game-feel-juice.md +0 -110
  148. package/skills/grok-building-games/references/genres/board-card-chess.md +0 -89
  149. package/skills/grok-building-games/references/genres/endless-runner.md +0 -83
  150. package/skills/grok-building-games/references/genres/fps.md +0 -105
  151. package/skills/grok-building-games/references/genres/platformer-2d.md +0 -97
  152. package/skills/grok-building-games/references/genres/puzzle-match3-tetris.md +0 -131
  153. package/skills/grok-building-games/references/genres/racing-kart.md +0 -106
  154. package/skills/grok-building-games/references/genres/topdown-twin-stick.md +0 -97
  155. package/skills/grok-building-games/references/genres/tower-defense.md +0 -84
  156. package/skills/grok-building-games/references/genres/voxel-minecraft.md +0 -89
  157. package/skills/grok-building-games/references/input.md +0 -139
  158. package/skills/grok-building-games/references/phaser.md +0 -277
  159. package/skills/grok-building-games/references/procedural-generation.md +0 -141
  160. package/skills/grok-building-games/references/save-persistence.md +0 -108
  161. package/skills/grok-building-games/references/threejs-foundational.md +0 -148
  162. package/skills/grok-controls/SKILL.md +0 -274
  163. package/skills/grok-controls/agentsam.skill.json +0 -25
  164. package/skills/grok-design-ui/SKILL.md +0 -122
  165. package/skills/grok-design-ui/agentsam.skill.json +0 -25
  166. package/skills/grok-design-ui/references/animations.md +0 -379
  167. package/skills/grok-design-ui/references/performance.md +0 -88
  168. package/skills/grok-design-ui/references/refined-ui.md +0 -384
  169. package/skills/grok-design-ui/references/surfaces.md +0 -247
  170. package/skills/grok-design-ui/references/typography.md +0 -123
  171. package/skills/grok-game-animation-frames/SKILL.md +0 -84
  172. package/skills/grok-game-animation-frames/agentsam.skill.json +0 -25
  173. package/skills/grok-game-asset-core/SKILL.md +0 -69
  174. package/skills/grok-game-asset-core/agentsam.skill.json +0 -25
  175. package/skills/grok-game-character-consistency/SKILL.md +0 -69
  176. package/skills/grok-game-character-consistency/agentsam.skill.json +0 -25
  177. package/skills/grok-game-tilesets/SKILL.md +0 -65
  178. package/skills/grok-game-tilesets/agentsam.skill.json +0 -25
  179. package/skills/grok-game-ui-icons/SKILL.md +0 -56
  180. package/skills/grok-game-ui-icons/agentsam.skill.json +0 -25
  181. package/skills/grok-generate2dmap/LICENSE +0 -21
  182. package/skills/grok-generate2dmap/SKILL.md +0 -120
  183. package/skills/grok-generate2dmap/SOURCE.md +0 -6
  184. package/skills/grok-generate2dmap/agentsam.skill.json +0 -25
  185. package/skills/grok-generate2dmap/references/deliverables.md +0 -101
  186. package/skills/grok-generate2dmap/references/layered-map-contract.md +0 -209
  187. package/skills/grok-generate2dmap/references/map-strategies.md +0 -341
  188. package/skills/grok-generate2dmap/references/object-production-gate.md +0 -24
  189. package/skills/grok-generate2dmap/references/pipeline.md +0 -149
  190. package/skills/grok-generate2dmap/references/prop-pack-contract.md +0 -174
  191. package/skills/grok-generate2dmap/references/side-scroll-stages.md +0 -29
  192. package/skills/grok-generate2dmap/scripts/compose_layered_preview.py +0 -157
  193. package/skills/grok-generate2dmap/scripts/extract_prop_pack.py +0 -369
  194. package/skills/grok-generate2dsprite/LICENSE +0 -21
  195. package/skills/grok-generate2dsprite/SKILL.md +0 -313
  196. package/skills/grok-generate2dsprite/SOURCE.md +0 -6
  197. package/skills/grok-generate2dsprite/agentsam.skill.json +0 -25
  198. package/skills/grok-generate2dsprite/references/modes.md +0 -124
  199. package/skills/grok-generate2dsprite/references/prompt-rules.md +0 -315
  200. package/skills/grok-generate2dsprite/scripts/generate2dsprite.py +0 -1031
  201. package/skills/grok-generate2dsprite/scripts/make_layout_guide.py +0 -109
  202. package/skills/grok-imagine/SKILL.md +0 -201
  203. package/skills/grok-imagine/agentsam.skill.json +0 -25
  204. package/skills/grok-multiplayer-p2p/SKILL.md +0 -111
  205. package/skills/grok-multiplayer-p2p/agentsam.skill.json +0 -25
  206. package/skills/grok-multiplayer-p2p/references/react-binding.md +0 -144
  207. package/skills/grok-multiplayer-p2p/references/signaling-relay.md +0 -269
  208. package/skills/grok-neon/SKILL.md +0 -157
  209. package/skills/grok-neon/agentsam.skill.json +0 -25
  210. package/skills/grok-og/SKILL.md +0 -102
  211. package/skills/grok-og/agentsam.skill.json +0 -25
  212. package/skills/grok-og/references/brand-pass.md +0 -53
  213. package/skills/grok-og/references/custom-card.md +0 -107
  214. package/skills/grok-og/references/favicon-and-icons.md +0 -48
  215. package/skills/grok-og/references/og-type-contract.md +0 -18
  216. package/skills/grok-og/references/placeholder-card.md +0 -21
  217. package/skills/grok-og/references/x-banner.md +0 -41
  218. package/skills/grok-threejs/SKILL.md +0 -67
  219. package/skills/grok-threejs/agentsam.skill.json +0 -25
  220. package/skills/grok-threejs/references/llms-full.txt +0 -2780
  221. package/skills/grok-video2dsprite/LICENSE +0 -21
  222. package/skills/grok-video2dsprite/SKILL.md +0 -236
  223. package/skills/grok-video2dsprite/SOURCE.md +0 -6
  224. package/skills/grok-video2dsprite/agentsam.skill.json +0 -25
  225. package/skills/grok-video2dsprite/references/pipeline.md +0 -90
  226. package/skills/grok-video2dsprite/references/prompt-rules.md +0 -63
  227. package/skills/grok-video2dsprite/scripts/video2dsprite.py +0 -490
  228. package/skills/grok-xai-api/SKILL.md +0 -152
  229. package/skills/grok-xai-api/agentsam.skill.json +0 -25
  230. package/test/account-session.test.mjs +0 -101
  231. package/test/agent-capabilities.test.mjs +0 -67
  232. package/test/app-authority-context.test.mjs +0 -32
  233. package/test/app-building-skills.test.mjs +0 -61
  234. package/test/apps-scaffold-contract.test.mjs +0 -115
  235. package/test/blender-cad.test.mjs +0 -146
  236. package/test/cad-docker.test.mjs +0 -96
  237. package/test/capabilities.test.mjs +0 -133
  238. package/test/cli/api-key-env-whoami.test.mjs +0 -129
  239. package/test/cli/catalog-authority.test.mjs +0 -64
  240. package/test/cli/codebaseindex-plan-ux.test.mjs +0 -37
  241. package/test/cli/eval-live.test.mjs +0 -219
  242. package/test/cli/go.test.mjs +0 -128
  243. package/test/cli/local-vault-and-provider-setup.test.mjs +0 -268
  244. package/test/cli/machine-command.test.mjs +0 -34
  245. package/test/cli/mcp-client.test.mjs +0 -256
  246. package/test/cli/preferences-runtime.test.mjs +0 -11
  247. package/test/cli/runtime-persist.test.mjs +0 -56
  248. package/test/cli/runtime-ui.test.mjs +0 -141
  249. package/test/cli/rust-command.test.mjs +0 -21
  250. package/test/cli/skill-npm-and-env.test.mjs +0 -52
  251. package/test/cli/status-actions.test.mjs +0 -88
  252. package/test/cli/wireframes-go-registry.test.mjs +0 -139
  253. package/test/cli-preferences.test.mjs +0 -46
  254. package/test/cloudflare-connector.test.mjs +0 -93
  255. package/test/cloudflare-runtime.test.mjs +0 -82
  256. package/test/context.test.mjs +0 -159
  257. package/test/credentials-audit.test.mjs +0 -113
  258. package/test/deploy-health-scan.test.mjs +0 -95
  259. package/test/deploy-receipt.test.mjs +0 -91
  260. package/test/dockerize.test.mjs +0 -93
  261. package/test/error-diagnostics.test.mjs +0 -124
  262. package/test/eval-context.test.mjs +0 -37
  263. package/test/execution-approvals.test.mjs +0 -27
  264. package/test/fixtures/cad/courtyard-house.json +0 -208
  265. package/test/fixtures/knowledge-rpc-worker.mjs +0 -16
  266. package/test/fixtures/project-authority/customer-app/.agentsam/app.json +0 -5
  267. package/test/fixtures/project-authority/customer-app/apps/my-product/index.ts +0 -1
  268. package/test/fixtures/project-authority/customer-app/wrangler.toml +0 -17
  269. package/test/gcloud-auth.test.mjs +0 -111
  270. package/test/go/build-source-identity.test.mjs +0 -31
  271. package/test/go/cloudflare-probe.test.mjs +0 -317
  272. package/test/go/distribution.test.mjs +0 -28
  273. package/test/google-cloud-connection.test.mjs +0 -83
  274. package/test/google-cloud-inventory.test.mjs +0 -64
  275. package/test/indexing-provider.test.mjs +0 -29
  276. package/test/init-options.test.mjs +0 -35
  277. package/test/integration/ai-access-onboarding.test.mjs +0 -47
  278. package/test/integration/app-command.test.mjs +0 -85
  279. package/test/integration/autorag-project-authority.integration.test.mjs +0 -51
  280. package/test/integration/autorag-runtime-discovery.test.mjs +0 -107
  281. package/test/integration/cad-discovery.test.mjs +0 -158
  282. package/test/integration/cad-docker-executor.test.mjs +0 -249
  283. package/test/integration/cad-execution.test.mjs +0 -184
  284. package/test/integration/cad-project-app.test.mjs +0 -31
  285. package/test/integration/cad-project-d1.test.mjs +0 -25
  286. package/test/integration/cad-project-native.test.mjs +0 -24
  287. package/test/integration/cad-project-workflow.test.mjs +0 -9
  288. package/test/integration/cad-project.test.mjs +0 -85
  289. package/test/integration/cli-help.test.mjs +0 -41
  290. package/test/integration/cms-app-scaffold.test.mjs +0 -77
  291. package/test/integration/cms-site-tenancy-contract.test.mjs +0 -268
  292. package/test/integration/codebaseindex-ingest.test.mjs +0 -255
  293. package/test/integration/core-client.integration.test.mjs +0 -55
  294. package/test/integration/database-hosted-honesty.test.mjs +0 -49
  295. package/test/integration/desktop-keychain-boundary.test.mjs +0 -45
  296. package/test/integration/error-runtime-rpc.test.mjs +0 -71
  297. package/test/integration/features-resolve.test.mjs +0 -147
  298. package/test/integration/hosted-work-host-authority.test.mjs +0 -47
  299. package/test/integration/icon-registry.test.mjs +0 -67
  300. package/test/integration/ingest-discover-models.test.mjs +0 -30
  301. package/test/integration/inspect-path-cli.test.mjs +0 -46
  302. package/test/integration/install-script.test.mjs +0 -110
  303. package/test/integration/inventory-core.test.mjs +0 -53
  304. package/test/integration/inventory-eligibility.test.mjs +0 -59
  305. package/test/integration/inventory-evidence.test.mjs +0 -125
  306. package/test/integration/knowledge-rpc.test.mjs +0 -112
  307. package/test/integration/local-fs.test.mjs +0 -113
  308. package/test/integration/local-provider-bridge.test.mjs +0 -65
  309. package/test/integration/local-studio-settings-production.test.mjs +0 -40
  310. package/test/integration/lockfile-sync.test.mjs +0 -26
  311. package/test/integration/merkle-cli.test.mjs +0 -61
  312. package/test/integration/merkle-persistence-identity.test.mjs +0 -48
  313. package/test/integration/plugins-cloudflare.integration.test.mjs +0 -28
  314. package/test/integration/provider-env-cli.test.mjs +0 -60
  315. package/test/integration/provider-factory.test.mjs +0 -197
  316. package/test/integration/repository-company-graph.test.mjs +0 -90
  317. package/test/integration/runtime-migrations.test.mjs +0 -87
  318. package/test/integration/runtime-status.integration.test.mjs +0 -227
  319. package/test/integration/sam-activity-recovery.test.mjs +0 -147
  320. package/test/integration/sam-decision.test.mjs +0 -584
  321. package/test/integration/sam-kernel.test.mjs +0 -99
  322. package/test/integration/sam-planning-astar.test.mjs +0 -279
  323. package/test/integration/scaffold-cloudflare.test.mjs +0 -46
  324. package/test/integration/skill-runtime.test.mjs +0 -240
  325. package/test/integration/storage-architecture.test.mjs +0 -154
  326. package/test/integration/store-discovery.test.mjs +0 -44
  327. package/test/integration/studio-fs-pty-e2e.test.mjs +0 -294
  328. package/test/integration/terminal-exec.integration.test.mjs +0 -86
  329. package/test/integration/theme-package-registry.test.mjs +0 -31
  330. package/test/integration/tool-runtime.test.mjs +0 -124
  331. package/test/integration/tool-schema.test.mjs +0 -59
  332. package/test/jr-dev-skill.test.mjs +0 -26
  333. package/test/knowledge-context-pack.test.mjs +0 -19
  334. package/test/knowledge-postgres.test.mjs +0 -40
  335. package/test/knowledge-service.test.mjs +0 -110
  336. package/test/knowledge.test.mjs +0 -206
  337. package/test/live/terminal-transport.live.test.mjs +0 -24
  338. package/test/local-sessions.test.mjs +0 -57
  339. package/test/local-studio-deploy.test.mjs +0 -83
  340. package/test/loopback-oauth.test.mjs +0 -53
  341. package/test/merkle-render.test.mjs +0 -31
  342. package/test/mini.test.mjs +0 -140
  343. package/test/model-catalog.test.mjs +0 -70
  344. package/test/models.test.mjs +0 -309
  345. package/test/npm10-lock.test.mjs +0 -29
  346. package/test/ollama.test.mjs +0 -137
  347. package/test/open-url.test.mjs +0 -64
  348. package/test/openai-responses.test.mjs +0 -155
  349. package/test/portable-context.test.mjs +0 -94
  350. package/test/project-config.test.mjs +0 -81
  351. package/test/project-rules.test.mjs +0 -44
  352. package/test/provider-credentials.test.mjs +0 -106
  353. package/test/rehydrate.test.mjs +0 -25
  354. package/test/release-hygiene.test.mjs +0 -42
  355. package/test/repository-snapshot-view.test.mjs +0 -112
  356. package/test/responses-runner.test.mjs +0 -465
  357. package/test/runtime-activity.test.mjs +0 -98
  358. package/test/sdk-worker-contract.test.mjs +0 -72
  359. package/test/security.test.mjs +0 -266
  360. package/test/setup-planner.test.mjs +0 -74
  361. package/test/setup-runtime.test.mjs +0 -51
  362. package/test/shell.test.mjs +0 -281
  363. package/test/skills.test.mjs +0 -22
  364. package/test/smoke.mjs +0 -122
  365. package/test/telemetry.test.mjs +0 -79
  366. package/test/terminal/local-pty.mock.test.mjs +0 -153
  367. package/test/terminal-machine-identity.test.mjs +0 -88
  368. package/test/theme-portability.test.mjs +0 -14
  369. package/test/tools-search.test.mjs +0 -73
  370. package/test/unit/website-assets-bindings.test.mjs +0 -60
  371. package/test/whoami-resume.test.mjs +0 -157
@@ -1,227 +0,0 @@
1
- import assert from 'node:assert/strict';
2
- import path from 'node:path';
3
- import test from 'node:test';
4
- import {
5
- collectCloudflareDeploymentStatus,
6
- readCloudflareDeploymentContract,
7
- parseWranglerToml,
8
- resolveProjectD1Database,
9
- } from '../../src/cloudflare/runtime-status.js';
10
- import { collectRuntimeStatus } from '../../src/commands/runtime-status.js';
11
- import { readProjectConfig } from '../../src/lib/project-config.js';
12
- import { runStatus } from '../../src/commands/status.js';
13
- import { renderRuntimeStatus } from '../../src/ui/ansi.js';
14
-
15
- const root = path.resolve(new URL('../..', import.meta.url).pathname);
16
-
17
- test('Wrangler TOML parser preserves Vectorize declarations', () => {
18
- const parsed = parseWranglerToml([
19
- 'name = "demo"',
20
- '[ai]',
21
- 'binding = "AGENTSAM_WAI"',
22
- '',
23
- '[[vectorize]]',
24
- 'binding = "SEARCH_INDEX"',
25
- 'index_name = "demo-search-1024"',
26
- ].join('\n'));
27
- assert.deepEqual(parsed.vectorize, [{ binding: 'SEARCH_INDEX', index_name: 'demo-search-1024' }]);
28
- assert.equal(parsed.ai.binding, 'AGENTSAM_WAI');
29
- });
30
-
31
- test('checked-in Cloudflare deployment contract resolves the real Worker and portable bindings', () => {
32
- const contract = readCloudflareDeploymentContract(root, readProjectConfig(root));
33
- assert.equal(contract.worker_name, 'agentsam-sdk');
34
- assert.equal(contract.config, 'apps/local-studio/backend/wrangler.jsonc');
35
- assert.deepEqual(contract.bindings.map((row) => row.name), [
36
- 'AGENTSAM_WAI', 'ASSETS', 'CLOUDFLARE_ACCOUNT_ID', 'DB', 'EXECOS',
37
- 'GITHUB_APP_ID', 'GITHUB_CLIENT_ID', 'GOOGLE_CLIENT_ID', 'GOOGLE_DESKTOP_CLIENT_ID',
38
- 'HYPERDRIVE', 'IAM_CLIENT_ID',
39
- 'IAM_OAUTH_ISSUER', 'PTY_SERVICE', 'WEBSITE_ASSETS',
40
- ]);
41
- });
42
-
43
- test('Cloudflare runtime status compares the active deployed version to the checked-in binding contract', async () => {
44
- const projectConfig = readProjectConfig(root);
45
- const contract = readCloudflareDeploymentContract(root, projectConfig);
46
- const liveBindings = contract.bindings.map((row) => ({ name: row.name, type: row.type }));
47
- liveBindings.push({ name: 'OPENAI_API_KEY', type: 'secret_text' });
48
- const calls = [];
49
- const result = await collectCloudflareDeploymentStatus({
50
- root,
51
- projectConfig,
52
- runWrangler: async (command, input) => {
53
- calls.push({ command, input });
54
- if (command === 'whoami') return { data: { loggedIn: true } };
55
- if (command === 'deployments.list') return { data: [{ id: 'dep_1', created_on: '2026-09-18T12:00:00Z', versions: [{ version_id: 'ver_1', percentage: 100 }] }] };
56
- if (command === 'versions.list') return { data: [{ id: 'ver_1', metadata: { created_on: '2026-09-18T12:00:00Z' } }] };
57
- if (command === 'versions.view') return { data: { id: 'ver_1', number: 37, metadata: { created_on: '2026-09-18T12:00:00Z', source: 'wrangler' }, resources: { bindings: liveBindings } } };
58
- throw new Error(`unexpected:${command}`);
59
- },
60
- fetchImpl: async () => ({ ok: true, status: 200, async json() { return { ok: true, app: 'agentsam-sdk' }; } }),
61
- });
62
- assert.equal(result.connected, true);
63
- assert.equal(result.bindings.match, true);
64
- assert.equal(result.version.number, 37);
65
- assert.equal(result.health.ok, true);
66
- assert.equal(calls.find((row) => row.command === 'versions.view').input.version_id, 'ver_1');
67
- });
68
-
69
- test('unified status is ready only when account, model, terminal, deployment and health are real', async () => {
70
- const local = {
71
- root, project: 'agentsam-sdk', configured: true, git: { branch: 'main', revision: 'abc123', dirty: false },
72
- pty: { online: false, url: 'http://127.0.0.1:3099/health' }, api: { online: false }, db: { ready: true, tables: [] },
73
- };
74
- const status = await collectRuntimeStatus({
75
- cwd: root,
76
- collectLocal: async () => local,
77
- collectIdentity: async () => ({ authenticated: true, active_auth: { kind: 'browser_oauth' }, identity: { account_id: 'acct_1' }, api_key: {} }),
78
- collectModels: async () => ({ providers: [{ id: 'openai', configured: true }], providerModels: { openai: [{ provider_model_id: 'gpt-test' }] }, local: { online: false, models: [] } }),
79
- collectTerminal: async () => ({ connected: true, instances: [{ id: 'inst_1' }], connections: [{ id: 'conn_1', active: true, default: true, health: 'online' }], error: null }),
80
- collectCloudflare: async () => ({ configured: true, connected: true, worker_name: 'agentsam-sdk', bindings: { match: true, live: [] }, health: { ok: true, status: 200 } }),
81
- });
82
- assert.equal(status.ready, true);
83
- assert.equal(status.local_ready, true);
84
- assert.equal(status.state_storage.actor_runtime, 'none');
85
- assert.deepEqual(status.checks, { account: true, models: true, terminal: true, cloudflare: true });
86
- assert.equal(status.model_summary.verified_provider_models, 1);
87
- });
88
-
89
- test('fresh local project can start before SQLite has been initialized', async () => {
90
- const status = await collectRuntimeStatus({
91
- cwd: root,
92
- collectLocal: async () => ({ root, project: 'agentsam-sdk', configured: false, git: null, pty: { online: false }, api: {}, db: { exists: false, ready: false } }),
93
- collectIdentity: async () => ({ authenticated: false, active_auth: {}, api_key: {} }),
94
- collectModels: async () => ({ providers: [], providerModels: {}, local: { online: false, models: [] } }),
95
- collectCloudflare: async () => ({ configured: false, bindings: { live: [] } }),
96
- });
97
- assert.equal(status.local_ready, true);
98
- assert.equal(status.state_storage.migrated, false);
99
- assert.equal(status.state_storage.runtime, 'sqlite');
100
- });
101
-
102
- test('unified status consumes the CLI-authorized terminal inventory returned by IAM context', async () => {
103
- let legacyTerminalCalls = 0;
104
- const status = await collectRuntimeStatus({
105
- cwd: root,
106
- collectLocal: async () => ({ root, project: 'agentsam-sdk', configured: true, git: null, pty: { online: false }, api: {}, db: {} }),
107
- collectIdentity: async () => ({
108
- authenticated: true,
109
- active_auth: { kind: 'browser_oauth' },
110
- api_key: {},
111
- terminal: {
112
- available: true,
113
- instances: [{ id: 'inst_1', kind: 'local_device' }],
114
- connections: [{ id: 'conn_1', instance_id: 'inst_1', is_active: true, is_default: true, health_status: 'online' }],
115
- },
116
- }),
117
- collectModels: async () => ({ providers: [], providerModels: { openai: [{ provider_model_id: 'gpt-test' }] }, local: { online: false, models: [] } }),
118
- collectTerminal: async () => { legacyTerminalCalls += 1; return { connected: false, instances: [], connections: [] }; },
119
- collectCloudflare: async () => ({ configured: false }),
120
- });
121
- assert.equal(legacyTerminalCalls, 0);
122
- assert.equal(status.terminal.active_connection_count, 1);
123
- assert.equal(status.checks.terminal, true);
124
- });
125
-
126
- test('status command supports machine-readable injected runtime status', async () => {
127
- const expected = { schema_version: 'agentsam-runtime-status-v1', ready: true };
128
- let output = '';
129
- const result = await runStatus(['--json'], { collectRuntime: async () => expected, write(value) { output += value; } });
130
- assert.equal(result, expected);
131
- const parsed = JSON.parse(output);
132
- assert.equal(parsed.schema_version, expected.schema_version);
133
- assert.equal(parsed.ready, expected.ready);
134
- assert.ok(parsed.next?.actions?.length > 0);
135
- assert.ok(parsed.next?.headline);
136
- });
137
-
138
- test('renderRuntimeStatus explicitly displays DB and other resource bindings', () => {
139
- const status = {
140
- local: { project: 'agentsam-sdk', root: '/path/to/project' },
141
- ready: true,
142
- local_ready: true,
143
- checks: { account: true, models: true, terminal: true, cloudflare: true },
144
- cloudflare: {
145
- configured: true,
146
- worker_name: 'agentsam-sdk',
147
- version: { number: 43 },
148
- bindings: {
149
- match: true,
150
- live: [
151
- { name: 'DB', type: 'd1', database_name: 'inneranimalmedia-business' },
152
- { name: 'WEBSITE_ASSETS', type: 'r2_bucket', bucket_name: 'agentsam-os-blueprint-content' },
153
- { name: 'AGENTSAM_WAI', type: 'ai' },
154
- { name: 'IAM_CLIENT_ID', type: 'plain_text' },
155
- { name: 'OPENAI_API_KEY', type: 'secret_text' },
156
- ],
157
- declared: [
158
- { name: 'DB', type: 'd1', database_name: 'inneranimalmedia-business' },
159
- { name: 'WEBSITE_ASSETS', type: 'r2_bucket', bucket_name: 'agentsam-os-blueprint-content' },
160
- { name: 'AGENTSAM_WAI', type: 'ai' },
161
- ],
162
- resources: [
163
- { name: 'DB', type: 'd1', database_name: 'inneranimalmedia-business' },
164
- { name: 'WEBSITE_ASSETS', type: 'r2_bucket', bucket_name: 'agentsam-os-blueprint-content' },
165
- { name: 'AGENTSAM_WAI', type: 'ai' },
166
- ],
167
- runtime_variables: [{ name: 'IAM_CLIENT_ID', type: 'plain_text' }],
168
- runtime_secrets: [{ name: 'OPENAI_API_KEY', type: 'secret_text' }],
169
- missing: [],
170
- },
171
- health: { ok: true, status: 200 },
172
- },
173
- };
174
-
175
- const stripAnsi = (text) => String(text || '').replace(/\x1B\[[0-9;]*[a-zA-Z]/g, '');
176
- const rendered = stripAnsi(renderRuntimeStatus(status));
177
- assert.match(rendered, /bindings\s+.*5 live/);
178
- assert.match(rendered, /• DB · d1 \(inneranimalmedia-business\)/);
179
- assert.match(rendered, /• WEBSITE_ASSETS · r2 \(agentsam-os-blueprint-content\)/);
180
- assert.match(rendered, /• AGENTSAM_WAI · ai/);
181
- assert.match(rendered, /1 vars · 1 secrets/);
182
- });
183
-
184
- test('parseWranglerToml parses worker name, d1 databases, r2, hyperdrive, and vars', () => {
185
- const sample = `
186
- name = "my-sample-worker"
187
- main = "src/index.js"
188
-
189
- [vars]
190
- ENVIRONMENT = "production"
191
- PORT = 8080
192
-
193
- [[d1_databases]]
194
- binding = "DB"
195
- database_name = "sample-production-db"
196
- database_id = "d1-uuid-123"
197
-
198
- [[r2_buckets]]
199
- binding = "UPLOADS"
200
- bucket_name = "sample-bucket"
201
-
202
- [[hyperdrive]]
203
- binding = "HYPERDRIVE"
204
- id = "hd-uuid-456"
205
-
206
- [ai]
207
- binding = "AI"
208
- `;
209
-
210
- const parsed = parseWranglerToml(sample);
211
- assert.equal(parsed.name, 'my-sample-worker');
212
- assert.equal(parsed.vars.ENVIRONMENT, 'production');
213
- assert.equal(parsed.vars.PORT, 8080);
214
- assert.equal(parsed.d1_databases.length, 1);
215
- assert.equal(parsed.d1_databases[0].binding, 'DB');
216
- assert.equal(parsed.d1_databases[0].database_name, 'sample-production-db');
217
- assert.equal(parsed.r2_buckets.length, 1);
218
- assert.equal(parsed.r2_buckets[0].binding, 'UPLOADS');
219
- assert.equal(parsed.hyperdrive.length, 1);
220
- assert.equal(parsed.hyperdrive[0].binding, 'HYPERDRIVE');
221
- assert.equal(parsed.ai.binding, 'AI');
222
- });
223
-
224
- test('resolveProjectD1Database discovers project DB binding from checked-in config', () => {
225
- const resolved = resolveProjectD1Database(root);
226
- assert.equal(resolved, 'inneranimalmedia-business');
227
- });
@@ -1,147 +0,0 @@
1
- import assert from 'node:assert/strict';
2
- import { describe, it } from 'node:test';
3
- import {
4
- evaluateDecisions as evaluate,
5
- appendOutcome,
6
- attachAction,
7
- createActivityStore,
8
- activityFromDecision,
9
- DECISION_ACTIVITY_LABELS,
10
- } from '../../src/sam/index.js';
11
- import {
12
- createErrorEnvelope,
13
- planRecovery,
14
- inferSideEffectState,
15
- SIDE_EFFECT_STATE,
16
- FAILURE_CLASS,
17
- } from '../../packages/agentsam-errors/src/index.js';
18
-
19
- describe('SAM decision → activity → outcome linkage', () => {
20
- it('emits user-facing decision.made events without choose/score/check as primary label', async () => {
21
- const activity = createActivityStore('run_test_1');
22
- const seen = [];
23
- activity.on((e) => seen.push(e));
24
-
25
- const result = await evaluate({
26
- state: {
27
- constraints: { requires_local_files: true },
28
- runtime: { terminal_lanes: { local: true, remote: true, sandbox: true } },
29
- },
30
- questions: ['terminal_lane', 'requires_approval'],
31
- run_id: 'run_test_1',
32
- step_id: 'step_plan',
33
- activity,
34
- });
35
-
36
- assert.ok(result.receipt.run_id === 'run_test_1');
37
- assert.ok(result.receipt.step_id === 'step_plan');
38
- assert.ok(seen.some((e) => e.event === 'decision.made'));
39
- const lane = seen.find((e) => e.evidence?.question_id === 'terminal_lane');
40
- assert.equal(lane.label, DECISION_ACTIVITY_LABELS.terminal_lane);
41
- assert.equal(lane.label.includes('choose'), false);
42
- assert.ok(lane.evidence.decision_id);
43
- assert.equal(lane.detail, 'local');
44
- });
45
-
46
- it('records supervised human corrections distinctly from weak passive accept', async () => {
47
- const result = await evaluate({
48
- state: { constraints: { requires_local_files: true }, runtime: { terminal_lanes: { local: true } } },
49
- questions: ['terminal_lane'],
50
- run_id: 'run_corr',
51
- });
52
- let receipt = attachAction(result.receipt, { kind: 'terminal.attach', summary: 'attach local pty' });
53
- assert.ok(receipt.action_id);
54
-
55
- receipt = appendOutcome(receipt, {
56
- success: false,
57
- disposition: 'corrected_to',
58
- human_corrected: true,
59
- corrected_to: 'sandbox',
60
- user_override: true,
61
- duration_ms: 1200,
62
- retries: 0,
63
- });
64
- assert.equal(receipt.outcome.label_strength, 'supervised');
65
- assert.equal(receipt.outcome.corrected_to, 'sandbox');
66
- assert.ok(receipt.outcome_id);
67
-
68
- const passive = appendOutcome(result.receipt, { success: true });
69
- assert.equal(passive.outcome.label_strength, 'weak_passive');
70
- });
71
- });
72
-
73
- describe('ErrorEnvelope recovery semantics', () => {
74
- it('refuses blind retry when side effect is unknown', () => {
75
- const error = createErrorEnvelope({
76
- reason: 'transport_timeout',
77
- message: 'deployment create timed out',
78
- code: 'DEADLINE_EXCEEDED',
79
- severity: 'transient',
80
- retryable: true,
81
- domain: 'deployment',
82
- operation: {
83
- kind: 'deployment.create',
84
- idempotent: false,
85
- read_only: false,
86
- side_effect_state: SIDE_EFFECT_STATE.UNKNOWN,
87
- },
88
- });
89
- assert.equal(inferSideEffectState(error), SIDE_EFFECT_STATE.UNKNOWN);
90
- const plan = planRecovery(error);
91
- assert.equal(plan.disposition, 'reconcile');
92
- assert.ok(plan.evidence.some((e) => /reconcile_before_retry/.test(e)));
93
- });
94
-
95
- it('retries transport failures with budget when side effect is known not applied', () => {
96
- const error = createErrorEnvelope({
97
- reason: 'connection_reset',
98
- message: 'reset',
99
- code: 'UNAVAILABLE',
100
- severity: 'transient',
101
- retryable: true,
102
- domain: 'transport',
103
- operation: {
104
- kind: 'fs.read',
105
- read_only: true,
106
- side_effect_state: SIDE_EFFECT_STATE.NONE,
107
- },
108
- });
109
- const plan = planRecovery(error, { attempt: 1, max_attempts: 4 });
110
- assert.ok(plan.disposition === 'retry' || plan.disposition === 'reconnect');
111
- assert.ok(plan.delay_ms == null || plan.delay_ms >= 0);
112
- });
113
-
114
- it('treats cancellation as abort without operator incident', () => {
115
- const error = createErrorEnvelope({
116
- reason: 'cancelled_by_user',
117
- message: 'Stopped',
118
- code: 'CANCELLED',
119
- severity: 'blocking_user_fixable',
120
- retryable: false,
121
- domain: 'runtime',
122
- resolution_owner: 'user',
123
- remediation: { action: 'none' },
124
- });
125
- // cancelled may not be in policy — use unknown path via custom
126
- const plan = planRecovery({
127
- ...error,
128
- reason: 'cancelled_by_user',
129
- failure_class: FAILURE_CLASS.CANCELLED,
130
- fingerprint: error.fingerprint,
131
- });
132
- assert.equal(plan.disposition, 'abort');
133
- assert.equal(plan.notify.operator, 'never');
134
- });
135
-
136
- it('activityFromDecision maps score to non-numeric user detail', () => {
137
- const ev = activityFromDecision({
138
- run_id: 'r1',
139
- question_id: 'change_risk',
140
- answer: { type: 'score', value: 1.7, question_id: 'change_risk' },
141
- decision_id: 'dec_x',
142
- });
143
- assert.equal(ev.label, 'Assessing change risk');
144
- assert.equal(ev.detail, 'Bounded');
145
- assert.equal(ev.evidence.question_type, 'score');
146
- });
147
- });