@inneranimalmedia/agentsam-sdk 2.6.3 → 2.6.4
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/AGENTSAM.md +6 -0
- package/README.md +16 -1
- package/bin/agentsam +16 -1
- package/docs/BRAND_INTELLIGENCE.md +1 -1
- package/docs/architecture/AGENTSAM_DISTRIBUTION_OWNERSHIP.md +176 -0
- package/docs/architecture/AGENTSAM_GO_RUNTIME.md +282 -0
- package/docs/architecture/CODEBASEINDEX_GUIDED_PATH.md +202 -0
- package/docs/architecture/FS_E2E_CLOSURE_RECEIPT.md +59 -0
- package/docs/architecture/LOCAL_FS_AUTHORITY.md +38 -0
- package/docs/architecture/LOCAL_STUDIO_CLOUDFLARE_OAUTH.md +28 -0
- package/docs/architecture/PLAN_CLI_AND_LOCAL_STUDIO_DESKTOP.md +96 -0
- package/docs/architecture/SAM_ACTIVITY_RECOVERY_RECEIPT.md +39 -0
- package/docs/architecture/SAM_DECISION_WORK_RECEIPT.md +54 -0
- package/docs/architecture/SAM_KERNEL.md +181 -0
- package/docs/architecture/SAM_MACHINE_NORMALIZATION_PRECOMMIT_REPORT.md +208 -0
- package/docs/architecture/SLASH_SKILLS_PORTABLE.md +116 -0
- package/docs/architecture/fs-e2e-receipt.latest.json +42 -0
- package/docs/architecture/previews/codebaseindex-guided-path/CODEBASEINDEX_GUIDED_PATH.md +202 -0
- package/docs/architecture/previews/codebaseindex-guided-path/index.html +321 -0
- package/migrations/d1/0010_portable_tickets_memory.sql +140 -0
- package/migrations/d1/0011_agentsam_skill_v2.sql +185 -0
- package/migrations/d1/0011b_agentsam_skill_v2_cutover.sql +22 -0
- package/migrations/d1/0011c_agentsam_skill_v2_backfill.sql +76 -0
- package/migrations/d1/0011d_agentsam_skill_v2_retrieval_revisions.sql +50 -0
- package/migrations/d1/0012_agentsam_tools_required_seed.sql +67 -0
- package/migrations/d1/0013_identity_oauth_states.sql +15 -0
- package/migrations/d1/0014_auth_event_log.sql +20 -0
- package/migrations/d1/0015_identity_oauth_state_app_id.sql +3 -0
- package/migrations/d1/README_PORTABLE_CONTROL_PLANE.md +16 -0
- package/migrations/sqlite/agentsam_skill_retrieval.portable.sql +42 -0
- package/package.json +19 -4
- package/packages/agentsam-contracts/src/errors.ts +16 -0
- package/packages/agentsam-errors/src/envelope.js +53 -0
- package/packages/agentsam-errors/src/index.js +1 -0
- package/packages/agentsam-errors/src/recovery.js +301 -0
- package/packages/agentsam-knowledge/src/providers/index.js +18 -6
- package/packages/connectors/cloudflare/src/routes.js +9 -0
- package/packages/connectors/cloudflare/tests/connector.test.mjs +26 -1
- package/packages/identity/.agentsam/features/oauth-login-portal/agentsam.feature.json +1 -1
- package/packages/identity/.agentsam/features/oauth-login-portal/routes.json +11 -2
- package/packages/identity/docs/PORTABLE_IDENTITY_ARCHITECTURE.md +50 -0
- package/packages/identity/migrations/D1_SCHEMA_MAPPING.md +31 -0
- package/packages/identity/migrations/sqlite/001_identity_core.sql +99 -0
- package/packages/identity/migrations/sqlite/002_identity_oauth_client.sql +38 -0
- package/packages/identity/migrations/sqlite/003_identity_oauth_server.sql +64 -0
- package/packages/identity/package.json +2 -2
- package/packages/identity/src/adapters/cloudflare-d1/index.js +122 -22
- package/packages/identity/src/adapters/sqlite/index.js +319 -0
- package/packages/identity/src/app/verify-app.js +95 -0
- package/packages/identity/src/contracts/identity-store.js +115 -0
- package/packages/identity/src/contracts/route-ids.js +30 -0
- package/packages/identity/src/contracts/route-projection.js +218 -0
- package/packages/identity/src/contracts/routes.js +11 -0
- package/packages/identity/src/core/browser-paths.js +4 -5
- package/packages/identity/src/core/constants.js +13 -8
- package/packages/identity/src/core/session-policy.js +32 -0
- package/packages/identity/src/frontend/auth-portal/pages/login.html +10 -10
- package/packages/identity/src/frontend/auth-portal/pages/reset.html +3 -3
- package/packages/identity/src/frontend/auth-portal/pages/signup.html +3 -3
- package/packages/identity/src/frontend/auth-portal/preview/dashboard-stub.html +1 -1
- package/packages/identity/src/index.js +25 -0
- package/packages/identity/src/oauth/README.md +10 -4
- package/packages/identity/src/oauth/credentials.js +20 -13
- package/packages/identity/src/oauth/finalize-inbound.js +1 -1
- package/packages/identity/src/oauth/iam-platform.js +8 -7
- package/packages/identity/src/oauth/redirect-paths.js +27 -36
- package/packages/identity/src/server/identity-service.js +30 -13
- package/packages/identity/src/server/mount-policy.js +30 -0
- package/packages/identity/src/server/post-auth.js +79 -0
- package/packages/identity/src/server/worker-router.js +104 -72
- package/packages/identity/tests/finalize-inbound-oauth.test.mjs +6 -6
- package/packages/identity/tests/iam-provider.test.mjs +1 -1
- package/packages/identity/tests/identity-service.test.mjs +36 -5
- package/packages/identity/tests/oauth-credentials.test.mjs +3 -1
- package/packages/identity/tests/portable-identity-architecture.test.mjs +157 -0
- package/packages/identity/tests/session-routes-policy.test.mjs +21 -0
- package/packages/theme-church-site/package.json +2 -1
- package/packages/theme-church-site/src/index.js +1 -0
- package/packages/theme-companions-site/package.json +2 -1
- package/packages/theme-companions-site/src/index.js +1 -0
- package/packages/theme-floors-site/package.json +2 -1
- package/packages/theme-floors-site/src/index.js +1 -0
- package/packages/theme-fuelnfree-site/package.json +2 -1
- package/packages/theme-fuelnfree-site/src/index.js +1 -0
- package/packages/theme-handyman-site/package.json +2 -1
- package/packages/theme-handyman-site/src/index.js +1 -0
- package/packages/theme-insurance-site/package.json +2 -1
- package/packages/theme-insurance-site/src/index.js +1 -0
- package/packages/theme-shinshu-site/package.json +2 -1
- package/packages/theme-shinshu-site/src/index.js +1 -0
- package/protocol/apps/agentsam.app.v1.schema.json +51 -0
- package/protocol/brand/brandpack.v1.schema.json +43 -0
- package/protocol/credentials/issue.v1.schema.json +38 -0
- package/protocol/database/connection.v1.schema.json +41 -0
- package/protocol/embeddings/embedding-profile.v1.schema.json +20 -0
- package/protocol/errors/error-envelope.schema.json +135 -1
- package/protocol/errors/recovery.v1.schema.json +50 -0
- package/protocol/runtime/workspace-fs.v1.schema.json +71 -0
- package/protocol/sam/activity.v1.schema.json +48 -0
- package/protocol/sam/answer.v1.schema.json +35 -0
- package/protocol/sam/calibration.v1.schema.json +21 -0
- package/protocol/sam/decision-receipt.v1.schema.json +29 -0
- package/protocol/sam/evaluation.v1.schema.json +19 -0
- package/protocol/sam/operation.schema.json +66 -0
- package/protocol/sam/outcome.v1.schema.json +36 -0
- package/protocol/sam/question.v1.schema.json +26 -0
- package/protocol/sam/registry.seed.json +153 -0
- package/protocol/sam/result.schema.json +53 -0
- package/protocol/sam/state.v1.schema.json +23 -0
- package/protocol/skills/agentsam.interaction.v1.schema.json +50 -0
- package/protocol/skills/agentsam.skill.v1.schema.json +57 -0
- package/protocol/ui/icon-registry.mjs +226 -0
- package/protocol/ui/icon.v1.schema.json +51 -0
- package/skills/README.md +22 -9
- package/skills/agentsam-codebaseindex/SKILL.md +225 -0
- package/skills/catalog.json +14 -0
- package/src/cli/command-catalog.js +130 -0
- package/src/cli/dispatch.js +48 -0
- package/src/cli.js +43 -1
- package/src/commands/api-key.js +244 -0
- package/src/commands/app.js +60 -28
- package/src/commands/brand.js +17 -19
- package/src/commands/codebaseindex.js +688 -0
- package/src/commands/env.js +152 -25
- package/src/commands/go.js +366 -53
- package/src/commands/interaction-clack.js +115 -0
- package/src/commands/models.js +1 -1
- package/src/commands/providers.js +62 -14
- package/src/commands/shell.js +43 -2
- package/src/commands/skill.js +248 -0
- package/src/commands/skills.js +1 -1
- package/src/commands/start-local.js +4 -0
- package/src/commands/whoami.js +90 -18
- package/src/go/build.js +229 -39
- package/src/go/cloudflare.js +506 -105
- package/src/go/container.js +120 -0
- package/src/go/contract.js +9 -4
- package/src/go/discover.js +149 -33
- package/src/go/index.js +15 -3
- package/src/go/native-probe-runner.mjs +119 -0
- package/src/go/{registry.js → official-registry.js} +64 -7
- package/src/go/official-release.js +10 -0
- package/src/go/receipts.js +77 -10
- package/src/go/verify.js +9 -2
- package/src/index.js +27 -0
- package/src/indexing/ingest/discover-models.js +298 -0
- package/src/indexing/ingest/inventory.js +243 -0
- package/src/indexing/ingest/job-graph.js +181 -0
- package/src/indexing/ingest/materials.js +210 -0
- package/src/lib/provider-credentials.js +63 -21
- package/src/lib/slash-commands.js +1 -0
- package/src/local-fs/capability.js +121 -0
- package/src/local-fs/freshness.js +75 -0
- package/src/local-fs/index.js +385 -0
- package/src/local-fs/paths.js +100 -0
- package/src/local-pty/server.js +295 -19
- package/src/mcp/client.js +2 -2
- package/src/models/ai-access-onboarding.js +112 -0
- package/src/models/discovery.js +10 -2
- package/src/models/inventory-core.js +9 -1
- package/src/sam/activity/index.js +183 -0
- package/src/sam/client.js +252 -0
- package/src/sam/decision/calibration.js +109 -0
- package/src/sam/decision/confidence.js +126 -0
- package/src/sam/decision/evaluate.js +157 -0
- package/src/sam/decision/evaluators/deterministic.js +341 -0
- package/src/sam/decision/evaluators/heuristic.js +61 -0
- package/src/sam/decision/evaluators/select.js +50 -0
- package/src/sam/decision/evaluators/semantic.js +149 -0
- package/src/sam/decision/hierarchical.js +61 -0
- package/src/sam/decision/index.js +53 -0
- package/src/sam/decision/policy.js +86 -0
- package/src/sam/decision/questions.js +120 -0
- package/src/sam/decision/receipt.js +148 -0
- package/src/sam/decision/state.js +117 -0
- package/src/sam/decision/types.js +22 -0
- package/src/sam/decision/validate.js +200 -0
- package/src/sam/define.js +51 -0
- package/src/sam/index.js +65 -0
- package/src/sam/operations/brand-scan.js +62 -0
- package/src/sam/operations/cad-blender-inspect.js +36 -0
- package/src/sam/operations/codebaseindex-ingest.js +49 -0
- package/src/sam/operations/decision-evaluate.js +59 -0
- package/src/sam/operations/planning-astar.js +77 -0
- package/src/sam/operations/planning-goap.js +60 -0
- package/src/sam/operations/repository-inspect.js +72 -0
- package/src/sam/operations/security-scan.js +33 -0
- package/src/sam/operations/terminal-exec.js +29 -0
- package/src/sam/planning/astar.js +311 -0
- package/src/sam/planning/goap.js +177 -0
- package/src/sam/planning/index.js +21 -0
- package/src/sam/planning/state.js +84 -0
- package/src/sam/registry.js +48 -0
- package/src/sam/result.js +77 -0
- package/src/sam/seed.js +44 -0
- package/src/sam/types.js +91 -0
- package/src/skills/catalog.js +64 -0
- package/src/skills/content-resolver.js +124 -0
- package/src/skills/hosted-store.js +37 -0
- package/src/skills/index.js +29 -64
- package/src/skills/interaction.js +102 -0
- package/src/skills/local-store.js +228 -0
- package/src/skills/manifest.js +104 -0
- package/src/skills/metrics.js +31 -0
- package/src/skills/registry.js +184 -0
- package/src/skills/runtime.js +287 -0
- package/src/skills/slash.js +44 -0
- package/src/ui/cli/help.js +94 -101
- package/test/cli/api-key-env-whoami.test.mjs +129 -0
- package/test/cli/codebaseindex-plan-ux.test.mjs +37 -0
- package/test/cli/go.test.mjs +62 -5
- package/test/cli/skill-npm-and-env.test.mjs +52 -0
- package/test/cli/wireframes-go-registry.test.mjs +87 -2
- package/test/go/build-source-identity.test.mjs +31 -0
- package/test/go/cloudflare-probe.test.mjs +274 -10
- package/test/go/distribution.test.mjs +28 -0
- package/test/integration/ai-access-onboarding.test.mjs +47 -0
- package/test/integration/cli-help.test.mjs +1 -1
- package/test/integration/cms-site-tenancy-contract.test.mjs +6 -6
- package/test/integration/codebaseindex-ingest.test.mjs +166 -0
- package/test/integration/icon-registry.test.mjs +67 -0
- package/test/integration/ingest-discover-models.test.mjs +30 -0
- package/test/integration/install-script.test.mjs +12 -9
- package/test/integration/local-fs.test.mjs +113 -0
- package/test/integration/provider-env-cli.test.mjs +2 -1
- package/test/integration/sam-activity-recovery.test.mjs +147 -0
- package/test/integration/sam-decision.test.mjs +584 -0
- package/test/integration/sam-kernel.test.mjs +99 -0
- package/test/integration/sam-planning-astar.test.mjs +279 -0
- package/test/integration/skill-runtime.test.mjs +240 -0
- package/test/integration/studio-fs-pty-e2e.test.mjs +294 -0
- package/test/models.test.mjs +14 -7
- package/test/shell.test.mjs +4 -4
package/AGENTSAM.md
CHANGED
|
@@ -2,6 +2,12 @@
|
|
|
2
2
|
|
|
3
3
|
This file defines stable behavior for AgentSam agents using the portable SDK. It is not account state, project state, a run log, or a replacement for repository-specific `.agentsamrules`.
|
|
4
4
|
|
|
5
|
+
**Naming:** AgentSam is the product. **SAM** means **Systematic Autonomous Machinery** — the typed
|
|
6
|
+
operation/execution spine (`sam.invoke`, modules, receipts). In docs and code, `sam` is the
|
|
7
|
+
conventional client variable for that machinery, never a human identity. Prefer “SAM resolves…” /
|
|
8
|
+
“AgentSam executes through SAM…” over anthropomorphic phrasing. Architecture SSOT:
|
|
9
|
+
`docs/architecture/SAM_KERNEL.md`.
|
|
10
|
+
|
|
5
11
|
## Execution
|
|
6
12
|
|
|
7
13
|
- Infer routine implementation details when repository evidence makes the answer clear; do not block on unnecessary questions.
|
package/README.md
CHANGED
|
@@ -5,6 +5,21 @@ security, identity, scaffolding, and delivery capabilities with optional AgentSa
|
|
|
5
5
|
The interactive CLI can run the same bounded capabilities through an explicitly selected model while
|
|
6
6
|
keeping model choice, reasoning effort, processing tier, credentials, approvals, context, and cost inspectable.
|
|
7
7
|
|
|
8
|
+
**SAM** = **Systematic Autonomous Machinery** — the execution spine under AgentSam (not a person).
|
|
9
|
+
The conventional client variable is `sam`:
|
|
10
|
+
|
|
11
|
+
```js
|
|
12
|
+
import { AgentSamClient } from '@inneranimalmedia/agentsam-sdk';
|
|
13
|
+
|
|
14
|
+
const sam = new AgentSamClient();
|
|
15
|
+
const repo = await sam.invoke('repository.inspect', { root: '.' });
|
|
16
|
+
// or: await sam.repository.inspect({ root: '.' });
|
|
17
|
+
console.log(repo.data.summary, repo.receipt.id);
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
See [SAM Kernel](docs/architecture/SAM_KERNEL.md) for `invoke` / `describe` / `discover`,
|
|
21
|
+
operation IDs, and the universal `SamResult` envelope.
|
|
22
|
+
|
|
8
23
|
**npm:** `@inneranimalmedia/agentsam-sdk` · **Source:** [GitHub](https://github.com/SamPrimeaux/agentsam-sdk)
|
|
9
24
|
|
|
10
25
|
Node 22.5+ is required. Docker is optional for container commands. Python 3.10+ is required
|
|
@@ -25,7 +40,7 @@ an npm-bootstrap script; standalone SEA binaries are planned, not shipped yet):
|
|
|
25
40
|
```sh
|
|
26
41
|
curl -fsSL https://agentsam.inneranimalmedia.com/install | bash
|
|
27
42
|
# a specific version, channel, or bundled app launcher:
|
|
28
|
-
curl -fsSL https://agentsam.inneranimalmedia.com/install | bash -s -- --version 2.6.
|
|
43
|
+
curl -fsSL https://agentsam.inneranimalmedia.com/install | bash -s -- --version 2.6.3
|
|
29
44
|
curl -fsSL https://agentsam.inneranimalmedia.com/install | bash -s -- --channel beta
|
|
30
45
|
curl -fsSL https://agentsam.inneranimalmedia.com/install | bash -s -- --app cad
|
|
31
46
|
```
|
package/bin/agentsam
CHANGED
|
@@ -1,2 +1,17 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
|
|
2
|
+
/**
|
|
3
|
+
* AgentSam CLI entry.
|
|
4
|
+
* Suppress only the node:sqlite ExperimentalWarning — keep other warnings visible.
|
|
5
|
+
*/
|
|
6
|
+
process.on("warning", (warning) => {
|
|
7
|
+
if (
|
|
8
|
+
warning?.name === "ExperimentalWarning" &&
|
|
9
|
+
/SQLite is an experimental feature/i.test(String(warning.message || ""))
|
|
10
|
+
) {
|
|
11
|
+
return;
|
|
12
|
+
}
|
|
13
|
+
// Mirror default Node warning printer for everything else.
|
|
14
|
+
console.error(warning.stack || `${warning.name}: ${warning.message}`);
|
|
15
|
+
});
|
|
16
|
+
|
|
17
|
+
await import("../src/cli.js");
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
| 11. TUI views | partial | activity panel during scan; full shell mockup not rebuilt |
|
|
18
18
|
| 12. No-model experience | implemented | tests + CLI without model |
|
|
19
19
|
| 13. Model-assisted | not applicable yet | brand.plan marked model_assisted_optional |
|
|
20
|
-
| 14. GOAP integration |
|
|
20
|
+
| 14. GOAP integration | done | `--goap` uses `sam-goap-astar-v1` (A* over brand GOAP actions) |
|
|
21
21
|
| 15. Receipts | partial | `receipt` + `next_actions` on scan/plan |
|
|
22
22
|
| 16. Presets | implemented | cms → cms,knowledge,brand,theme |
|
|
23
23
|
| 17. CLI commands | implemented | `brand`, `plan brand` |
|
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
# AgentSam Distribution, Ownership, and Telemetry Boundaries
|
|
2
|
+
|
|
3
|
+
## Principle
|
|
4
|
+
|
|
5
|
+
One AgentSam ecosystem does not mean one giant package, one credential domain, one runtime, or one analytics signal.
|
|
6
|
+
|
|
7
|
+
Keep these authorities distinct:
|
|
8
|
+
|
|
9
|
+
- SDK/CLI — umbrella entry point, protocols, orchestration, discovery.
|
|
10
|
+
- Products — things users independently install/open, such as Local Studio and CAD Creator.
|
|
11
|
+
- Services — independently deployed backends such as agentsam-go-worker.
|
|
12
|
+
- Machine runtime — one agentsamd installation per user machine where required.
|
|
13
|
+
- InnerAnimalMedia infrastructure — InnerAnimalMedia-owned Cloudflare, D1/R2, Workers, ExecOS, MCP, Tail, VMs.
|
|
14
|
+
- Customer/self-host infrastructure — resources owned by the customer's explicitly connected account.
|
|
15
|
+
|
|
16
|
+
## Normal user vs self-host vs official release
|
|
17
|
+
|
|
18
|
+
### Normal user
|
|
19
|
+
|
|
20
|
+
@inneranimalmedia/agentsam-sdk
|
|
21
|
+
│
|
|
22
|
+
▼
|
|
23
|
+
AgentSam CLI
|
|
24
|
+
Local Studio
|
|
25
|
+
│
|
|
26
|
+
┌──────┴─────────┐
|
|
27
|
+
▼ ▼
|
|
28
|
+
agentsamd official hosted
|
|
29
|
+
user machine services
|
|
30
|
+
|
|
31
|
+
Normal users do not need service source trees or InnerAnimalMedia infrastructure credentials.
|
|
32
|
+
|
|
33
|
+
### Advanced self-host
|
|
34
|
+
|
|
35
|
+
installed @inneranimalmedia/agentsam-go-worker
|
|
36
|
+
│
|
|
37
|
+
▼
|
|
38
|
+
Wrangler identity
|
|
39
|
+
│
|
|
40
|
+
▼
|
|
41
|
+
explicit USER Cloudflare account
|
|
42
|
+
│
|
|
43
|
+
▼
|
|
44
|
+
user's Worker/Container
|
|
45
|
+
│
|
|
46
|
+
▼
|
|
47
|
+
local AgentSam registry
|
|
48
|
+
|
|
49
|
+
A self-host operation never writes inneranimalmedia-business.
|
|
50
|
+
|
|
51
|
+
### InnerAnimalMedia official release
|
|
52
|
+
|
|
53
|
+
clean maintainer source
|
|
54
|
+
│
|
|
55
|
+
▼
|
|
56
|
+
explicit InnerAnimalMedia release guard
|
|
57
|
+
│
|
|
58
|
+
▼
|
|
59
|
+
explicit InnerAnimalMedia CF account
|
|
60
|
+
│
|
|
61
|
+
▼
|
|
62
|
+
official Worker/Container
|
|
63
|
+
│
|
|
64
|
+
healthy proof
|
|
65
|
+
│
|
|
66
|
+
▼
|
|
67
|
+
inneranimalmedia-business
|
|
68
|
+
agentsam_products
|
|
69
|
+
asset_relationships
|
|
70
|
+
|
|
71
|
+
The official registry path is not imported as the default meaning of deploy.
|
|
72
|
+
|
|
73
|
+
## Cloudflare identity boundary
|
|
74
|
+
|
|
75
|
+
Wrangler is the deploy authority. AgentSam uses wrangler whoami --json, requires an authenticated account, requires explicit selection when multiple accounts are available, binds the chosen account into the child process, and records only non-secret account metadata in receipts.
|
|
76
|
+
|
|
77
|
+
Distributed packages never include InnerAnimalMedia Cloudflare credentials.
|
|
78
|
+
|
|
79
|
+
## Repository/package boundary
|
|
80
|
+
|
|
81
|
+
@inneranimalmedia/agentsam-sdk remains the umbrella package. Deployable or independently installable products/services can be their own packages.
|
|
82
|
+
|
|
83
|
+
The Go service is:
|
|
84
|
+
|
|
85
|
+
@inneranimalmedia/agentsam-go-worker
|
|
86
|
+
|
|
87
|
+
The SDK discovers that package instead of assuming:
|
|
88
|
+
|
|
89
|
+
<sdk install>/apps/agentsam-go-worker
|
|
90
|
+
|
|
91
|
+
This lets a normal SDK tarball remain focused while preserving a single AgentSam user experience.
|
|
92
|
+
|
|
93
|
+
## Local state boundary
|
|
94
|
+
|
|
95
|
+
Installed packages are source artifacts, not mutable user state.
|
|
96
|
+
|
|
97
|
+
Use:
|
|
98
|
+
|
|
99
|
+
<caller>/.agentsam/
|
|
100
|
+
|
|
101
|
+
for build/deploy receipts, local product projections, and transient proof artifacts.
|
|
102
|
+
|
|
103
|
+
Do not write runtime state into:
|
|
104
|
+
|
|
105
|
+
node_modules/@inneranimalmedia/...
|
|
106
|
+
|
|
107
|
+
## Product/runtime boundary
|
|
108
|
+
|
|
109
|
+
User-facing products should declare runtime requirements rather than bundle complete daemons.
|
|
110
|
+
|
|
111
|
+
Local Studio ──┐
|
|
112
|
+
CAD Creator ───┼──► one agentsamd ─► capability inventory
|
|
113
|
+
Ecommerce ─────┘
|
|
114
|
+
|
|
115
|
+
Hosted services such as agentsam-go-worker remain services. agentsamd remains the user-machine execution runtime.
|
|
116
|
+
|
|
117
|
+
## Distribution analytics: keep funnel stages separate
|
|
118
|
+
|
|
119
|
+
Do not turn package installation into hidden database access.
|
|
120
|
+
|
|
121
|
+
Measure distinct signals:
|
|
122
|
+
|
|
123
|
+
DISCOVERY
|
|
124
|
+
npm aggregate downloads
|
|
125
|
+
docs/site interest
|
|
126
|
+
↓
|
|
127
|
+
ACTIVATION
|
|
128
|
+
AgentSam first run
|
|
129
|
+
Local Studio opened
|
|
130
|
+
agentsamd booted
|
|
131
|
+
↓
|
|
132
|
+
ADOPTION
|
|
133
|
+
products/apps enabled
|
|
134
|
+
repositories registered
|
|
135
|
+
↓
|
|
136
|
+
VALUE
|
|
137
|
+
successful runs
|
|
138
|
+
packages/deployments verified
|
|
139
|
+
↓
|
|
140
|
+
RETENTION
|
|
141
|
+
returning active installations/accounts/projects
|
|
142
|
+
↓
|
|
143
|
+
INFRA HEALTH
|
|
144
|
+
Workers
|
|
145
|
+
Go runtime
|
|
146
|
+
ExecOS
|
|
147
|
+
agentsamd
|
|
148
|
+
MCP
|
|
149
|
+
|
|
150
|
+
Npm download counts are distribution metrics, not unique-user counts.
|
|
151
|
+
|
|
152
|
+
Do not add a postinstall phone-home path. First-run/product telemetry should be disclosed/configurable and constrained to product facts. Do not collect home directories, working paths, repository names, git remotes, hostnames, usernames, command contents, credentials, or environment variables as activation telemetry.
|
|
153
|
+
|
|
154
|
+
If an anonymous installation identifier is used, generate a random local UUID; never derive it from hardware identifiers.
|
|
155
|
+
|
|
156
|
+
## Telemetry authorities
|
|
157
|
+
|
|
158
|
+
Use separate authorities:
|
|
159
|
+
|
|
160
|
+
- npm/registry data — aggregate package distribution.
|
|
161
|
+
- AgentSam analytics ingestion service — validated activation/adoption/value events.
|
|
162
|
+
- inneranimalmedia-tail — InnerAnimalMedia runtime/Worker observability where Cloudflare Tail is the appropriate primitive.
|
|
163
|
+
|
|
164
|
+
Do not make inneranimalmedia-tail the install counter. Treat it as a registered infrastructure primitive in SAM's topology and assign it runtime-observability responsibilities deliberately.
|
|
165
|
+
|
|
166
|
+
A future analytics ingestion path can normalize events from CLI, Local Studio, agentsamd, hosted services, npm metric collectors, and Tail into aggregate analytics without granting distributed clients direct D1 access.
|
|
167
|
+
|
|
168
|
+
## Scale objective
|
|
169
|
+
|
|
170
|
+
The purpose is not to collapse dozens of repositories and Workers into one monolith.
|
|
171
|
+
|
|
172
|
+
The objective is to give every asset a known identity, capabilities, dependencies, health state, deployment receipt, ownership boundary, and protocol relationship so SAM can operate a large software estate systematically.
|
|
173
|
+
|
|
174
|
+
Protect this rule:
|
|
175
|
+
|
|
176
|
+
One authority per concept; multiple implementations/adapters where appropriate.
|
|
@@ -0,0 +1,282 @@
|
|
|
1
|
+
# AgentSam Go Runtime
|
|
2
|
+
|
|
3
|
+
## Purpose
|
|
4
|
+
|
|
5
|
+
Go is AgentSam's native deterministic machinery layer. It is reused by two different ownership surfaces:
|
|
6
|
+
|
|
7
|
+
- agentsam-go-worker — an independently deployed hosted/self-host service.
|
|
8
|
+
- agentsamd — the user-machine runtime that products can share.
|
|
9
|
+
|
|
10
|
+
Those are not the same product. They should reuse protocol-compatible native core code without sharing deployment authority.
|
|
11
|
+
|
|
12
|
+
The TypeScript/protocol layer remains canonical contract authority.
|
|
13
|
+
|
|
14
|
+
## Current hosted-service topology
|
|
15
|
+
|
|
16
|
+
AgentSam / SAM
|
|
17
|
+
|
|
|
18
|
+
v
|
|
19
|
+
canonical runtime protocol
|
|
20
|
+
|
|
|
21
|
+
v
|
|
22
|
+
Cloudflare Worker
|
|
23
|
+
|
|
|
24
|
+
v
|
|
25
|
+
Go Container
|
|
26
|
+
|
|
27
|
+
The Worker owns edge routing and deploy-time identity. The container owns native Go execution.
|
|
28
|
+
|
|
29
|
+
Normal AgentSam users consume the official hosted service where appropriate. They do not need to deploy this Worker just to use AgentSam.
|
|
30
|
+
|
|
31
|
+
## User-machine topology
|
|
32
|
+
|
|
33
|
+
Local Studio ──┐
|
|
34
|
+
CAD Creator ───┼──► agentsamd
|
|
35
|
+
Ecommerce ─────┘ |
|
|
36
|
+
├─ filesystem
|
|
37
|
+
├─ watcher
|
|
38
|
+
├─ Merkle
|
|
39
|
+
├─ jobs
|
|
40
|
+
├─ PTY/process
|
|
41
|
+
└─ activity
|
|
42
|
+
|
|
43
|
+
Products declare runtime capabilities. They do not each clone a complete daemon.
|
|
44
|
+
|
|
45
|
+
## Contract authority
|
|
46
|
+
|
|
47
|
+
TypeScript/protocol remains canonical. Go implements shared contracts.
|
|
48
|
+
|
|
49
|
+
Consequences:
|
|
50
|
+
|
|
51
|
+
- no Go-only public ErrorEnvelope,
|
|
52
|
+
- no Go-only activity vocabulary,
|
|
53
|
+
- no Go-only planning semantics,
|
|
54
|
+
- no browser contract moves into Go,
|
|
55
|
+
- shared behavior is judged by conformance fixtures.
|
|
56
|
+
|
|
57
|
+
Rust/Tauri remains responsible for desktop-shell concerns such as folder selection, keychain, application lifecycle, updater, deep links, and launching/supervising agentsamd.
|
|
58
|
+
|
|
59
|
+
## Current Go service capabilities
|
|
60
|
+
|
|
61
|
+
The deployed service currently owns:
|
|
62
|
+
|
|
63
|
+
- health/build identity,
|
|
64
|
+
- runtime inventory,
|
|
65
|
+
- capability inventory,
|
|
66
|
+
- deterministic SHA-256,
|
|
67
|
+
- deterministic static inspection,
|
|
68
|
+
- canonical AgentSam ErrorEnvelope-compatible request failures.
|
|
69
|
+
|
|
70
|
+
The Worker exposes edge health separately so operators can distinguish edge availability from native-container health.
|
|
71
|
+
|
|
72
|
+
## Source and build identity
|
|
73
|
+
|
|
74
|
+
Source identity must remain truthful across development and distribution.
|
|
75
|
+
|
|
76
|
+
Maintainer checkout:
|
|
77
|
+
|
|
78
|
+
git:<commit-sha>
|
|
79
|
+
|
|
80
|
+
Published service artifact:
|
|
81
|
+
|
|
82
|
+
npm:@inneranimalmedia/agentsam-go-worker@<version>
|
|
83
|
+
|
|
84
|
+
Fallback only when neither authority is available:
|
|
85
|
+
|
|
86
|
+
tree:<deterministic-source-digest>
|
|
87
|
+
|
|
88
|
+
The build receipt also records the deterministic source-tree digest.
|
|
89
|
+
|
|
90
|
+
The local/native build proof requires:
|
|
91
|
+
|
|
92
|
+
- go test ./...,
|
|
93
|
+
- go vet ./...,
|
|
94
|
+
- native binary build,
|
|
95
|
+
- SHA-256 binary digest,
|
|
96
|
+
- native process boot,
|
|
97
|
+
- source identity match,
|
|
98
|
+
- health/runtime/capabilities/hash/inspect probes,
|
|
99
|
+
- canonical malformed-request ErrorEnvelope,
|
|
100
|
+
- graceful shutdown.
|
|
101
|
+
|
|
102
|
+
The Linux verification container receives the same intended source identity and must be linux/amd64 and nonroot.
|
|
103
|
+
|
|
104
|
+
The live deployment is not accepted merely because Wrangler returned success. External edge and native health must report the intended source identity.
|
|
105
|
+
|
|
106
|
+
## Distribution boundary
|
|
107
|
+
|
|
108
|
+
The Go service is packaged independently:
|
|
109
|
+
|
|
110
|
+
@inneranimalmedia/agentsam-go-worker
|
|
111
|
+
|
|
112
|
+
The SDK does not assume its own npm tarball contains apps/agentsam-go-worker.
|
|
113
|
+
|
|
114
|
+
Installed-package discovery resolves the service package through Node package resolution. User state belongs under the caller's .agentsam directory; the package under node_modules remains source-only.
|
|
115
|
+
|
|
116
|
+
## Cloudflare account authority
|
|
117
|
+
|
|
118
|
+
Before any self-host or official live deployment AgentSam asks Wrangler for identity:
|
|
119
|
+
|
|
120
|
+
wrangler whoami --json
|
|
121
|
+
|
|
122
|
+
The deploy path fails closed when authentication is missing, when no account is available, or when multiple accounts exist without an explicit selection.
|
|
123
|
+
|
|
124
|
+
The chosen account is observable and bound into the Wrangler process with CLOUDFLARE_ACCOUNT_ID.
|
|
125
|
+
|
|
126
|
+
No distributed package contains an InnerAnimalMedia production credential.
|
|
127
|
+
|
|
128
|
+
## Self-host lifecycle
|
|
129
|
+
|
|
130
|
+
Self-host is an advanced opt-in path:
|
|
131
|
+
|
|
132
|
+
agentsam go --cloudflare agentsam-go-worker \
|
|
133
|
+
--account <user-cloudflare-account-id> \
|
|
134
|
+
--yes
|
|
135
|
+
|
|
136
|
+
The sequence is:
|
|
137
|
+
|
|
138
|
+
installed or development service source
|
|
139
|
+
|
|
|
140
|
+
v
|
|
141
|
+
source identity
|
|
142
|
+
|
|
|
143
|
+
v
|
|
144
|
+
Go tests + vet
|
|
145
|
+
|
|
|
146
|
+
v
|
|
147
|
+
native binary + digest
|
|
148
|
+
|
|
|
149
|
+
v
|
|
150
|
+
native boot/probes/shutdown
|
|
151
|
+
|
|
|
152
|
+
v
|
|
153
|
+
linux/amd64 nonroot container
|
|
154
|
+
|
|
|
155
|
+
v
|
|
156
|
+
container boot/probes/shutdown
|
|
157
|
+
|
|
|
158
|
+
v
|
|
159
|
+
explicit USER Cloudflare account
|
|
160
|
+
|
|
|
161
|
+
v
|
|
162
|
+
Wrangler deploy
|
|
163
|
+
|
|
|
164
|
+
v
|
|
165
|
+
Cloudflare deployment/version identity
|
|
166
|
+
|
|
|
167
|
+
v
|
|
168
|
+
external edge + native probes
|
|
169
|
+
|
|
|
170
|
+
v
|
|
171
|
+
deployment receipt
|
|
172
|
+
|
|
|
173
|
+
v
|
|
174
|
+
local AgentSam registry
|
|
175
|
+
|
|
176
|
+
Self-host never mutates inneranimalmedia-business.
|
|
177
|
+
|
|
178
|
+
## InnerAnimalMedia official-release lifecycle
|
|
179
|
+
|
|
180
|
+
InnerAnimalMedia product registration is a separate authority:
|
|
181
|
+
|
|
182
|
+
AGENTSAM_INNERANIMALMEDIA_OFFICIAL_RELEASE=1 \
|
|
183
|
+
agentsam go --cloudflare agentsam-go-worker \
|
|
184
|
+
--official-release \
|
|
185
|
+
--account <iam-account-id> \
|
|
186
|
+
--yes
|
|
187
|
+
|
|
188
|
+
Requirements:
|
|
189
|
+
|
|
190
|
+
- maintainer/development source,
|
|
191
|
+
- explicit InnerAnimalMedia release guard,
|
|
192
|
+
- explicit InnerAnimalMedia Cloudflare account,
|
|
193
|
+
- healthy live probes,
|
|
194
|
+
- deployment/version identity,
|
|
195
|
+
- only then remote agentsam_products and asset_relationships projection.
|
|
196
|
+
|
|
197
|
+
The InnerAnimalMedia D1 adapter lives in official-registry.js specifically so generic self-host deployment does not import InnerAnimalMedia registration as a default side effect.
|
|
198
|
+
|
|
199
|
+
## Dry run
|
|
200
|
+
|
|
201
|
+
Dry run is:
|
|
202
|
+
|
|
203
|
+
agentsam go --cloudflare agentsam-go-worker \
|
|
204
|
+
--dry-run \
|
|
205
|
+
--account <cloudflare-account-id>
|
|
206
|
+
|
|
207
|
+
It still performs Go build/probes, Linux container build/probes, Wrangler identity/account resolution, and Wrangler deploy --dry-run.
|
|
208
|
+
|
|
209
|
+
It does not create a live deployment and does not mutate InnerAnimalMedia D1.
|
|
210
|
+
|
|
211
|
+
Skip-deploy is a different explicit local-only mode and cannot be used as deployment proof.
|
|
212
|
+
|
|
213
|
+
## Errors and recovery
|
|
214
|
+
|
|
215
|
+
Go preserves native evidence when present, but public failures classify through AgentSam's canonical ErrorEnvelope.
|
|
216
|
+
|
|
217
|
+
Recovery remains centralized in AgentSam. ErrorEnvelope feeds planRecovery / agentsam.recovery.v1 semantics used by other runtimes. Go does not own an independent retry brain.
|
|
218
|
+
|
|
219
|
+
Unsafe writes with unknown side effects must reconcile before retry. Provider/model fallback follows shared semantic-compatibility rules.
|
|
220
|
+
|
|
221
|
+
## Activity
|
|
222
|
+
|
|
223
|
+
Native operations feed agentsam.activity.v1; Go does not create a separate event vocabulary.
|
|
224
|
+
|
|
225
|
+
Near-term events include runtime.started, filesystem.read, filesystem.write, watcher.resync, merkle.updated, job.started, job.completed, and runtime.degraded. Studio Activity / Computational Hyperspace and the CLI in-flight TUI consume the same stream.
|
|
226
|
+
|
|
227
|
+
## Graduation toward agentsamd
|
|
228
|
+
|
|
229
|
+
The reusable native core should progressively own:
|
|
230
|
+
|
|
231
|
+
runtime/
|
|
232
|
+
workspace/
|
|
233
|
+
filesystem/
|
|
234
|
+
watch/
|
|
235
|
+
hash/
|
|
236
|
+
merkle/
|
|
237
|
+
jobs/
|
|
238
|
+
runtimeinfo/
|
|
239
|
+
health/
|
|
240
|
+
|
|
241
|
+
Executables/adapters reuse that core:
|
|
242
|
+
|
|
243
|
+
cmd/server
|
|
244
|
+
cmd/agentsamd
|
|
245
|
+
|
|
246
|
+
The same core can support Cloudflare Container, local daemon, and remote daemon execution. Deployment/auth/ownership adapters remain target-specific.
|
|
247
|
+
|
|
248
|
+
## Conformance
|
|
249
|
+
|
|
250
|
+
Where TypeScript and Go implement the same protocol, use the same fixtures.
|
|
251
|
+
|
|
252
|
+
First conformance targets:
|
|
253
|
+
|
|
254
|
+
- runtime response shape,
|
|
255
|
+
- SHA-256 result,
|
|
256
|
+
- ErrorEnvelope classification for invalid input,
|
|
257
|
+
- path containment,
|
|
258
|
+
- version conflict semantics.
|
|
259
|
+
|
|
260
|
+
Then:
|
|
261
|
+
|
|
262
|
+
- file-watch events,
|
|
263
|
+
- Merkle roots/deltas,
|
|
264
|
+
- workspace filesystem behavior,
|
|
265
|
+
- cancellable job behavior.
|
|
266
|
+
|
|
267
|
+
A language-specific reinterpretation of a canonical contract is a failure.
|
|
268
|
+
|
|
269
|
+
## Next native capabilities
|
|
270
|
+
|
|
271
|
+
After the deployed service seed remains boring and repeatable, graduate capabilities in this order:
|
|
272
|
+
|
|
273
|
+
1. workspace filesystem behind workspace-fs.v1,
|
|
274
|
+
2. native filesystem watcher,
|
|
275
|
+
3. SHA/Merkle branch updates,
|
|
276
|
+
4. runtime capability/health state,
|
|
277
|
+
5. cancellable durable jobs,
|
|
278
|
+
6. PTY coordination where it belongs.
|
|
279
|
+
|
|
280
|
+
A* remains TypeScript-canonical until real workload measurements justify a native planner.
|
|
281
|
+
|
|
282
|
+
See AGENTSAM_DISTRIBUTION_OWNERSHIP.md for package, credential, registry, and telemetry ownership boundaries.
|