@inneranimalmedia/agentsam-sdk 2.6.10 → 2.6.11

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 (261) hide show
  1. package/README.md +3 -0
  2. package/TRADEMARKS.md +22 -0
  3. package/apps/README.md +3 -0
  4. package/apps/cad-creator/LICENSE +21 -0
  5. package/apps/cad-creator/README.md +4 -1
  6. package/apps/cad-creator/shared/cad/package.json +1 -1
  7. package/apps/client-cms-editor/LICENSE +21 -0
  8. package/apps/client-cms-editor/README.md +3 -0
  9. package/apps/client-cms-editor/backend/package.json +2 -2
  10. package/apps/client-cms-editor/frontend/package.json +3 -3
  11. package/apps/client-cms-editor/package-lock.json +43 -43
  12. package/apps/client-cms-editor/package.json +3 -3
  13. package/apps/client-cms-editor/reference/harvest/HARVEST_RECEIPT.json +1 -1
  14. package/apps/client-cms-editor/reference/harvest/README.md +1 -1
  15. package/apps/client-cms-editor/reference/harvest/plans/ARCHIVE-INTAKE.md +1 -1
  16. package/apps/client-cms-editor/reference/harvest/plans/HARVEST-INDEX.md +1 -1
  17. package/apps/client-cms-editor/reference/harvest/plans/TOOLING-LAB.md +1 -1
  18. package/apps/client-cms-editor/shared/cms/package.json +1 -1
  19. package/docs/MINI.md +4 -2
  20. package/docs/REPO_FILE_MAP.txt +0 -1
  21. package/docs/SOURCE_ARCHITECTURE.md +1 -1
  22. package/docs/architecture/DUAL_ANALYTICS_PRODUCT.md +140 -0
  23. package/docs/content-studio/REVISION_GATE_2026-09-27.md +1 -1
  24. package/docs/engineering/go-portability/01-product-project-deployment-authority.md +69 -0
  25. package/docs/engineering/provider-internal-renames/01-lane-initialization.md +20 -0
  26. package/docs/engineering/provider-internal-renames/01a-runtime-environment-contract.md +115 -0
  27. package/docs/engineering/provider-internal-renames/02-cfoa.md +57 -0
  28. package/docs/engineering/provider-internal-renames/03-gclioa.md +32 -0
  29. package/docs/engineering/provider-internal-renames/04-goaude.md +50 -0
  30. package/docs/engineering/provider-internal-renames/05-gdrv.md +33 -0
  31. package/docs/engineering/provider-internal-renames/06-verification.md +103 -0
  32. package/docs/engineering/provider-internal-renames/README.md +77 -0
  33. package/docs/engineering/provider-internal-renames/runtime-environment-contract.json +220 -0
  34. package/docs/engineering/test-diagnostics/go-cli-test-hang-20261003.md +49 -0
  35. package/docs/engineering/test-diagnostics/go-skip-deploy-docker-fix.md +90 -0
  36. package/docs/knowledge-service-verification.md +3 -3
  37. package/docs/plans/AGENTSAM-SUSPEND-QUEUE-KNOWLEDGE-RDP-2026-10-03.md +870 -0
  38. package/docs/plans/LOCAL-STUDIO-GRADUATION-2026-09-26.md +9 -9
  39. package/docs/plans/MACHINE-FIRST-APPS-TUI-2026-09-24.md +11 -11
  40. package/docs/plans/RECONCILIATION-2026-09-19.md +6 -6
  41. package/docs/plans/SAM_WORK_PROTOCOL.md +667 -0
  42. package/docs/plans/TOMORROW-EXTENSIVE-TODO-2026-09-26.md +2 -2
  43. package/docs/plans/UNIVERSAL-INGEST-MACHINE-FIRST-2026-09-24.md +3 -3
  44. package/examples/hyperspace-demo/src/main.tsx +227 -110
  45. package/migrations/d1/0020_agentsam_receipt_catalog.sql +35 -0
  46. package/migrations/runtime/0006_agent_run_suspend_activity.sql +53 -0
  47. package/migrations/runtime/0007_queue_control.sql +40 -0
  48. package/migrations/runtime/0008_agent_run_dependencies.sql +24 -0
  49. package/migrations/runtime/0008_analytics_legacy_bootstrap.sql +43 -0
  50. package/migrations/runtime/0009_analytics_authority.sql +108 -0
  51. package/package.json +26 -11
  52. package/packages/agentsam-brand/README.md +3 -0
  53. package/packages/agentsam-brand/package.json +2 -2
  54. package/packages/agentsam-contracts/dist/adapter.d.ts +22 -0
  55. package/packages/agentsam-contracts/dist/adapter.js +0 -0
  56. package/packages/agentsam-contracts/dist/agent.d.ts +66 -0
  57. package/packages/agentsam-contracts/dist/agent.js +15 -0
  58. package/packages/agentsam-contracts/dist/artifacts.d.ts +70 -0
  59. package/packages/agentsam-contracts/dist/artifacts.js +0 -0
  60. package/packages/agentsam-contracts/dist/authority.d.ts +21 -0
  61. package/packages/agentsam-contracts/dist/authority.js +0 -0
  62. package/packages/agentsam-contracts/dist/context.d.ts +14 -0
  63. package/packages/agentsam-contracts/dist/context.js +0 -0
  64. package/packages/agentsam-contracts/dist/errors.d.ts +121 -0
  65. package/packages/agentsam-contracts/dist/errors.js +5 -0
  66. package/packages/agentsam-contracts/dist/events.d.ts +53 -0
  67. package/packages/agentsam-contracts/dist/events.js +0 -0
  68. package/packages/agentsam-contracts/dist/execution.d.ts +38 -0
  69. package/packages/agentsam-contracts/dist/execution.js +0 -0
  70. package/packages/agentsam-contracts/dist/hooks.d.ts +31 -0
  71. package/packages/agentsam-contracts/dist/hooks.js +0 -0
  72. package/packages/agentsam-contracts/dist/identity.d.ts +15 -0
  73. package/packages/agentsam-contracts/dist/identity.js +0 -0
  74. package/packages/agentsam-contracts/dist/index.d.ts +16 -0
  75. package/packages/agentsam-contracts/dist/index.js +164 -0
  76. package/packages/agentsam-contracts/dist/models.d.ts +9 -0
  77. package/packages/agentsam-contracts/dist/models.js +0 -0
  78. package/packages/agentsam-contracts/dist/providers.d.ts +27 -0
  79. package/packages/agentsam-contracts/dist/providers.js +0 -0
  80. package/packages/agentsam-contracts/dist/repository.d.ts +56 -0
  81. package/packages/agentsam-contracts/dist/repository.js +15 -0
  82. package/packages/agentsam-contracts/dist/run.d.ts +113 -0
  83. package/packages/agentsam-contracts/dist/run.js +132 -0
  84. package/packages/agentsam-contracts/dist/tools.d.ts +82 -0
  85. package/packages/agentsam-contracts/dist/tools.js +0 -0
  86. package/packages/agentsam-contracts/dist/widgets.d.ts +38 -0
  87. package/packages/agentsam-contracts/dist/widgets.js +0 -0
  88. package/packages/agentsam-contracts/package.json +9 -1
  89. package/packages/agentsam-contracts/scripts/build.mjs +1 -1
  90. package/packages/agentsam-contracts/src/agent.ts +78 -3
  91. package/packages/agentsam-contracts/src/index.ts +2 -0
  92. package/packages/agentsam-contracts/src/run.ts +320 -0
  93. package/packages/agentsam-contracts/src/widgets.ts +58 -0
  94. package/packages/agentsam-contracts/test/contracts.test.mjs +1 -1
  95. package/packages/agentsam-contracts/test/run-contract.test.mjs +94 -0
  96. package/packages/agentsam-errors/package.json +1 -1
  97. package/packages/agentsam-goap/README.md +3 -0
  98. package/packages/agentsam-goap/package.json +2 -2
  99. package/packages/agentsam-hooks/package.json +2 -2
  100. package/packages/agentsam-hooks/src/adapters/agents.js +48 -22
  101. package/packages/agentsam-hooks/src/index.d.ts +16 -0
  102. package/packages/agentsam-knowledge/package.json +1 -1
  103. package/packages/agentsam-knowledge/src/backends/index.js +1 -1
  104. package/packages/agentsam-merch/README.md +62 -0
  105. package/packages/agentsam-merch/bin/agentsam-merch.mjs +16 -0
  106. package/packages/agentsam-merch/package.json +65 -0
  107. package/packages/agentsam-merch/profiles/completeful/dtg-back-large.json +42 -0
  108. package/packages/agentsam-merch/profiles/completeful/laser-engraving.json +39 -0
  109. package/packages/agentsam-merch/profiles/generic/embroidery-digitization.json +22 -0
  110. package/packages/agentsam-merch/schemas/collection-candidate.schema.json +66 -0
  111. package/packages/agentsam-merch/schemas/manufacturing-profile.schema.json +221 -0
  112. package/packages/agentsam-merch/src/adapters-completeful.js +50 -0
  113. package/packages/agentsam-merch/src/cli.js +93 -0
  114. package/packages/agentsam-merch/src/collection-lab.js +60 -0
  115. package/packages/agentsam-merch/src/compatibility.js +501 -0
  116. package/packages/agentsam-merch/src/derivatives.js +112 -0
  117. package/packages/agentsam-merch/src/index.d.ts +316 -0
  118. package/packages/agentsam-merch/src/index.js +46 -0
  119. package/packages/agentsam-merch/src/node/index.d.ts +58 -0
  120. package/packages/agentsam-merch/src/node/index.js +6 -0
  121. package/packages/agentsam-merch/src/node/raster.js +142 -0
  122. package/packages/agentsam-merch/src/node/vector.js +239 -0
  123. package/packages/agentsam-merch/src/product-concepts.js +118 -0
  124. package/packages/agentsam-merch/src/profile-registry.js +104 -0
  125. package/packages/agentsam-merch/src/profile.js +158 -0
  126. package/packages/agentsam-merch/src/transforms.js +215 -0
  127. package/packages/agentsam-merch/test/merch.test.mjs +332 -0
  128. package/packages/agentsam-merch/test/node-transforms.test.mjs +149 -0
  129. package/packages/agentsam-nav/dist/browser.global.js +71 -34
  130. package/packages/agentsam-nav/dist/browser.js +3179 -781
  131. package/packages/agentsam-nav/dist/index.js +3171 -773
  132. package/packages/agentsam-nav/package.json +1 -1
  133. package/packages/agentsam-queue-control/README.md +4 -1
  134. package/packages/agentsam-queue-control/package.json +4 -3
  135. package/packages/agentsam-queue-control/schemas/job-envelope.schema.json +111 -11
  136. package/packages/agentsam-queue-control/src/adapters/cloudflare.js +34 -6
  137. package/packages/agentsam-queue-control/src/adapters/memory.js +11 -2
  138. package/packages/agentsam-queue-control/src/adapters/sqlite.js +259 -0
  139. package/packages/agentsam-queue-control/src/contracts.js +207 -3
  140. package/packages/agentsam-queue-control/src/control-plane.js +62 -2
  141. package/packages/agentsam-queue-control/src/index.js +1 -0
  142. package/packages/agentsam-queue-control/test/queue-control.test.mjs +310 -0
  143. package/packages/agentsam-queue-control/test/sqlite-adapter.test.mjs +91 -0
  144. package/packages/agentsam-rapid-rust/README.md +3 -0
  145. package/packages/agentsam-repository/README.md +3 -0
  146. package/packages/agentsam-repository/package.json +1 -1
  147. package/packages/agentsam-vault/package.json +1 -1
  148. package/packages/agentsam-workbench/README.md +43 -0
  149. package/packages/agentsam-workbench/package.json +13 -3
  150. package/packages/agentsam-workbench/src/agent/AgentConversationSurface.tsx +108 -0
  151. package/packages/agentsam-workbench/src/agent/AgentPanel.tsx +25 -8
  152. package/packages/agentsam-workbench/src/agent/AgentRuntimeField.tsx +152 -0
  153. package/packages/agentsam-workbench/src/agent/Composer.tsx +10 -1
  154. package/packages/agentsam-workbench/src/agent/RunMode.ts +26 -0
  155. package/packages/agentsam-workbench/src/agent/Thread.tsx +18 -3
  156. package/packages/agentsam-workbench/src/agent/index.ts +3 -0
  157. package/packages/agentsam-workbench/src/index.ts +4 -0
  158. package/packages/agentsam-workbench/src/manufacturing/PreflightIndicator.tsx +203 -0
  159. package/packages/agentsam-workbench/src/manufacturing/index.ts +2 -0
  160. package/packages/agentsam-workbench/src/manufacturing/loading.ts +147 -0
  161. package/packages/agentsam-workbench/src/widgets/BuiltinWidget.tsx +22 -0
  162. package/packages/agentsam-workbench/src/widgets/CountdownWidget.tsx +68 -0
  163. package/packages/agentsam-workbench/src/widgets/WidgetFrame.tsx +56 -0
  164. package/packages/agentsam-workbench/src/widgets/countdown.ts +25 -0
  165. package/packages/agentsam-workbench/src/widgets/index.ts +6 -0
  166. package/packages/agentsam-workbench/src/widgets/registry.ts +13 -0
  167. package/packages/agentsam-workbench/src/widgets/useCountdown.ts +128 -0
  168. package/packages/agentsam-workbench/src/widgets/widgets.css +102 -0
  169. package/packages/connectors/{cloudflare → cfoa}/package.json +3 -3
  170. package/packages/heuristic-theme/package.json +1 -1
  171. package/packages/identity/README.md +3 -0
  172. package/packages/identity/backend/README.md +3 -0
  173. package/packages/identity/package.json +1 -1
  174. package/packages/identity/src/frontend/auth-portal/README.md +3 -0
  175. package/packages/identity/src/index.js +1 -1
  176. package/packages/identity/src/oauth/README.md +4 -1
  177. package/packages/identity/src/oauth/credentials.js +1 -1
  178. package/packages/identity/src/server/worker-router.js +1 -1
  179. package/packages/identity/tests/google-desktop-identity-login.test.mjs +1 -1
  180. package/packages/identity/tests/lane1-packed-consumer.test.mjs +1 -1
  181. package/packages/identity/tests/oauth-presets-accounts-ssot.test.mjs +1 -1
  182. package/packages/providers/completeful/package.json +1 -1
  183. package/packages/theme-church-site/package.json +1 -1
  184. package/packages/theme-companions-site/package.json +1 -1
  185. package/packages/theme-floors-site/package.json +1 -1
  186. package/packages/theme-fuelnfree-site/package.json +1 -1
  187. package/packages/theme-handyman-site/package.json +1 -1
  188. package/packages/theme-insurance-site/package.json +1 -1
  189. package/packages/theme-scenes/package.json +1 -1
  190. package/packages/theme-shinshu-site/package.json +1 -1
  191. package/packages/work-graph/package.json +1 -1
  192. package/protocol/models/README.md +3 -0
  193. package/protocol/receipts/agentsam.receipt.v1.json +95 -0
  194. package/protocol/theme-refinery/receipts/products-registry-batch-20260924.json +6 -6
  195. package/protocol/theme-refinery/receipts/theme-harvest-20260924.json +6 -6
  196. package/skills/README.md +3 -0
  197. package/src/acp/agent-executor.js +106 -0
  198. package/src/acp/client.js +316 -0
  199. package/src/acp/dependencies.js +426 -0
  200. package/src/acp/http.js +207 -0
  201. package/src/acp/index.js +22 -0
  202. package/src/acp/runs.js +125 -0
  203. package/src/acp/runtime-selection.js +180 -0
  204. package/src/cli/command-catalog.js +3 -0
  205. package/src/cli.js +24 -0
  206. package/src/commands/cloudflare-login.js +1 -1
  207. package/src/commands/cloudflare.js +2 -2
  208. package/src/commands/connections.js +1 -1
  209. package/src/commands/go.js +76 -6
  210. package/src/commands/merch.js +5 -0
  211. package/src/commands/mini.js +1 -1
  212. package/src/commands/receipts.js +140 -0
  213. package/src/commands/run.js +253 -0
  214. package/src/go/container.js +1 -1
  215. package/src/go/contract.js +61 -18
  216. package/src/go/discover.js +0 -4
  217. package/src/go/index.js +13 -1
  218. package/src/go/probe.js +109 -0
  219. package/src/go/{cloudflare.js → providers/cloudflare.js} +36 -136
  220. package/src/go/verify.js +1 -1
  221. package/src/indexing/ingest/inventory.js +1 -1
  222. package/src/lib/deploy/local-studio.js +2 -2
  223. package/src/lib/mini/scaffold.js +1 -1
  224. package/src/lib/whoami-capabilities.js +1 -1
  225. package/src/local/runtime-store.js +8 -0
  226. package/src/mcp/cloudflare-bundles.js +1 -1
  227. package/src/plugins/index.js +1 -0
  228. package/src/plugins/registry.js +59 -6
  229. package/src/receipts/contract.js +68 -0
  230. package/src/receipts/index.js +20 -0
  231. package/src/receipts/prune.js +64 -0
  232. package/src/receipts/sinks.js +285 -0
  233. package/templates/mini/gadget/app.js +15 -40
  234. package/templates/mini/gadget/index.html +7 -7
  235. package/templates/mini/shared/style.css +1 -1
  236. package/packages/agentsam-repository/src/goap.js.bak-20260922011251 +0 -670
  237. /package/packages/connectors/{cloudflare → cfoa}/OAUTH_STORAGE_AUDIT.md +0 -0
  238. /package/packages/connectors/{cloudflare → cfoa}/src/api-client.js +0 -0
  239. /package/packages/connectors/{cloudflare → cfoa}/src/capabilities.js +0 -0
  240. /package/packages/connectors/{cloudflare → cfoa}/src/credential.js +0 -0
  241. /package/packages/connectors/{cloudflare → cfoa}/src/families/brand-protection.js +0 -0
  242. /package/packages/connectors/{cloudflare → cfoa}/src/families/keyless.js +0 -0
  243. /package/packages/connectors/{cloudflare → cfoa}/src/families/pages.js +0 -0
  244. /package/packages/connectors/{cloudflare → cfoa}/src/families/scanner.js +0 -0
  245. /package/packages/connectors/{cloudflare → cfoa}/src/families/snippets.js +0 -0
  246. /package/packages/connectors/{cloudflare → cfoa}/src/families/tag-gateway.js +0 -0
  247. /package/packages/connectors/{cloudflare → cfoa}/src/families/tags.js +0 -0
  248. /package/packages/connectors/{cloudflare → cfoa}/src/families/token-validation.js +0 -0
  249. /package/packages/connectors/{cloudflare → cfoa}/src/families/vectorize.js +0 -0
  250. /package/packages/connectors/{cloudflare → cfoa}/src/families/workflows.js +0 -0
  251. /package/packages/connectors/{cloudflare → cfoa}/src/index.js +0 -0
  252. /package/packages/connectors/{cloudflare → cfoa}/src/oauth-persist.js +0 -0
  253. /package/packages/connectors/{cloudflare → cfoa}/src/owner.js +0 -0
  254. /package/packages/connectors/{cloudflare → cfoa}/src/permission-options.js +0 -0
  255. /package/packages/connectors/{cloudflare → cfoa}/src/routes.js +0 -0
  256. /package/packages/connectors/{cloudflare → cfoa}/src/scope-catalog.js +0 -0
  257. /package/packages/connectors/{cloudflare → cfoa}/src/vault.js +0 -0
  258. /package/packages/connectors/{cloudflare → cfoa}/tests/capabilities.test.mjs +0 -0
  259. /package/packages/connectors/{cloudflare → cfoa}/tests/connector.test.mjs +0 -0
  260. /package/packages/connectors/{cloudflare → cfoa}/tests/oauth-persist.test.mjs +0 -0
  261. /package/packages/identity/src/oauth/{google-desktop-exchange.js → goaude.js} +0 -0
@@ -1,9 +1,11 @@
1
1
  import { StrictMode, useEffect, useMemo, useState } from "react";
2
2
  import { createRoot } from "react-dom/client";
3
3
  import {
4
+ HYPERSPACE_STUDIES,
4
5
  LoadingSceneController,
5
- computationalHyperspace,
6
6
  adaptAgentSamEvent,
7
+ computationalHyperspace,
8
+ type HyperspaceStudyId,
7
9
  } from "@inneranimalmedia/agentsam-loading-scene";
8
10
  import {
9
11
  LoadingScene,
@@ -13,141 +15,256 @@ import {
13
15
 
14
16
  const preset = computationalHyperspace;
15
17
 
16
- /**
17
- * Simulated "create a site" run: realistic runtime events flow through
18
- * the adapter → controller, exactly as a real CMS app would wire it.
19
- * The renderer never sees any of these names.
20
- */
21
- function simulateSiteCreation(controller: LoadingSceneController, onDone: () => void) {
22
- const timeline: Array<[number, () => void]> = [];
23
- const at = (ms: number, fn: () => void) => timeline.push([ms, fn]);
24
- const ev = (raw: Parameters<typeof adaptAgentSamEvent>[0]) =>
18
+ type StudyChoice = HyperspaceStudyId | "auto";
19
+
20
+ function simulateRuntime(
21
+ controller: LoadingSceneController,
22
+ onDone: () => void,
23
+ ) {
24
+ const timers: number[] = [];
25
+ const later = (ms: number, fn: () => void) => {
26
+ timers.push(window.setTimeout(fn, ms));
27
+ };
28
+ const emit = (raw: Parameters<typeof adaptAgentSamEvent>[0]) =>
25
29
  controller.handle(adaptAgentSamEvent(raw));
26
30
 
27
- at(0, () => ev({ type: "agent.session.started", operationId: "session", label: "Starting up" }));
28
- at(900, () => controller.complete("session"));
29
-
30
- at(1000, () => ev({ type: "context.workspace.loading", operationId: "ctx", label: "Gathering context" }));
31
- // 19 rapid file reads — coalesced, no flicker
32
- for (let i = 0; i < 19; i++) {
33
- at(1200 + i * 60, () => ev({ type: "file.read", label: "Understanding your project" }));
34
- }
35
- at(2600, () => controller.complete("ctx"));
36
-
37
- at(2700, () => ev({ type: "model.planning", operationId: "plan", label: "Planning your site" }));
38
- at(5200, () => controller.complete("plan"));
39
-
40
- // parallel tools + asset generation blending
41
- at(5300, () => ev({ type: "tool.invoke", operationId: "t1", label: "Laying out pages" }));
42
- at(5450, () => ev({ type: "tool.invoke", operationId: "t2", label: "Writing copy" }));
43
- at(5600, () => ev({ type: "tool.image.generate", operationId: "hero", label: "Generating hero artwork" }));
44
- at(9400, () => controller.complete("t1"));
45
- at(10200, () => controller.complete("t2"));
46
- at(12500, () => ev({ type: "content.asset.generated", operationId: "hero", label: "Hero artwork ready" }));
47
-
48
- at(12800, () => ev({ type: "catalog.indexing", operationId: "idx", label: "Organizing your content" }));
49
- at(15200, () => controller.complete("idx"));
50
-
51
- at(15400, () => ev({ type: "site.build", operationId: "build", label: "Building your site", progress: 0 }));
52
- at(16500, () => ev({ type: "site.build", operationId: "build", progress: 0.35 }));
53
- at(17800, () => ev({ type: "site.build", operationId: "build", progress: 0.8 }));
54
- at(18900, () => controller.complete("build"));
55
-
56
- at(19000, () => ev({ type: "output.verify", operationId: "verify", label: "Checking everything" }));
57
- at(21500, () => controller.complete("verify"));
58
-
59
- at(21700, () => ev({ type: "site.deploy", operationId: "deploy", label: "Publishing" }));
60
- at(24800, () => {
61
- controller.complete("deploy");
62
- onDone();
63
- });
64
-
65
- const ids = timeline.map(([ms, fn]) => window.setTimeout(fn, ms));
66
- return () => ids.forEach((id) => window.clearTimeout(id));
31
+ later(0, () =>
32
+ emit({
33
+ type: "agent.session.started",
34
+ operationId: "boot",
35
+ label: "Preparing runtime",
36
+ detail: "Opening the AgentSam workspace",
37
+ }),
38
+ );
39
+ later(3600, () => controller.complete("boot"));
40
+
41
+ later(3900, () =>
42
+ emit({
43
+ type: "file.read",
44
+ operationId: "read",
45
+ label: "Reading project context",
46
+ detail: "Reviewing files and instructions relevant to the task",
47
+ }),
48
+ );
49
+ later(7700, () => controller.complete("read"));
50
+
51
+ later(8000, () =>
52
+ emit({
53
+ type: "context.workspace.loading",
54
+ operationId: "context",
55
+ label: "Loading context",
56
+ detail: "Assembling the workspace state needed for this turn",
57
+ }),
58
+ );
59
+ later(11900, () => controller.complete("context"));
60
+
61
+ later(12200, () =>
62
+ emit({
63
+ type: "tool.invoke",
64
+ operationId: "tool-a",
65
+ label: "Running tools",
66
+ detail: "Executing the first task action",
67
+ }),
68
+ );
69
+ later(12450, () =>
70
+ emit({
71
+ type: "tool.invoke",
72
+ operationId: "tool-b",
73
+ label: "Tracing dependencies",
74
+ detail: "Following related package and runtime edges",
75
+ }),
76
+ );
77
+ later(16300, () => controller.complete("tool-a"));
78
+ later(16600, () => controller.complete("tool-b"));
79
+
80
+ later(16900, () =>
81
+ emit({
82
+ type: "catalog.indexing",
83
+ operationId: "index",
84
+ label: "Reconciling state",
85
+ detail: "Checking the resulting workspace state",
86
+ }),
87
+ );
88
+ later(20700, () => controller.complete("index"));
89
+
90
+ later(21000, () =>
91
+ emit({
92
+ type: "site.build",
93
+ operationId: "build",
94
+ label: "Building application",
95
+ detail: "Producing the requested preview",
96
+ progress: 0,
97
+ }),
98
+ );
99
+ later(22200, () =>
100
+ emit({
101
+ type: "site.build",
102
+ operationId: "build",
103
+ progress: 0.38,
104
+ }),
105
+ );
106
+ later(23500, () =>
107
+ emit({
108
+ type: "site.build",
109
+ operationId: "build",
110
+ progress: 0.78,
111
+ }),
112
+ );
113
+ later(24900, () => controller.complete("build"));
114
+
115
+ later(26200, onDone);
116
+
117
+ return () => timers.forEach((id) => window.clearTimeout(id));
67
118
  }
68
119
 
69
- function EditorSurface() {
120
+ function PreviewSurface() {
70
121
  return (
71
122
  <div
72
123
  style={{
73
124
  height: "100%",
74
125
  display: "grid",
75
- gridTemplateRows: "56px 1fr",
76
- color: "#d5d7e0",
77
- fontFamily: "system-ui, sans-serif",
126
+ placeItems: "center",
127
+ background: "#090A0E",
128
+ color: "#F7F5FB",
129
+ fontFamily:
130
+ 'Inter, ui-sans-serif, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif',
78
131
  }}
79
132
  >
80
- <header
81
- style={{
82
- borderBottom: "1px solid rgba(255,255,255,0.08)",
83
- display: "flex",
84
- alignItems: "center",
85
- padding: "0 20px",
86
- gap: 16,
87
- fontSize: 13,
88
- letterSpacing: "0.06em",
89
- }}
90
- >
91
- <strong style={{ color: "#8b7db7" }}>AgentSam</strong>
92
- <span style={{ opacity: 0.5 }}>Fuel N Free Time — Home</span>
93
- <span style={{ marginLeft: "auto", opacity: 0.4, fontSize: 12 }}>Draft saved</span>
94
- </header>
95
- <main style={{ padding: 32, display: "grid", gap: 20, alignContent: "start" }}>
96
- <div style={{ height: 220, borderRadius: 10, background: "linear-gradient(135deg, rgba(139,125,183,0.18), rgba(104,117,173,0.1))", border: "1px solid rgba(255,255,255,0.07)", display: "flex", alignItems: "center", justifyContent: "center", fontSize: 14, opacity: 0.8 }}>
97
- Hero section — generated artwork placed here
133
+ <div style={{ textAlign: "center", opacity: 0.9 }}>
134
+ <div
135
+ style={{
136
+ fontSize: 12,
137
+ letterSpacing: "0.12em",
138
+ textTransform: "uppercase",
139
+ color: "#B5B1C0",
140
+ }}
141
+ >
142
+ AgentSam
98
143
  </div>
99
- <div style={{ display: "grid", gridTemplateColumns: "repeat(auto-fit, minmax(180px, 1fr))", gap: 16 }}>
100
- {["Collection grid", "Countdown banner", "Newsletter"].map((s) => (
101
- <div key={s} style={{ height: 110, borderRadius: 8, border: "1px solid rgba(255,255,255,0.07)", background: "rgba(255,255,255,0.02)", display: "flex", alignItems: "center", justifyContent: "center", fontSize: 13, opacity: 0.65 }}>
102
- {s}
103
- </div>
104
- ))}
144
+ <div
145
+ style={{
146
+ marginTop: 10,
147
+ fontSize: 30,
148
+ letterSpacing: "-0.035em",
149
+ fontWeight: 600,
150
+ }}
151
+ >
152
+ Runtime complete
105
153
  </div>
106
- </main>
154
+ </div>
107
155
  </div>
108
156
  );
109
157
  }
110
158
 
111
159
  function App() {
112
- const controller = useMemo(() => new LoadingSceneController(preset), []);
160
+ const controller = useMemo(
161
+ () => new LoadingSceneController(preset),
162
+ [],
163
+ );
113
164
  const [run, setRun] = useState(0);
114
- const debug = new URLSearchParams(window.location.search).get("debugRuntimeVisuals") === "1";
165
+ const params = useMemo(
166
+ () => new URLSearchParams(window.location.search),
167
+ [],
168
+ );
169
+ const debug = params.get("debugRuntimeVisuals") === "1";
170
+ const initialStudy = params.get("study") as StudyChoice | null;
171
+ const [study, setStudy] = useState<StudyChoice>(
172
+ initialStudy &&
173
+ (initialStudy === "auto" ||
174
+ HYPERSPACE_STUDIES.some((item) => item.id === initialStudy))
175
+ ? initialStudy
176
+ : "auto",
177
+ );
115
178
 
116
179
  useEffect(() => {
117
- if (debug) return; // devtools drive the controller instead
118
- return simulateSiteCreation(controller, () => undefined);
180
+ if (debug) return;
181
+ return simulateRuntime(controller, () => {
182
+ window.setTimeout(() => {
183
+ controller.reset();
184
+ setRun((value) => value + 1);
185
+ }, 1500);
186
+ });
119
187
  }, [controller, run, debug]);
120
188
 
121
189
  return (
122
- <div style={{ position: "fixed", inset: 0 }}>
123
- <LoadingScene controller={controller} preset={preset} style={{ width: "100%", height: "100%" }}>
124
- <EditorSurface />
190
+ <div
191
+ style={{
192
+ position: "fixed",
193
+ inset: 0,
194
+ background: "#090A0E",
195
+ }}
196
+ >
197
+ <LoadingScene
198
+ controller={controller}
199
+ preset={preset}
200
+ study={study}
201
+ reducedMotion="auto"
202
+ style={{ width: "100%", height: "100%" }}
203
+ >
204
+ <PreviewSurface />
125
205
  </LoadingScene>
126
- <div style={{ position: "fixed", left: 24, bottom: 24, pointerEvents: "none" }}>
127
- <LoadingSceneStatus controller={controller} preset={preset} />
206
+
207
+ <div
208
+ style={{
209
+ position: "fixed",
210
+ left: 24,
211
+ bottom: 24,
212
+ pointerEvents: "none",
213
+ zIndex: 5,
214
+ }}
215
+ >
216
+ <LoadingSceneStatus
217
+ controller={controller}
218
+ preset={preset}
219
+ />
128
220
  </div>
129
- {!debug && (
130
- <button
131
- onClick={() => {
132
- controller.reset();
133
- setRun((r) => r + 1);
134
- }}
135
- style={{
136
- position: "fixed",
137
- top: 16,
138
- right: 16,
139
- background: "rgba(255,255,255,0.05)",
140
- border: "1px solid rgba(255,255,255,0.12)",
141
- borderRadius: 6,
142
- color: "#9ea1b0",
143
- padding: "6px 12px",
144
- fontSize: 12,
145
- cursor: "pointer",
146
- }}
147
- >
148
- Replay
149
- </button>
150
- )}
221
+
222
+ <div
223
+ style={{
224
+ position: "fixed",
225
+ top: 16,
226
+ right: 16,
227
+ zIndex: 10,
228
+ display: "flex",
229
+ gap: 6,
230
+ flexWrap: "wrap",
231
+ justifyContent: "flex-end",
232
+ maxWidth: "min(860px, calc(100vw - 32px))",
233
+ fontFamily:
234
+ 'Inter, ui-sans-serif, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif',
235
+ }}
236
+ >
237
+ {(["auto", ...HYPERSPACE_STUDIES.map((item) => item.id)] as StudyChoice[]).map(
238
+ (item) => (
239
+ <button
240
+ key={item}
241
+ type="button"
242
+ onClick={() => setStudy(item)}
243
+ style={{
244
+ border:
245
+ item === study
246
+ ? "1px solid #8B5CF6"
247
+ : "1px solid rgba(255,255,255,.12)",
248
+ background:
249
+ item === study
250
+ ? "rgba(139,92,246,.16)"
251
+ : "rgba(9,10,14,.72)",
252
+ color: item === study ? "#F7F5FB" : "#B5B1C0",
253
+ borderRadius: 999,
254
+ padding: "7px 10px",
255
+ fontSize: 11,
256
+ cursor: "pointer",
257
+ backdropFilter: "blur(10px)",
258
+ }}
259
+ >
260
+ {item === "auto"
261
+ ? "Auto"
262
+ : HYPERSPACE_STUDIES.find((entry) => entry.id === item)?.title}
263
+ </button>
264
+ ),
265
+ )}
266
+ </div>
267
+
151
268
  <LoadingSceneDevtools controller={controller} enabled={debug} />
152
269
  </div>
153
270
  );
@@ -0,0 +1,35 @@
1
+ -- AgentSam universal receipt catalog.
2
+ -- Runtime payloads remain in their native schemas; this table indexes the
3
+ -- universal agentsam.receipt.v1 envelope persisted under inneranimalmedia-schemas.
4
+ CREATE TABLE IF NOT EXISTS agentsam_receipt_catalog (
5
+ id TEXT PRIMARY KEY,
6
+ account_id TEXT NOT NULL,
7
+ receipt_kind TEXT NOT NULL,
8
+ schema_name TEXT NOT NULL,
9
+ status TEXT NOT NULL,
10
+ retention_class TEXT NOT NULL DEFAULT 'ephemeral_success',
11
+
12
+ repository_id TEXT,
13
+ git_sha TEXT,
14
+ run_id TEXT,
15
+
16
+ r2_key TEXT NOT NULL
17
+ CHECK (r2_key LIKE 'agentsam/runtime/receipts/%'),
18
+ content_hash TEXT NOT NULL,
19
+ byte_size INTEGER NOT NULL CHECK (byte_size >= 0),
20
+
21
+ created_at_unix INTEGER NOT NULL,
22
+ expires_at_unix INTEGER,
23
+
24
+ meta_json TEXT
25
+ );
26
+
27
+ CREATE INDEX IF NOT EXISTS idx_agentsam_receipts_account_kind
28
+ ON agentsam_receipt_catalog (account_id, receipt_kind);
29
+
30
+ CREATE INDEX IF NOT EXISTS idx_agentsam_receipts_repo_sha
31
+ ON agentsam_receipt_catalog (repository_id, git_sha);
32
+
33
+ CREATE INDEX IF NOT EXISTS idx_agentsam_receipts_expires
34
+ ON agentsam_receipt_catalog (expires_at_unix)
35
+ WHERE expires_at_unix IS NOT NULL;
@@ -0,0 +1,53 @@
1
+ -- Durable AgentSam run suspension and append-only activity journal.
2
+ -- Keep agentsam_agent_run.status coarse/backward-compatible; waiting detail lives here.
3
+
4
+ CREATE TABLE IF NOT EXISTS agentsam_agent_run_suspension (
5
+ run_id TEXT PRIMARY KEY NOT NULL REFERENCES agentsam_agent_run(id) ON DELETE CASCADE,
6
+ state TEXT NOT NULL
7
+ CHECK (state IN (
8
+ 'waiting_external','waiting_child','awaiting_input','awaiting_approval','sleeping','retry_scheduled'
9
+ )),
10
+ reason TEXT NOT NULL
11
+ CHECK (reason IN ('external','child_run','approval','input','retry','scheduled','rate_limit')),
12
+ wake_at_unix INTEGER,
13
+ wake_event TEXT,
14
+ dependency_run_ids_json TEXT NOT NULL DEFAULT '[]',
15
+ resume_step_id TEXT,
16
+ checkpoint_ref TEXT,
17
+ expires_at_unix INTEGER,
18
+ attempt INTEGER NOT NULL DEFAULT 0 CHECK (attempt >= 0),
19
+ metadata_json TEXT NOT NULL DEFAULT '{}',
20
+ created_at_unix INTEGER NOT NULL DEFAULT (unixepoch()),
21
+ updated_at_unix INTEGER NOT NULL DEFAULT (unixepoch())
22
+ );
23
+
24
+ CREATE INDEX IF NOT EXISTS idx_agentsam_agent_run_suspension_due
25
+ ON agentsam_agent_run_suspension(state, wake_at_unix);
26
+ CREATE INDEX IF NOT EXISTS idx_agentsam_agent_run_suspension_event
27
+ ON agentsam_agent_run_suspension(wake_event);
28
+
29
+ CREATE TABLE IF NOT EXISTS agentsam_agent_run_event (
30
+ event_id TEXT PRIMARY KEY NOT NULL,
31
+ run_id TEXT NOT NULL REFERENCES agentsam_agent_run(id) ON DELETE CASCADE,
32
+ parent_run_id TEXT REFERENCES agentsam_agent_run(id) ON DELETE SET NULL,
33
+ seq INTEGER NOT NULL CHECK (seq >= 0),
34
+ event_type TEXT NOT NULL,
35
+ phase TEXT,
36
+ step_id TEXT,
37
+ label TEXT NOT NULL DEFAULT '',
38
+ detail TEXT,
39
+ progress_current REAL,
40
+ progress_total REAL,
41
+ source_kind TEXT,
42
+ source_name TEXT,
43
+ evidence_json TEXT NOT NULL DEFAULT '{}',
44
+ dedupe_key TEXT,
45
+ created_at_unix INTEGER NOT NULL DEFAULT (unixepoch()),
46
+ UNIQUE(run_id, seq)
47
+ );
48
+
49
+ CREATE INDEX IF NOT EXISTS idx_agentsam_agent_run_event_run_created
50
+ ON agentsam_agent_run_event(run_id, created_at_unix, seq);
51
+ CREATE UNIQUE INDEX IF NOT EXISTS idx_agentsam_agent_run_event_dedupe
52
+ ON agentsam_agent_run_event(run_id, dedupe_key)
53
+ WHERE dedupe_key IS NOT NULL;
@@ -0,0 +1,40 @@
1
+ -- Portable durable Queue Control storage for local SQLite / D1-shaped hosts.
2
+ -- Provider queues remain adapters; this is the local durable scheduler and
3
+ -- reference persistence contract.
4
+
5
+ CREATE TABLE IF NOT EXISTS agentsam_queue_job (
6
+ id TEXT PRIMARY KEY NOT NULL,
7
+ account_id TEXT NOT NULL,
8
+ physical_queue TEXT NOT NULL,
9
+ logical_queue TEXT,
10
+ kind TEXT NOT NULL,
11
+ status TEXT NOT NULL DEFAULT 'queued'
12
+ CHECK(status IN (
13
+ 'queued','claimed','running','waiting','batch_waiting','awaiting_input',
14
+ 'retry_scheduled','completed','failed','cancelled'
15
+ )),
16
+ priority TEXT NOT NULL DEFAULT 'normal'
17
+ CHECK(priority IN ('low','normal','high','urgent')),
18
+ available_at INTEGER NOT NULL DEFAULT (unixepoch()),
19
+ attempt INTEGER NOT NULL DEFAULT 0 CHECK(attempt >= 0),
20
+ max_attempts INTEGER NOT NULL DEFAULT 3 CHECK(max_attempts >= 1),
21
+ idempotency_key TEXT NOT NULL,
22
+ source_run_id TEXT,
23
+ step_id TEXT,
24
+ lease_owner TEXT,
25
+ lease_expires_at INTEGER,
26
+ lease_generation INTEGER NOT NULL DEFAULT 0 CHECK(lease_generation >= 0),
27
+ job_json TEXT NOT NULL CHECK(json_valid(job_json)),
28
+ result_json TEXT CHECK(result_json IS NULL OR json_valid(result_json)),
29
+ error_json TEXT CHECK(error_json IS NULL OR json_valid(error_json)),
30
+ created_at_unix INTEGER NOT NULL DEFAULT (unixepoch()),
31
+ updated_at_unix INTEGER NOT NULL DEFAULT (unixepoch()),
32
+ completed_at_unix INTEGER
33
+ );
34
+
35
+ CREATE UNIQUE INDEX IF NOT EXISTS idx_agentsam_queue_job_idempotency
36
+ ON agentsam_queue_job(account_id, idempotency_key);
37
+ CREATE INDEX IF NOT EXISTS idx_agentsam_queue_job_due
38
+ ON agentsam_queue_job(physical_queue, status, available_at, lease_expires_at);
39
+ CREATE INDEX IF NOT EXISTS idx_agentsam_queue_job_run
40
+ ON agentsam_queue_job(source_run_id, created_at_unix DESC);
@@ -0,0 +1,24 @@
1
+ -- Durable parent/child run dependency projection for AgentSam multi-agent orchestration.
2
+ -- WorkGraph remains the planning authority; this table records the execution linkage
3
+ -- needed to wake parents from child completion without model polling.
4
+
5
+ CREATE TABLE IF NOT EXISTS agentsam_agent_run_dependency (
6
+ parent_run_id TEXT NOT NULL REFERENCES agentsam_agent_run(id) ON DELETE CASCADE,
7
+ child_run_id TEXT NOT NULL REFERENCES agentsam_agent_run(id) ON DELETE CASCADE,
8
+ relation TEXT NOT NULL DEFAULT 'blocks'
9
+ CHECK (relation IN ('blocks','requires','observes')),
10
+ work_item_id TEXT,
11
+ step_id TEXT,
12
+ status TEXT NOT NULL DEFAULT 'pending'
13
+ CHECK (status IN ('pending','satisfied','failed','cancelled')),
14
+ metadata_json TEXT NOT NULL DEFAULT '{}',
15
+ created_at_unix INTEGER NOT NULL DEFAULT (unixepoch()),
16
+ completed_at_unix INTEGER,
17
+ updated_at_unix INTEGER NOT NULL DEFAULT (unixepoch()),
18
+ PRIMARY KEY (parent_run_id, child_run_id, relation)
19
+ );
20
+
21
+ CREATE INDEX IF NOT EXISTS idx_agentsam_run_dependency_parent_status
22
+ ON agentsam_agent_run_dependency(parent_run_id, status, created_at_unix);
23
+ CREATE INDEX IF NOT EXISTS idx_agentsam_run_dependency_child
24
+ ON agentsam_agent_run_dependency(child_run_id, status);
@@ -0,0 +1,43 @@
1
+ -- Bootstrap compatibility for analytics authority migration 0009.
2
+ --
3
+ -- Production D1 already had the legacy aggregate-shaped agentsam_analytics
4
+ -- table before 0009 was introduced. A fresh portable/local SQLite database did
5
+ -- not, so 0009 could not run its row-count guard or rename step.
6
+ --
7
+ -- This migration intentionally sorts before 0009 and creates the old empty
8
+ -- aggregate shape only when no agentsam_analytics table exists. On production
9
+ -- or any database that already has either the legacy or canonical table, this
10
+ -- is a no-op. 0009 remains immutable after release.
11
+
12
+ CREATE TABLE IF NOT EXISTS agentsam_analytics (
13
+ id TEXT NOT NULL PRIMARY KEY,
14
+ account_id TEXT NOT NULL,
15
+ date_key TEXT NOT NULL DEFAULT '',
16
+ event_type TEXT NOT NULL DEFAULT '',
17
+ event_name TEXT NOT NULL DEFAULT '',
18
+ workflow_key TEXT NOT NULL DEFAULT '',
19
+ task_type TEXT NOT NULL DEFAULT '',
20
+ model_id TEXT NOT NULL DEFAULT '',
21
+
22
+ total_calls INTEGER NOT NULL DEFAULT 0,
23
+ success_calls INTEGER NOT NULL DEFAULT 0,
24
+ failure_calls INTEGER NOT NULL DEFAULT 0,
25
+ timeout_calls INTEGER NOT NULL DEFAULT 0,
26
+
27
+ total_input_tok INTEGER NOT NULL DEFAULT 0,
28
+ total_output_tok INTEGER NOT NULL DEFAULT 0,
29
+ total_cached_tok INTEGER NOT NULL DEFAULT 0,
30
+
31
+ total_cost_usd REAL NOT NULL DEFAULT 0.0,
32
+ avg_latency_ms REAL NOT NULL DEFAULT 0.0,
33
+ p95_latency_ms REAL NOT NULL DEFAULT 0.0,
34
+
35
+ success_rate REAL NOT NULL DEFAULT 0.0,
36
+
37
+ source TEXT NOT NULL DEFAULT 'live',
38
+ created_at TEXT NOT NULL DEFAULT (datetime('now')),
39
+ updated_at TEXT NOT NULL DEFAULT (datetime('now')),
40
+
41
+ UNIQUE(account_id, date_key, event_type, event_name, workflow_key, task_type, model_id)
42
+ ON CONFLICT REPLACE
43
+ );