@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
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
-- 0011_agentsam_skill_v2.sql
|
|
2
|
+
-- Skill redesign: identity/config · metrics · retrieval (three tables).
|
|
3
|
+
-- Fresh installs: apply this file directly.
|
|
4
|
+
-- Production hosts with legacy agentsam_skill: use 0011b_agentsam_skill_v2_cutover.sql
|
|
5
|
+
--
|
|
6
|
+
-- Ownership: account_id only (no tenant_id / user_id / person_uuid / workspace_id / scope).
|
|
7
|
+
-- No FK to agentsam_account — that table is not present on IAM D1; account_id aligns with
|
|
8
|
+
-- accounts.id (au_*) when the row is account-owned.
|
|
9
|
+
--
|
|
10
|
+
-- Published npm lane: partial unique on slash_trigger WHERE is_published = 1
|
|
11
|
+
-- (two accounts cannot both publish the same /trigger).
|
|
12
|
+
|
|
13
|
+
CREATE TABLE IF NOT EXISTS agentsam_skill (
|
|
14
|
+
id TEXT PRIMARY KEY,
|
|
15
|
+
account_id TEXT NOT NULL,
|
|
16
|
+
|
|
17
|
+
name TEXT NOT NULL,
|
|
18
|
+
slash_trigger TEXT NOT NULL
|
|
19
|
+
CHECK (slash_trigger GLOB '/[a-z0-9][a-z0-9-]*'),
|
|
20
|
+
|
|
21
|
+
npm_package_name TEXT,
|
|
22
|
+
npm_version TEXT,
|
|
23
|
+
is_published INTEGER NOT NULL DEFAULT 0 CHECK (is_published IN (0,1)),
|
|
24
|
+
|
|
25
|
+
description TEXT NOT NULL DEFAULT '',
|
|
26
|
+
content_markdown TEXT NOT NULL DEFAULT '',
|
|
27
|
+
file_path TEXT NOT NULL DEFAULT '',
|
|
28
|
+
content_checksum TEXT NOT NULL DEFAULT '',
|
|
29
|
+
|
|
30
|
+
globs TEXT NOT NULL DEFAULT '[]',
|
|
31
|
+
always_apply INTEGER NOT NULL DEFAULT 0 CHECK (always_apply IN (0,1)),
|
|
32
|
+
task_types_json TEXT NOT NULL DEFAULT '[]',
|
|
33
|
+
route_keys_json TEXT NOT NULL DEFAULT '[]',
|
|
34
|
+
|
|
35
|
+
access_mode TEXT NOT NULL DEFAULT 'read_write'
|
|
36
|
+
CHECK (access_mode IN ('read_only','read_write')),
|
|
37
|
+
|
|
38
|
+
icon TEXT NOT NULL DEFAULT '',
|
|
39
|
+
tags_json TEXT NOT NULL DEFAULT '[]',
|
|
40
|
+
metadata_json TEXT NOT NULL DEFAULT '{}',
|
|
41
|
+
|
|
42
|
+
invocation_count INTEGER NOT NULL DEFAULT 0,
|
|
43
|
+
last_invoked_at TEXT,
|
|
44
|
+
|
|
45
|
+
version INTEGER NOT NULL DEFAULT 1,
|
|
46
|
+
is_active INTEGER NOT NULL DEFAULT 1 CHECK (is_active IN (0,1)),
|
|
47
|
+
sort_order INTEGER NOT NULL DEFAULT 0,
|
|
48
|
+
|
|
49
|
+
created_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
50
|
+
updated_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
51
|
+
|
|
52
|
+
UNIQUE (account_id, slash_trigger),
|
|
53
|
+
UNIQUE (npm_package_name, npm_version)
|
|
54
|
+
);
|
|
55
|
+
|
|
56
|
+
CREATE INDEX IF NOT EXISTS idx_skill_account ON agentsam_skill(account_id);
|
|
57
|
+
CREATE INDEX IF NOT EXISTS idx_skill_active ON agentsam_skill(is_active) WHERE is_active = 1;
|
|
58
|
+
CREATE INDEX IF NOT EXISTS idx_skill_published ON agentsam_skill(is_published) WHERE is_published = 1;
|
|
59
|
+
|
|
60
|
+
CREATE UNIQUE INDEX IF NOT EXISTS idx_skill_published_slash
|
|
61
|
+
ON agentsam_skill(slash_trigger) WHERE is_published = 1;
|
|
62
|
+
|
|
63
|
+
CREATE TABLE IF NOT EXISTS agentsam_skill_metrics (
|
|
64
|
+
skill_id TEXT PRIMARY KEY REFERENCES agentsam_skill(id) ON DELETE CASCADE,
|
|
65
|
+
byte_size INTEGER NOT NULL DEFAULT 0,
|
|
66
|
+
char_count INTEGER NOT NULL DEFAULT 0,
|
|
67
|
+
line_count INTEGER NOT NULL DEFAULT 0,
|
|
68
|
+
estimated_tokens INTEGER NOT NULL DEFAULT 0,
|
|
69
|
+
estimation_method TEXT NOT NULL DEFAULT 'chars_div_4'
|
|
70
|
+
CHECK (estimation_method IN ('chars_div_4','tiktoken_cl100k','tiktoken_o200k','provider_reported')),
|
|
71
|
+
computed_at TEXT NOT NULL DEFAULT (datetime('now'))
|
|
72
|
+
);
|
|
73
|
+
|
|
74
|
+
CREATE TABLE IF NOT EXISTS agentsam_skill_retrieval (
|
|
75
|
+
id TEXT PRIMARY KEY,
|
|
76
|
+
skill_id TEXT NOT NULL REFERENCES agentsam_skill(id) ON DELETE CASCADE,
|
|
77
|
+
|
|
78
|
+
provider TEXT NOT NULL CHECK (provider IN (
|
|
79
|
+
'local_fs',
|
|
80
|
+
'cloudflare_d1',
|
|
81
|
+
'cloudflare_hyperdrive',
|
|
82
|
+
'cloudflare_r2',
|
|
83
|
+
'cloudflare_vectorize',
|
|
84
|
+
'supabase_postgres',
|
|
85
|
+
'supabase_vectorize'
|
|
86
|
+
)),
|
|
87
|
+
strategy TEXT NOT NULL CHECK (strategy IN (
|
|
88
|
+
'relational',
|
|
89
|
+
'object_store',
|
|
90
|
+
'vector_index',
|
|
91
|
+
'none'
|
|
92
|
+
)),
|
|
93
|
+
|
|
94
|
+
is_primary INTEGER NOT NULL DEFAULT 0 CHECK (is_primary IN (0,1)),
|
|
95
|
+
|
|
96
|
+
index_name TEXT,
|
|
97
|
+
namespace TEXT,
|
|
98
|
+
connection_ref TEXT,
|
|
99
|
+
embedding_model TEXT,
|
|
100
|
+
dimensions INTEGER,
|
|
101
|
+
|
|
102
|
+
config_json TEXT NOT NULL DEFAULT '{}',
|
|
103
|
+
last_synced_at TEXT,
|
|
104
|
+
created_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
105
|
+
updated_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
106
|
+
|
|
107
|
+
UNIQUE (skill_id, provider, strategy)
|
|
108
|
+
);
|
|
109
|
+
|
|
110
|
+
CREATE UNIQUE INDEX IF NOT EXISTS idx_skill_retrieval_primary
|
|
111
|
+
ON agentsam_skill_retrieval(skill_id) WHERE is_primary = 1;
|
|
112
|
+
|
|
113
|
+
CREATE INDEX IF NOT EXISTS idx_skill_retrieval_skill ON agentsam_skill_retrieval(skill_id);
|
|
114
|
+
|
|
115
|
+
CREATE TABLE IF NOT EXISTS agentsam_skill_revision (
|
|
116
|
+
id TEXT PRIMARY KEY DEFAULT ('skillrev_' || lower(hex(randomblob(8)))),
|
|
117
|
+
skill_id TEXT NOT NULL REFERENCES agentsam_skill(id) ON DELETE CASCADE,
|
|
118
|
+
content_markdown TEXT NOT NULL,
|
|
119
|
+
version INTEGER NOT NULL,
|
|
120
|
+
changed_by TEXT NOT NULL DEFAULT 'system',
|
|
121
|
+
change_note TEXT,
|
|
122
|
+
created_at TEXT NOT NULL DEFAULT (datetime('now'))
|
|
123
|
+
);
|
|
124
|
+
|
|
125
|
+
CREATE INDEX IF NOT EXISTS idx_skill_revision_skill_id ON agentsam_skill_revision(skill_id);
|
|
126
|
+
CREATE INDEX IF NOT EXISTS idx_skill_revision_version ON agentsam_skill_revision(skill_id, version);
|
|
127
|
+
|
|
128
|
+
CREATE TABLE IF NOT EXISTS agentsam_skill_invocation (
|
|
129
|
+
id TEXT PRIMARY KEY DEFAULT ('skillinv_' || lower(hex(randomblob(8)))),
|
|
130
|
+
skill_id TEXT NOT NULL REFERENCES agentsam_skill(id) ON DELETE CASCADE,
|
|
131
|
+
account_id TEXT NOT NULL,
|
|
132
|
+
repository_id TEXT,
|
|
133
|
+
conversation_id TEXT,
|
|
134
|
+
trigger_method TEXT NOT NULL DEFAULT 'slash'
|
|
135
|
+
CHECK (trigger_method IN ('slash','at','auto','api')),
|
|
136
|
+
input_summary TEXT,
|
|
137
|
+
success INTEGER NOT NULL DEFAULT 1,
|
|
138
|
+
error_message TEXT,
|
|
139
|
+
duration_ms INTEGER,
|
|
140
|
+
model_used TEXT,
|
|
141
|
+
tokens_in INTEGER DEFAULT 0,
|
|
142
|
+
tokens_out INTEGER DEFAULT 0,
|
|
143
|
+
cost_usd REAL DEFAULT 0.0,
|
|
144
|
+
invoked_at TEXT NOT NULL DEFAULT (datetime('now'))
|
|
145
|
+
);
|
|
146
|
+
|
|
147
|
+
CREATE INDEX IF NOT EXISTS idx_skill_invoc_skill_id ON agentsam_skill_invocation(skill_id);
|
|
148
|
+
CREATE INDEX IF NOT EXISTS idx_skill_invoc_account ON agentsam_skill_invocation(account_id);
|
|
149
|
+
CREATE INDEX IF NOT EXISTS idx_skill_invoc_invoked ON agentsam_skill_invocation(invoked_at);
|
|
150
|
+
|
|
151
|
+
-- updated_at bump (D1/SQLite)
|
|
152
|
+
-- Avoid recursion: only bump when the statement did not already set updated_at.
|
|
153
|
+
CREATE TRIGGER IF NOT EXISTS trg_skill_updated_at
|
|
154
|
+
AFTER UPDATE ON agentsam_skill
|
|
155
|
+
WHEN NEW.updated_at IS OLD.updated_at
|
|
156
|
+
BEGIN
|
|
157
|
+
UPDATE agentsam_skill SET updated_at = datetime('now') WHERE id = NEW.id;
|
|
158
|
+
END;
|
|
159
|
+
|
|
160
|
+
-- Auto metrics on insert/content change (chars/4 heuristic)
|
|
161
|
+
CREATE TRIGGER IF NOT EXISTS trg_skill_metrics_insert
|
|
162
|
+
AFTER INSERT ON agentsam_skill
|
|
163
|
+
BEGIN
|
|
164
|
+
INSERT INTO agentsam_skill_metrics (skill_id, byte_size, char_count, line_count, estimated_tokens)
|
|
165
|
+
VALUES (
|
|
166
|
+
NEW.id,
|
|
167
|
+
LENGTH(CAST(NEW.content_markdown AS BLOB)),
|
|
168
|
+
LENGTH(NEW.content_markdown),
|
|
169
|
+
LENGTH(NEW.content_markdown) - LENGTH(REPLACE(NEW.content_markdown, char(10), '')) + 1,
|
|
170
|
+
CAST(LENGTH(NEW.content_markdown) / 4.0 AS INTEGER)
|
|
171
|
+
);
|
|
172
|
+
END;
|
|
173
|
+
|
|
174
|
+
CREATE TRIGGER IF NOT EXISTS trg_skill_metrics_update
|
|
175
|
+
AFTER UPDATE OF content_markdown ON agentsam_skill
|
|
176
|
+
BEGIN
|
|
177
|
+
UPDATE agentsam_skill_metrics SET
|
|
178
|
+
byte_size = LENGTH(CAST(NEW.content_markdown AS BLOB)),
|
|
179
|
+
char_count = LENGTH(NEW.content_markdown),
|
|
180
|
+
line_count = LENGTH(NEW.content_markdown) - LENGTH(REPLACE(NEW.content_markdown, char(10), '')) + 1,
|
|
181
|
+
estimated_tokens = CAST(LENGTH(NEW.content_markdown) / 4.0 AS INTEGER),
|
|
182
|
+
estimation_method = 'chars_div_4',
|
|
183
|
+
computed_at = datetime('now')
|
|
184
|
+
WHERE skill_id = NEW.id;
|
|
185
|
+
END;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
-- 0011b_agentsam_skill_v2_cutover.sql
|
|
2
|
+
-- ORCHESTRATION NOTES (do not run this whole file via wrangler --file on large DBs —
|
|
3
|
+
-- D1 import may D1_RESET_DO). Apply in steps:
|
|
4
|
+
--
|
|
5
|
+
-- 1) RENAME (one statement each):
|
|
6
|
+
-- ALTER TABLE agentsam_skill RENAME TO agentsam_skill_legacy;
|
|
7
|
+
-- ALTER TABLE agentsam_skill_revision RENAME TO agentsam_skill_revision_legacy;
|
|
8
|
+
-- ALTER TABLE agentsam_skill_invocation RENAME TO agentsam_skill_invocation_legacy;
|
|
9
|
+
-- 2) DDL: --file migrations/d1/0011_agentsam_skill_v2.sql
|
|
10
|
+
-- 3) Backfill skills: --file migrations/d1/0011c_agentsam_skill_v2_backfill.sql
|
|
11
|
+
-- 4) Retrieval+revisions: --file migrations/d1/0011d_agentsam_skill_v2_retrieval_revisions.sql
|
|
12
|
+
-- 5) Verify counts: skill == legacy == metrics == retrieval; revisions match legacy.
|
|
13
|
+
-- 6) Keep *_legacy until verified. Drop only after a bake period.
|
|
14
|
+
--
|
|
15
|
+
-- Applied remotely on inneranimalmedia-business 2026-09-25 (88 skills).
|
|
16
|
+
-- Notes:
|
|
17
|
+
-- - No FK to agentsam_account (table absent); account_id aligns with accounts.au_* when present.
|
|
18
|
+
-- - Partial unique idx_skill_published_slash included (published slash triggers globally unique).
|
|
19
|
+
-- - Empty slash_trigger → /skill-{id-slug}; dual vectorize → /vectorize-lanes-dual.
|
|
20
|
+
-- - Dropped columns preserved under metadata_json.legacy.
|
|
21
|
+
|
|
22
|
+
SELECT 'see header comments — run cutover in steps' AS note;
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
-- Backfill agentsam_skill v2 from agentsam_skill_legacy (run after 0011 DDL + rename).
|
|
2
|
+
-- Empty slash_trigger → derive from skill id (avoids /unnamed collisions).
|
|
3
|
+
|
|
4
|
+
INSERT INTO agentsam_skill (
|
|
5
|
+
id, account_id, name, slash_trigger,
|
|
6
|
+
description, content_markdown, file_path, content_checksum,
|
|
7
|
+
globs, always_apply, task_types_json, route_keys_json,
|
|
8
|
+
access_mode, icon, tags_json, metadata_json,
|
|
9
|
+
invocation_count, last_invoked_at, version, is_active, sort_order,
|
|
10
|
+
created_at, updated_at
|
|
11
|
+
)
|
|
12
|
+
SELECT
|
|
13
|
+
l.id,
|
|
14
|
+
CASE
|
|
15
|
+
WHEN l.user_id GLOB 'au_*' THEN l.user_id
|
|
16
|
+
WHEN l.user_id = 'sam_primeaux' THEN 'au_8a5b76b737a9f14c'
|
|
17
|
+
WHEN l.user_id IN ('platform', 'system') THEN l.user_id
|
|
18
|
+
WHEN l.person_uuid IS NOT NULL AND TRIM(l.person_uuid) != '' THEN 'person:' || l.person_uuid
|
|
19
|
+
WHEN l.tenant_id IS NOT NULL AND TRIM(l.tenant_id) != '' THEN 'tenant:' || l.tenant_id
|
|
20
|
+
ELSE 'account_orphan'
|
|
21
|
+
END,
|
|
22
|
+
COALESCE(NULLIF(TRIM(l.name), ''), l.id),
|
|
23
|
+
CASE
|
|
24
|
+
WHEN l.id = 'skill_agentsam_dual_vectorize_lanes' THEN '/vectorize-lanes-dual'
|
|
25
|
+
WHEN l.slash_trigger IS NULL OR TRIM(l.slash_trigger) = ''
|
|
26
|
+
THEN '/skill-' || lower(substr(replace(replace(l.id, 'skill_', ''), '_', '-'), 1, 40))
|
|
27
|
+
WHEN lower(CASE
|
|
28
|
+
WHEN l.slash_trigger GLOB '/*' THEN l.slash_trigger
|
|
29
|
+
ELSE '/' || l.slash_trigger
|
|
30
|
+
END) GLOB '/[a-z0-9][a-z0-9-]*'
|
|
31
|
+
THEN lower(CASE
|
|
32
|
+
WHEN l.slash_trigger GLOB '/*' THEN l.slash_trigger
|
|
33
|
+
ELSE '/' || l.slash_trigger
|
|
34
|
+
END)
|
|
35
|
+
ELSE '/skill-' || lower(substr(replace(replace(l.id, 'skill_', ''), '_', '-'), 1, 40))
|
|
36
|
+
END,
|
|
37
|
+
COALESCE(l.description, ''),
|
|
38
|
+
COALESCE(l.content_markdown, ''),
|
|
39
|
+
COALESCE(l.file_path, ''),
|
|
40
|
+
'',
|
|
41
|
+
CASE
|
|
42
|
+
WHEN l.globs IS NULL OR TRIM(l.globs) = '' THEN '[]'
|
|
43
|
+
WHEN l.globs GLOB '[*' THEN l.globs
|
|
44
|
+
ELSE json_array(l.globs)
|
|
45
|
+
END,
|
|
46
|
+
COALESCE(l.always_apply, 0),
|
|
47
|
+
COALESCE(NULLIF(TRIM(l.task_types_json), ''), '[]'),
|
|
48
|
+
COALESCE(NULLIF(TRIM(l.route_keys_json), ''), '[]'),
|
|
49
|
+
CASE
|
|
50
|
+
WHEN l.access_mode IN ('read_only', 'read_write') THEN l.access_mode
|
|
51
|
+
ELSE 'read_write'
|
|
52
|
+
END,
|
|
53
|
+
COALESCE(l.icon, ''),
|
|
54
|
+
COALESCE(NULLIF(TRIM(l.tags_json), ''), '[]'),
|
|
55
|
+
json_object(
|
|
56
|
+
'legacy', json_object(
|
|
57
|
+
'tenant_id', l.tenant_id,
|
|
58
|
+
'user_id', l.user_id,
|
|
59
|
+
'person_uuid', l.person_uuid,
|
|
60
|
+
'workspace_id', l.workspace_id,
|
|
61
|
+
'scope', l.scope,
|
|
62
|
+
'default_model_key', l.default_model_key,
|
|
63
|
+
'model_constraints_json', l.model_constraints_json,
|
|
64
|
+
'token_estimate', l.token_estimate,
|
|
65
|
+
'retrieval_strategy', l.retrieval_strategy,
|
|
66
|
+
'slash_trigger_raw', l.slash_trigger
|
|
67
|
+
)
|
|
68
|
+
),
|
|
69
|
+
COALESCE(l.invocation_count, 0),
|
|
70
|
+
l.last_invoked_at,
|
|
71
|
+
COALESCE(l.version, 1),
|
|
72
|
+
COALESCE(l.is_active, 1),
|
|
73
|
+
COALESCE(l.sort_order, 0),
|
|
74
|
+
COALESCE(l.created_at, datetime('now')),
|
|
75
|
+
COALESCE(l.updated_at, datetime('now'))
|
|
76
|
+
FROM agentsam_skill_legacy l;
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
-- Retrieval + revision backfill after skill rows exist.
|
|
2
|
+
|
|
3
|
+
INSERT INTO agentsam_skill_retrieval (
|
|
4
|
+
id, skill_id, provider, strategy, is_primary,
|
|
5
|
+
index_name, connection_ref, config_json
|
|
6
|
+
)
|
|
7
|
+
SELECT
|
|
8
|
+
'skillret_' || lower(hex(randomblob(8))),
|
|
9
|
+
s.id,
|
|
10
|
+
CASE
|
|
11
|
+
WHEN lower(COALESCE(json_extract(s.metadata_json, '$.legacy.retrieval_strategy'), '')) IN ('r2', 'object_store')
|
|
12
|
+
THEN 'cloudflare_r2'
|
|
13
|
+
WHEN lower(COALESCE(json_extract(s.metadata_json, '$.legacy.retrieval_strategy'), '')) IN ('vectorize', 'vector')
|
|
14
|
+
THEN 'cloudflare_vectorize'
|
|
15
|
+
ELSE 'cloudflare_d1'
|
|
16
|
+
END,
|
|
17
|
+
CASE
|
|
18
|
+
WHEN lower(COALESCE(json_extract(s.metadata_json, '$.legacy.retrieval_strategy'), '')) IN ('r2', 'object_store')
|
|
19
|
+
THEN 'object_store'
|
|
20
|
+
WHEN lower(COALESCE(json_extract(s.metadata_json, '$.legacy.retrieval_strategy'), '')) IN ('vectorize', 'vector')
|
|
21
|
+
THEN 'vector_index'
|
|
22
|
+
ELSE 'relational'
|
|
23
|
+
END,
|
|
24
|
+
1,
|
|
25
|
+
NULLIF(TRIM(s.file_path), ''),
|
|
26
|
+
CASE
|
|
27
|
+
WHEN lower(COALESCE(json_extract(s.metadata_json, '$.legacy.retrieval_strategy'), '')) IN ('r2', 'object_store')
|
|
28
|
+
THEN 'WEBSITE_ASSETS'
|
|
29
|
+
ELSE 'DB'
|
|
30
|
+
END,
|
|
31
|
+
'{}'
|
|
32
|
+
FROM agentsam_skill s
|
|
33
|
+
WHERE NOT EXISTS (
|
|
34
|
+
SELECT 1 FROM agentsam_skill_retrieval r WHERE r.skill_id = s.id
|
|
35
|
+
);
|
|
36
|
+
|
|
37
|
+
INSERT INTO agentsam_skill_revision (
|
|
38
|
+
id, skill_id, content_markdown, version, changed_by, change_note, created_at
|
|
39
|
+
)
|
|
40
|
+
SELECT
|
|
41
|
+
r.id,
|
|
42
|
+
r.skill_id,
|
|
43
|
+
r.content_markdown,
|
|
44
|
+
r.version,
|
|
45
|
+
COALESCE(NULLIF(TRIM(r.changed_by), ''), 'system'),
|
|
46
|
+
r.change_note,
|
|
47
|
+
COALESCE(r.created_at, datetime('now'))
|
|
48
|
+
FROM agentsam_skill_revision_legacy r
|
|
49
|
+
WHERE EXISTS (SELECT 1 FROM agentsam_skill s WHERE s.id = r.skill_id)
|
|
50
|
+
AND NOT EXISTS (SELECT 1 FROM agentsam_skill_revision x WHERE x.id = r.id);
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
-- 0012_agentsam_tools_required_seed.sql
|
|
2
|
+
-- Registers required tool_key stubs for new projects.
|
|
3
|
+
-- Full handler schemas live in the host agentsam_tools registry; this seed
|
|
4
|
+
-- guarantees GOAP / search_tools / multitask can resolve the required set.
|
|
5
|
+
-- Idempotent: skips rows that already exist by tool_key.
|
|
6
|
+
|
|
7
|
+
INSERT INTO agentsam_tools (
|
|
8
|
+
id, tool_name, tool_key, tool_code, display_name, tool_category,
|
|
9
|
+
handler_type, description, is_active, risk_level, domain, account_id
|
|
10
|
+
)
|
|
11
|
+
SELECT
|
|
12
|
+
'ast_req_' || lower(hex(randomblob(6))),
|
|
13
|
+
key,
|
|
14
|
+
key,
|
|
15
|
+
key,
|
|
16
|
+
key,
|
|
17
|
+
'platform',
|
|
18
|
+
'terminal',
|
|
19
|
+
'Required AgentSam tool seed · see registry/tools/required-seed.json',
|
|
20
|
+
1,
|
|
21
|
+
'low',
|
|
22
|
+
'general',
|
|
23
|
+
'*'
|
|
24
|
+
FROM (
|
|
25
|
+
SELECT 'fs_read_file' AS key UNION ALL SELECT 'fs_write_file' UNION ALL SELECT 'fs_edit_file'
|
|
26
|
+
UNION ALL SELECT 'fs_list_dir' UNION ALL SELECT 'fs_search_files'
|
|
27
|
+
UNION ALL SELECT 'agentsam_filesystem_walk' UNION ALL SELECT 'agentsam_filesystem_stat_many'
|
|
28
|
+
UNION ALL SELECT 'agentsam_filesystem_hash_many' UNION ALL SELECT 'agentsam_filesystem_git_status'
|
|
29
|
+
UNION ALL SELECT 'agentsam_github_read' UNION ALL SELECT 'agentsam_github_write'
|
|
30
|
+
UNION ALL SELECT 'agentsam_github_pr' UNION ALL SELECT 'agentsam_github_pr_merge'
|
|
31
|
+
UNION ALL SELECT 'agentsam_github_issue' UNION ALL SELECT 'agentsam_github_search'
|
|
32
|
+
UNION ALL SELECT 'agentsam_github_tree' UNION ALL SELECT 'agentsam_github_read_many'
|
|
33
|
+
UNION ALL SELECT 'agentsam_github_patch' UNION ALL SELECT 'agentsam_github_grep'
|
|
34
|
+
UNION ALL SELECT 'agentsam_github_create_repo' UNION ALL SELECT 'agentsam_grep'
|
|
35
|
+
UNION ALL SELECT 'browser_navigate'
|
|
36
|
+
UNION ALL SELECT 'agentsam_memory_search' UNION ALL SELECT 'agentsam_memory_manager'
|
|
37
|
+
UNION ALL SELECT 'agentsam_memory_commit'
|
|
38
|
+
UNION ALL SELECT 'agentsam_d1_query' UNION ALL SELECT 'agentsam_d1_write'
|
|
39
|
+
UNION ALL SELECT 'agentsam_supabase_query' UNION ALL SELECT 'agentsam_supabase_write'
|
|
40
|
+
UNION ALL SELECT 'agentsam_supabase_vector'
|
|
41
|
+
UNION ALL SELECT 'agentsam_r2_get' UNION ALL SELECT 'agentsam_r2_put' UNION ALL SELECT 'agentsam_r2_delete'
|
|
42
|
+
UNION ALL SELECT 'agentsam_cf_vectorize' UNION ALL SELECT 'agentsam_cf_d1_list'
|
|
43
|
+
UNION ALL SELECT 'agentsam_cf_workers_list' UNION ALL SELECT 'agentsam_cf_worker_get'
|
|
44
|
+
UNION ALL SELECT 'agentsam_cf_worker_code'
|
|
45
|
+
UNION ALL SELECT 'agentsam_autorag'
|
|
46
|
+
UNION ALL SELECT 'agentsam_terminal_local' UNION ALL SELECT 'agentsam_terminal_sandbox'
|
|
47
|
+
UNION ALL SELECT 'agentsam_terminal_remote'
|
|
48
|
+
UNION ALL SELECT 'agentsam_create_subagent' UNION ALL SELECT 'agentsam_container_exec'
|
|
49
|
+
UNION ALL SELECT 'search_cloudflare_documentation' UNION ALL SELECT 'agentsam_spawn_tree'
|
|
50
|
+
UNION ALL SELECT 'agentsam_run_agent'
|
|
51
|
+
UNION ALL SELECT 'agentsam_ticket_list' UNION ALL SELECT 'agentsam_ticket_get'
|
|
52
|
+
UNION ALL SELECT 'agentsam_ticket_create' UNION ALL SELECT 'agentsam_ticket_set_status'
|
|
53
|
+
UNION ALL SELECT 'agentsam_code_interpreter'
|
|
54
|
+
UNION ALL SELECT 'cad_generate' UNION ALL SELECT 'cad_job_cancel' UNION ALL SELECT 'cad_job_status'
|
|
55
|
+
UNION ALL SELECT 'agentsam_search_tools'
|
|
56
|
+
UNION ALL SELECT 'agentsam_codebase_retrieve' UNION ALL SELECT 'agentsam_knowledge_ingest_segment'
|
|
57
|
+
UNION ALL SELECT 'agentsam_multitask_spawn' UNION ALL SELECT 'agentsam_multitask_status'
|
|
58
|
+
UNION ALL SELECT 'agentsam_multitask_cancel'
|
|
59
|
+
UNION ALL SELECT 'agentsam_merkle_build' UNION ALL SELECT 'agentsam_merkle_get'
|
|
60
|
+
UNION ALL SELECT 'agentsam_merkle_compare' UNION ALL SELECT 'agentsam_merkle_explain'
|
|
61
|
+
UNION ALL SELECT 'agentsam_merkle_delete'
|
|
62
|
+
UNION ALL SELECT 'agentsam_repo_intelligence' UNION ALL SELECT 'agentsam_code_index_build'
|
|
63
|
+
UNION ALL SELECT 'agentsam_repository_snapshot'
|
|
64
|
+
) AS required
|
|
65
|
+
WHERE NOT EXISTS (
|
|
66
|
+
SELECT 1 FROM agentsam_tools t WHERE t.tool_key = required.key OR t.tool_name = required.key
|
|
67
|
+
);
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
-- identity_oauth_states — PKCE state for /api/oauth/{provider}/start (identity login).
|
|
2
|
+
-- Deliberately NOT named oauth_states (collides with Stripe Connect schema on this D1).
|
|
3
|
+
-- Required for Sign in with Cloudflare on agentsam.inneranimalmedia.com.
|
|
4
|
+
|
|
5
|
+
CREATE TABLE IF NOT EXISTS identity_oauth_states (
|
|
6
|
+
state TEXT PRIMARY KEY NOT NULL,
|
|
7
|
+
provider TEXT NOT NULL,
|
|
8
|
+
code_verifier TEXT NOT NULL,
|
|
9
|
+
redirect_to TEXT,
|
|
10
|
+
expires_at INTEGER NOT NULL,
|
|
11
|
+
created_at INTEGER NOT NULL
|
|
12
|
+
);
|
|
13
|
+
|
|
14
|
+
CREATE INDEX IF NOT EXISTS idx_identity_oauth_states_expires
|
|
15
|
+
ON identity_oauth_states(expires_at);
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
-- auth_event_log — append-only auth audit (identity package).
|
|
2
|
+
-- status remains outcome-only (ok|failed). Rich context lives in metadata_json.
|
|
3
|
+
|
|
4
|
+
CREATE TABLE IF NOT EXISTS auth_event_log (
|
|
5
|
+
id TEXT PRIMARY KEY NOT NULL,
|
|
6
|
+
user_id TEXT,
|
|
7
|
+
event_type TEXT NOT NULL,
|
|
8
|
+
status TEXT NOT NULL DEFAULT 'ok',
|
|
9
|
+
provider TEXT,
|
|
10
|
+
metadata_json TEXT NOT NULL DEFAULT '{}',
|
|
11
|
+
ip_hash TEXT,
|
|
12
|
+
user_agent_hash TEXT,
|
|
13
|
+
created_at INTEGER NOT NULL DEFAULT (unixepoch())
|
|
14
|
+
);
|
|
15
|
+
|
|
16
|
+
CREATE INDEX IF NOT EXISTS idx_auth_event_log_user_created
|
|
17
|
+
ON auth_event_log(user_id, created_at DESC);
|
|
18
|
+
|
|
19
|
+
CREATE INDEX IF NOT EXISTS idx_auth_event_log_type_created
|
|
20
|
+
ON auth_event_log(event_type, created_at DESC);
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# Portable control-plane schemas (tickets · memory · skills · tools)
|
|
2
|
+
|
|
3
|
+
Apply from the repo that owns the SQL (agentsam-sdk `migrations/d1/`).
|
|
4
|
+
|
|
5
|
+
| File | Purpose |
|
|
6
|
+
|------|---------|
|
|
7
|
+
| `0010_portable_tickets_memory.sql` | Account-owned `agentsam_tickets` + events + `agentsam_memory` + outbox. `account_id` + `repository_id` **NOT NULL**. |
|
|
8
|
+
| `0011_agentsam_skill_v2.sql` | Skill identity · metrics · retrieval (3-table redesign). Legacy hosts: rename old → `agentsam_skill_legacy`, backfill, verify. |
|
|
9
|
+
| `0012_agentsam_tools_required_seed.sql` | Idempotent seed of required `tool_key` rows for GOAP / multitask. Manifest: `registry/tools/required-seed.json`. |
|
|
10
|
+
|
|
11
|
+
## Law
|
|
12
|
+
|
|
13
|
+
- **NULL `repository_id` on memory/ticket writes = broken implementation.** Resolve repo identity from `agentsam inspect` / snapshot before insert.
|
|
14
|
+
- Customer tickets use **their** D1/SQLite — never IAM host ticket rows.
|
|
15
|
+
- `agentsam_autorag` stays registered for A* planning even while multi-level retrieval is incomplete.
|
|
16
|
+
- Skill publish uniqueness: partial unique on `slash_trigger WHERE is_published = 1` is included.
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
-- Portable local skill retrieval shape (NOT applied to IAM D1 as-is).
|
|
2
|
+
-- strategy ≠ provider_id ≠ driver_id ≠ accelerator_ref ≠ embedding_profile_id
|
|
3
|
+
-- Hyperdrive is accelerator_ref, never a provider.
|
|
4
|
+
|
|
5
|
+
CREATE TABLE IF NOT EXISTS agentsam_skill_retrieval (
|
|
6
|
+
id TEXT PRIMARY KEY,
|
|
7
|
+
skill_id TEXT NOT NULL,
|
|
8
|
+
|
|
9
|
+
strategy TEXT NOT NULL CHECK (
|
|
10
|
+
strategy IN (
|
|
11
|
+
'relational',
|
|
12
|
+
'object_store',
|
|
13
|
+
'vector_index',
|
|
14
|
+
'filesystem'
|
|
15
|
+
)
|
|
16
|
+
),
|
|
17
|
+
|
|
18
|
+
provider_id TEXT NOT NULL,
|
|
19
|
+
driver_id TEXT NOT NULL,
|
|
20
|
+
|
|
21
|
+
connection_ref TEXT,
|
|
22
|
+
accelerator_ref TEXT,
|
|
23
|
+
|
|
24
|
+
embedding_profile_id TEXT,
|
|
25
|
+
|
|
26
|
+
index_name TEXT,
|
|
27
|
+
namespace TEXT,
|
|
28
|
+
|
|
29
|
+
is_primary INTEGER NOT NULL DEFAULT 0,
|
|
30
|
+
|
|
31
|
+
config_json TEXT NOT NULL DEFAULT '{}',
|
|
32
|
+
|
|
33
|
+
last_synced_at TEXT,
|
|
34
|
+
created_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
35
|
+
updated_at TEXT NOT NULL DEFAULT (datetime('now'))
|
|
36
|
+
);
|
|
37
|
+
|
|
38
|
+
CREATE INDEX IF NOT EXISTS idx_skill_retrieval_skill
|
|
39
|
+
ON agentsam_skill_retrieval(skill_id);
|
|
40
|
+
|
|
41
|
+
CREATE UNIQUE INDEX IF NOT EXISTS idx_skill_retrieval_primary
|
|
42
|
+
ON agentsam_skill_retrieval(skill_id) WHERE is_primary = 1;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@inneranimalmedia/agentsam-sdk",
|
|
3
|
-
"version": "2.6.
|
|
3
|
+
"version": "2.6.4",
|
|
4
4
|
"description": "Portable AgentSam SDK and CLI kits for local scaffolding, repository intelligence, incremental indexing, identity adapters, and verified dependency maintenance.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./src/index.js",
|
|
@@ -19,6 +19,19 @@
|
|
|
19
19
|
"./knowledge-service-grpc-client": "./src/knowledge/service/grpc-client.js",
|
|
20
20
|
"./capabilities": "./src/capabilities/index.js",
|
|
21
21
|
"./capability-manifest": "./protocol/capabilities/manifest.json",
|
|
22
|
+
"./sam": "./src/sam/index.js",
|
|
23
|
+
"./sam/operation-schema": "./protocol/sam/operation.schema.json",
|
|
24
|
+
"./sam/result-schema": "./protocol/sam/result.schema.json",
|
|
25
|
+
"./sam/registry-seed": "./protocol/sam/registry.seed.json",
|
|
26
|
+
"./sam/state-schema": "./protocol/sam/state.v1.schema.json",
|
|
27
|
+
"./sam/question-schema": "./protocol/sam/question.v1.schema.json",
|
|
28
|
+
"./sam/answer-schema": "./protocol/sam/answer.v1.schema.json",
|
|
29
|
+
"./sam/evaluation-schema": "./protocol/sam/evaluation.v1.schema.json",
|
|
30
|
+
"./sam/decision-receipt-schema": "./protocol/sam/decision-receipt.v1.schema.json",
|
|
31
|
+
"./sam/outcome-schema": "./protocol/sam/outcome.v1.schema.json",
|
|
32
|
+
"./sam/calibration-schema": "./protocol/sam/calibration.v1.schema.json",
|
|
33
|
+
"./sam/activity-schema": "./protocol/sam/activity.v1.schema.json",
|
|
34
|
+
"./errors/recovery-schema": "./protocol/errors/recovery.v1.schema.json",
|
|
22
35
|
"./repository": "./src/repository/index.js",
|
|
23
36
|
"./repository/contracts": "./packages/agentsam-repository/src/contracts.js",
|
|
24
37
|
"./repository/identity-schema": "./protocol/repository/repository-identity.schema.json",
|
|
@@ -191,6 +204,7 @@
|
|
|
191
204
|
"prepublishOnly": "npm run site:sync && npm run verify:release",
|
|
192
205
|
"site:sync": "node scripts/sync-public-site.mjs",
|
|
193
206
|
"site:learn": "node scripts/build-learn-site.mjs",
|
|
207
|
+
"site:sam-docs": "node scripts/build-sam-docs.mjs",
|
|
194
208
|
"site:publish": "node scripts/publish-website-assets.mjs",
|
|
195
209
|
"security:check": "node src/security/cli.mjs scan",
|
|
196
210
|
"security:repair": "node src/security/cli.mjs repair",
|
|
@@ -204,7 +218,8 @@
|
|
|
204
218
|
"cad:registry:check": "node scripts/cad-registry.mjs --check",
|
|
205
219
|
"test:providers": "node --test packages/providers/completeful/test/*.test.mjs",
|
|
206
220
|
"test:themes": "npm --prefix packages/heuristic-theme test && npm --prefix packages/theme-church-site test && npm --prefix packages/theme-companions-site test && npm --prefix packages/theme-floors-site test && npm --prefix packages/theme-fuelnfree-site test && npm --prefix packages/theme-handyman-site test && npm --prefix packages/theme-insurance-site test && npm --prefix packages/theme-shinshu-site test",
|
|
207
|
-
"theme:harvest": "python3 scripts/theme-refinery/harvest.py"
|
|
221
|
+
"theme:harvest": "python3 scripts/theme-refinery/harvest.py",
|
|
222
|
+
"verify:go-distribution": "node scripts/verify-go-distribution.mjs"
|
|
208
223
|
},
|
|
209
224
|
"engines": {
|
|
210
225
|
"node": ">=22 <25",
|
|
@@ -219,7 +234,7 @@
|
|
|
219
234
|
"pg": "8.16.3",
|
|
220
235
|
"picocolors": "^1.1.1",
|
|
221
236
|
"typescript": "5.9.3",
|
|
222
|
-
"wrangler": "4.
|
|
237
|
+
"wrangler": "4.140.0",
|
|
223
238
|
"ws": "^8.18.0"
|
|
224
239
|
},
|
|
225
240
|
"publishConfig": {
|
|
@@ -250,7 +265,7 @@
|
|
|
250
265
|
"protobufjs@7.6.6": true,
|
|
251
266
|
"esbuild@0.28.1": true,
|
|
252
267
|
"fsevents@2.3.3": true,
|
|
253
|
-
"workerd@1.
|
|
268
|
+
"workerd@1.20260923.1": true
|
|
254
269
|
},
|
|
255
270
|
"devDependencies": {
|
|
256
271
|
"@changesets/changelog-github": "^1.0.1",
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
// GENERATED by scripts/generate-error-contracts.mjs. Do not edit by hand.
|
|
2
|
+
|
|
2
3
|
export const AGENTSAM_ERROR_SCHEMA_VERSION = 1 as const;
|
|
3
4
|
|
|
4
5
|
export type AgentSamErrorCode = "OK" | "CANCELLED" | "UNKNOWN" | "INVALID_ARGUMENT" | "DEADLINE_EXCEEDED" | "NOT_FOUND" | "ALREADY_EXISTS" | "PERMISSION_DENIED" | "RESOURCE_EXHAUSTED" | "FAILED_PRECONDITION" | "ABORTED" | "OUT_OF_RANGE" | "UNIMPLEMENTED" | "INTERNAL" | "UNAVAILABLE" | "DATA_LOSS" | "UNAUTHENTICATED";
|
|
@@ -8,12 +9,19 @@ export type AgentSamErrorSourceKind = "user" | "agentsam" | "provider" | "depend
|
|
|
8
9
|
export type AgentSamErrorResolutionOwner = "user" | "agentsam" | "provider" | "organization_admin" | "policy" | "unknown";
|
|
9
10
|
export type AgentSamErrorDomain = "runtime" | "provider" | "auth" | "device" | "terminal" | "transport" | "repository" | "indexing" | "knowledge" | "cad" | "deployment" | "persistence" | "policy" | "tool";
|
|
10
11
|
export type AgentSamRemediationAction = "none" | "retry" | "retry_later" | "reauthenticate" | "connect_provider" | "configure_provider_credential" | "refresh_provider_credential" | "request_permission" | "reenroll_device" | "reconnect_service" | "install_dependency" | "upgrade_dependency" | "configure_dependency" | "change_configuration" | "change_input" | "reduce_scope" | "increase_quota" | "add_budget" | "select_model" | "change_region" | "restart_runtime" | "inspect_platform" | "contact_provider" | "contact_agentsam" | "contact_organization_admin";
|
|
12
|
+
export type AgentSamErrorSideEffectState = "none" | "not_started" | "confirmed_not_applied" | "confirmed_applied" | "partially_applied" | "unknown";
|
|
13
|
+
export type AgentSamErrorOutcomeStatus = "success" | "partial" | "failure";
|
|
11
14
|
|
|
12
15
|
export interface AgentSamErrorSource { kind: AgentSamErrorSourceKind; name: string; service: string | null; }
|
|
13
16
|
export interface AgentSamErrorRemediation { action: AgentSamRemediationAction; message: string | null; automatic: boolean; command: string | null; url: string | null; }
|
|
14
17
|
export interface AgentSamErrorResource { type: string; id: string | null; name: string | null; }
|
|
15
18
|
export interface AgentSamNativeErrorEvidence { code: string | null; exception_type: string | null; exit_code: number | null; signal: string | null; stderr: string | null; stdout: string | null; stack: string | null; }
|
|
16
19
|
export interface AgentSamEnvironmentEvidence { detected_version: string | null; required_version: string | null; component: string | null; runtime: string | null; platform: string | null; }
|
|
20
|
+
export interface AgentSamErrorOperation { kind?: string | null; action?: string | null; resource_type?: string | null; resource_id?: string | null; read_only?: boolean; idempotent?: boolean; side_effect_state?: AgentSamErrorSideEffectState; }
|
|
21
|
+
export interface AgentSamErrorRetry { allowed?: boolean; strategy?: string; retry_after_ms?: number | null; max_attempts?: number | null; requires_idempotency_key?: boolean; }
|
|
22
|
+
export interface AgentSamErrorFallback { allowed?: boolean; strategy?: string | null; preserve_semantics?: boolean; target?: string | null; }
|
|
23
|
+
export interface AgentSamErrorNotification { user?: string; operator?: string; agent?: string; }
|
|
24
|
+
export interface AgentSamErrorPartialResult { completed?: number; failed?: number; failures?: unknown[]; }
|
|
17
25
|
|
|
18
26
|
export interface AgentSamErrorEnvelope {
|
|
19
27
|
ok: false;
|
|
@@ -43,4 +51,12 @@ export interface AgentSamErrorEnvelope {
|
|
|
43
51
|
fingerprint: string;
|
|
44
52
|
occurrence_count: number;
|
|
45
53
|
details: unknown;
|
|
54
|
+
failure_class?: string;
|
|
55
|
+
operation?: AgentSamErrorOperation;
|
|
56
|
+
retry?: AgentSamErrorRetry;
|
|
57
|
+
fallback?: AgentSamErrorFallback;
|
|
58
|
+
notify?: AgentSamErrorNotification;
|
|
59
|
+
cause?: unknown;
|
|
60
|
+
status?: AgentSamErrorOutcomeStatus;
|
|
61
|
+
partial?: AgentSamErrorPartialResult;
|
|
46
62
|
}
|