@stigmer/cli 3.19.0 → 3.19.1-dev.20260920100552

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 (106) hide show
  1. package/commands/apply.d.ts.map +1 -1
  2. package/commands/apply.js +42 -100
  3. package/commands/apply.js.map +1 -1
  4. package/commands/validate.js +3 -4
  5. package/commands/validate.js.map +1 -1
  6. package/local/bootstrap.d.ts +1 -2
  7. package/local/bootstrap.d.ts.map +1 -1
  8. package/local/bootstrap.js +13 -41
  9. package/local/bootstrap.js.map +1 -1
  10. package/local/daemon/launch.d.ts +2 -2
  11. package/local/daemon/launch.d.ts.map +1 -1
  12. package/local/daemon/launch.js +2 -2
  13. package/local/daemon/launch.js.map +1 -1
  14. package/local/plugins/defaults.js +2 -2
  15. package/local/plugins/defaults.js.map +1 -1
  16. package/package.json +7 -7
  17. package/registry/index.d.ts +2 -2
  18. package/registry/index.d.ts.map +1 -1
  19. package/registry/index.js +2 -2
  20. package/registry/index.js.map +1 -1
  21. package/registry/metadata.d.ts +9 -0
  22. package/registry/metadata.d.ts.map +1 -1
  23. package/registry/metadata.js +14 -5
  24. package/registry/metadata.js.map +1 -1
  25. package/registry/registry.d.ts +9 -0
  26. package/registry/registry.d.ts.map +1 -1
  27. package/registry/registry.js +16 -1
  28. package/registry/registry.js.map +1 -1
  29. package/registry/verb-support.d.ts.map +1 -1
  30. package/registry/verb-support.js +0 -13
  31. package/registry/verb-support.js.map +1 -1
  32. package/resources/apply/apply.d.ts +11 -12
  33. package/resources/apply/apply.d.ts.map +1 -1
  34. package/resources/apply/apply.js +12 -21
  35. package/resources/apply/apply.js.map +1 -1
  36. package/resources/apply/handlers.js +2 -2
  37. package/resources/apply/handlers.js.map +1 -1
  38. package/resources/delete.d.ts.map +1 -1
  39. package/resources/delete.js +0 -1
  40. package/resources/delete.js.map +1 -1
  41. package/resources/get-bindings.d.ts.map +1 -1
  42. package/resources/get-bindings.js +0 -5
  43. package/resources/get-bindings.js.map +1 -1
  44. package/resources/list.d.ts.map +1 -1
  45. package/resources/list.js +0 -1
  46. package/resources/list.js.map +1 -1
  47. package/resources/validate.d.ts.map +1 -1
  48. package/resources/validate.js +0 -2
  49. package/resources/validate.js.map +1 -1
  50. package/src/commands/apply.ts +35 -150
  51. package/src/commands/validate.ts +2 -4
  52. package/src/local/bootstrap.test.ts +15 -59
  53. package/src/local/bootstrap.ts +12 -53
  54. package/src/local/daemon/launch.ts +4 -4
  55. package/src/local/plugins/defaults.ts +2 -2
  56. package/src/registry/index.ts +7 -1
  57. package/src/registry/metadata.ts +15 -5
  58. package/src/registry/registry.test.ts +1 -7
  59. package/src/registry/registry.ts +17 -1
  60. package/src/registry/verb-support.ts +0 -13
  61. package/src/resources/apply/apply.integration.test.ts +15 -3
  62. package/src/resources/apply/apply.ts +15 -26
  63. package/src/resources/apply/handlers.ts +2 -2
  64. package/src/resources/delete.ts +0 -1
  65. package/src/resources/get-bindings.ts +0 -5
  66. package/src/resources/list.ts +0 -1
  67. package/src/resources/validate.test.ts +0 -1
  68. package/src/resources/validate.ts +0 -2
  69. package/local/seedpack-retire.d.ts +0 -63
  70. package/local/seedpack-retire.d.ts.map +0 -1
  71. package/local/seedpack-retire.js +0 -361
  72. package/local/seedpack-retire.js.map +0 -1
  73. package/resources/apply/declarative.d.ts +0 -106
  74. package/resources/apply/declarative.d.ts.map +0 -1
  75. package/resources/apply/declarative.js +0 -397
  76. package/resources/apply/declarative.js.map +0 -1
  77. package/resources/apply/synth/project-track.d.ts +0 -21
  78. package/resources/apply/synth/project-track.d.ts.map +0 -1
  79. package/resources/apply/synth/project-track.js +0 -102
  80. package/resources/apply/synth/project-track.js.map +0 -1
  81. package/resources/apply/synth/reader.d.ts +0 -18
  82. package/resources/apply/synth/reader.d.ts.map +0 -1
  83. package/resources/apply/synth/reader.js +0 -55
  84. package/resources/apply/synth/reader.js.map +0 -1
  85. package/resources/apply/synth/runtime.d.ts +0 -8
  86. package/resources/apply/synth/runtime.d.ts.map +0 -1
  87. package/resources/apply/synth/runtime.js +0 -32
  88. package/resources/apply/synth/runtime.js.map +0 -1
  89. package/resources/apply/synth/synthesize.d.ts +0 -43
  90. package/resources/apply/synth/synthesize.d.ts.map +0 -1
  91. package/resources/apply/synth/synthesize.js +0 -115
  92. package/resources/apply/synth/synthesize.js.map +0 -1
  93. package/src/local/seedpack-retire.test.ts +0 -499
  94. package/src/local/seedpack-retire.ts +0 -474
  95. package/src/resources/apply/declarative.integration.test.ts +0 -204
  96. package/src/resources/apply/declarative.test.ts +0 -132
  97. package/src/resources/apply/declarative.ts +0 -491
  98. package/src/resources/apply/synth/capstone.integration.test.ts +0 -134
  99. package/src/resources/apply/synth/project-track.integration.test.ts +0 -194
  100. package/src/resources/apply/synth/project-track.ts +0 -126
  101. package/src/resources/apply/synth/reader.test.ts +0 -90
  102. package/src/resources/apply/synth/reader.ts +0 -68
  103. package/src/resources/apply/synth/runtime.test.ts +0 -29
  104. package/src/resources/apply/synth/runtime.ts +0 -39
  105. package/src/resources/apply/synth/synthesize.test.ts +0 -109
  106. package/src/resources/apply/synth/synthesize.ts +0 -161
@@ -1,397 +0,0 @@
1
- // Declarative apply (`stigmer apply` inside a stigmer.yaml project directory).
2
- //
3
- // The project is a lightweight membership tracker: it stores only references
4
- // (org/kind/slug) to its members and the server reconciles by set-difference
5
- // against the previous member list. The CLI's job is to discover the resources
6
- // that live beside stigmer.yaml, apply each one, collect references to the
7
- // member-eligible ones, then apply the project with that member set. Pruning of
8
- // orphans is therefore entirely server-side — see the note on `--prune` in
9
- // commands/apply.ts (S1).
10
- //
11
- // Two project layouts are supported, mirroring the Go CLI:
12
- // flat: project/agent.yaml, project/my-skill/SKILL.md
13
- // organized: project/agents/*.yaml, project/skills/my-skill/SKILL.md
14
- // Scanning is top-level plus one level of subdirectories — deep trees are not
15
- // walked, matching Go (this keeps membership predictable and fast).
16
- import { existsSync, mkdtempSync, readdirSync, rmSync, statSync } from "node:fs";
17
- import { tmpdir } from "node:os";
18
- import { basename, dirname, extname, join, resolve } from "node:path";
19
- import { create, fromJson } from "@bufbuild/protobuf";
20
- import { ApiResourceReferenceSchema, } from "@stigmer/protos/ai/stigmer/commons/apiresource/io_pb";
21
- import { ApiResourceKind } from "@stigmer/protos/ai/stigmer/commons/apiresource/apiresourcekind/api_resource_kind_pb";
22
- import { ApiResourceMetadataSchema, } from "@stigmer/protos/ai/stigmer/commons/apiresource/metadata_pb";
23
- import { ProjectSchema } from "@stigmer/protos/ai/stigmer/tenancy/project/v1/api_pb";
24
- import { ProjectCommandController } from "@stigmer/protos/ai/stigmer/tenancy/project/v1/command_pb";
25
- import { ProjectSpecSchema } from "@stigmer/protos/ai/stigmer/tenancy/project/v1/spec_pb";
26
- import { UsageError } from "../../errors/index.js";
27
- import { CommandResult } from "../../output/index.js";
28
- import { loadDocuments } from "../documents.js";
29
- import { cloneRepository } from "../git.js";
30
- import { hasSkillFile, pushSkill, pushSkillFromClone } from "../skill.js";
31
- import { applyMessage, marshalItem, resolveHandlerForKind, resourceMetadata, sortApplyItems } from "./apply.js";
32
- import { discoverAppliedMcpServers } from "./discovery.js";
33
- const CONFIG_FILE_NAME = "stigmer.yaml";
34
- const DEFAULT_MAX_DEPTH = 10;
35
- /**
36
- * Walk up from `startDir` (max 10 levels, matching Go) looking for stigmer.yaml.
37
- * Absent → atomic track. Present-but-invalid → a hard error (the user clearly
38
- * intended a project; help them fix it rather than silently falling back).
39
- * Present with an entry_point → the SDK "project" track (synthesis), which this
40
- * wave does not implement.
41
- */
42
- export function detectTrack(startDir, maxDepth = DEFAULT_MAX_DEPTH) {
43
- let dir = resolve(startDir);
44
- for (let depth = 0; depth < maxDepth; depth++) {
45
- const candidate = join(dir, CONFIG_FILE_NAME);
46
- if (existsSync(candidate) && statSync(candidate).isFile()) {
47
- const project = loadProject(candidate);
48
- const track = project.spec?.entryPoint ? "project" : "declarative";
49
- return { track, configPath: candidate, configDir: dirname(candidate), project };
50
- }
51
- const parent = dirname(dir);
52
- if (parent === dir)
53
- break;
54
- dir = parent;
55
- }
56
- return { track: "atomic" };
57
- }
58
- // Strict parse of stigmer.yaml into a Project (proto carries apiVersion/kind as
59
- // real fields, so the discriminator is accepted, not rejected). Unknown fields
60
- // are an error — a typo in stigmer.yaml should fail loudly.
61
- function loadProject(configPath) {
62
- const docs = loadDocuments(configPath, { strict: true });
63
- if (docs.length === 0)
64
- throw new UsageError(`${configPath} contains no document`);
65
- const doc = docs[0];
66
- if (doc.kind !== "Project") {
67
- throw new UsageError(`${configPath} must declare 'kind: Project' (found '${doc.kind}')`);
68
- }
69
- try {
70
- return fromJson(ProjectSchema, doc.document, { ignoreUnknownFields: false });
71
- }
72
- catch (err) {
73
- throw new UsageError(`invalid project configuration in ${configPath}: ${err.message}\n\n` +
74
- "Fix the issues above or remove the file to use file mode (stigmer apply -f).");
75
- }
76
- }
77
- // =============================================================================
78
- // Directory scanning
79
- // =============================================================================
80
- /**
81
- * YAML resource files beside stigmer.yaml: top-level files plus files in
82
- * immediate subdirectories. stigmer.yaml itself is excluded, as are skill
83
- * directories (handled separately) and grouping dirs that hold skills.
84
- */
85
- export function scanResourceFiles(projectDir) {
86
- const files = [];
87
- for (const entry of readdirSync(projectDir, { withFileTypes: true })) {
88
- const full = join(projectDir, entry.name);
89
- if (entry.isDirectory()) {
90
- if (isSkillDirectory(full) || containsSkillDirectories(full))
91
- continue;
92
- for (const sub of readdirSync(full, { withFileTypes: true })) {
93
- if (!sub.isDirectory() && isYaml(sub.name))
94
- files.push(join(full, sub.name));
95
- }
96
- continue;
97
- }
98
- if (isYaml(entry.name) && entry.name.toLowerCase() !== CONFIG_FILE_NAME) {
99
- files.push(full);
100
- }
101
- }
102
- return files.sort();
103
- }
104
- /**
105
- * Skill directories beside stigmer.yaml: immediate children that contain a
106
- * SKILL.md (flat layout), plus grandchildren under a grouping dir like skills/
107
- * (organized layout). Scanning stops one level deep, matching Go.
108
- */
109
- export function scanSkillDirectories(projectDir) {
110
- const skillDirs = [];
111
- for (const entry of readdirSync(projectDir, { withFileTypes: true })) {
112
- if (!entry.isDirectory())
113
- continue;
114
- const full = join(projectDir, entry.name);
115
- if (isSkillDirectory(full)) {
116
- skillDirs.push(full);
117
- continue;
118
- }
119
- for (const sub of readdirSync(full, { withFileTypes: true })) {
120
- const nested = join(full, sub.name);
121
- if (sub.isDirectory() && isSkillDirectory(nested))
122
- skillDirs.push(nested);
123
- }
124
- }
125
- return skillDirs.sort();
126
- }
127
- function containsSkillDirectories(dir) {
128
- try {
129
- return readdirSync(dir, { withFileTypes: true }).some((e) => e.isDirectory() && isSkillDirectory(join(dir, e.name)));
130
- }
131
- catch {
132
- return false;
133
- }
134
- }
135
- function isSkillDirectory(dir) {
136
- return hasSkillFile(dir);
137
- }
138
- function isYaml(name) {
139
- const ext = extname(name).toLowerCase();
140
- return ext === ".yaml" || ext === ".yml";
141
- }
142
- // =============================================================================
143
- // Item building
144
- // =============================================================================
145
- /**
146
- * Build ordered apply items from scanned resource files. Project documents are
147
- * skipped (stigmer.yaml is already loaded) and Organization documents are
148
- * skipped with a warning — an organization sits above a project in the resource
149
- * hierarchy and must be applied independently with file mode.
150
- */
151
- export function buildDeclarativeItems(files, warn) {
152
- const items = [];
153
- for (const file of files) {
154
- for (const doc of loadDocuments(file, { strict: true })) {
155
- if (doc.kind === "Project")
156
- continue;
157
- if (doc.kind === "Organization") {
158
- warn(`Skipping ${file}: Organization is not a project resource. Use 'stigmer apply -f' to manage organizations.`);
159
- continue;
160
- }
161
- items.push({ filePath: file, handler: resolveHandlerForKind(doc.kind, file), document: doc.document });
162
- }
163
- }
164
- return sortApplyItems(items);
165
- }
166
- // Member-eligible kinds participate in project membership and reconciliation.
167
- // Mirrors Go's types.IsProjectMemberKind.
168
- const MEMBER_KINDS = new Set([
169
- ApiResourceKind.agent,
170
- ApiResourceKind.workflow,
171
- ApiResourceKind.mcp_server,
172
- ApiResourceKind.skill,
173
- ]);
174
- /**
175
- * Apply a declarative project: scan the directory for YAML resources and skill
176
- * directories, marshal each resource, then hand everything to the shared
177
- * reconciler. This adapter's only job is "filesystem → resources + skill
178
- * sources"; the synthesis track has its own adapter ("SDK → resources + skill
179
- * sources") and both converge on {@link reconcileProjectMembers} (DD-009 §6).
180
- */
181
- export async function applyDeclarative(detect, deps) {
182
- const { project, configDir } = detect;
183
- if (project === undefined || configDir === undefined) {
184
- throw new UsageError("declarative apply requires a stigmer.yaml project");
185
- }
186
- const resourceFiles = scanResourceFiles(configDir);
187
- const skillDirs = scanSkillDirectories(configDir);
188
- if (resourceFiles.length === 0 && skillDirs.length === 0) {
189
- return buildNoResourcesResult(configDir);
190
- }
191
- const items = buildDeclarativeItems(resourceFiles, deps.warn);
192
- deps.info(`Found ${items.length} resource(s) in ${resourceFiles.length} file(s), ${skillDirs.length} skill(s)`);
193
- const resources = items.map((item) => ({ handler: item.handler, message: marshalItem(item) }));
194
- const skillSources = skillDirs.map((dir) => ({ kind: "local", dir, tag: "latest" }));
195
- return reconcileProjectMembers(project, resources, skillSources, deps);
196
- }
197
- // Both tracks treat skill artifacts the same way; the default ignore policy
198
- // mirrors the declarative push (respect .gitignore, no extra patterns).
199
- const DEFAULT_IGNORE_OPTIONS = { respectGitignore: true, extraIgnore: [], extraInclude: [] };
200
- /**
201
- * Reconcile a project's membership: push skills first (agents may reference
202
- * them), apply MCP servers and run capability discovery on them, apply the
203
- * remaining resources, collect references to the member-eligible ones, then
204
- * apply the project with that exact member set so the server can reconcile by
205
- * set-difference (orphan pruning is server-side; see S1 in commands/apply.ts).
206
- */
207
- export async function reconcileProjectMembers(project, resources, skillSources, deps) {
208
- const members = [];
209
- // Skills first — agents may reference them.
210
- for (const src of skillSources) {
211
- const pushed = await pushSkillSource(deps.stigmer, src, deps.org, deps.info);
212
- members.push(reference(deps.org, ApiResourceKind.skill, pushed.slug));
213
- }
214
- // Each resource is applied through the shared apply core, collecting member
215
- // references from the APPLIED result so membership carries the server's
216
- // authoritative slug. (This is the unified policy: the declarative track
217
- // used to read the pre-apply YAML slug, the Go synthesis track read the
218
- // applied result — converging on the applied result is correct for both and
219
- // matches what the backend actually stored.)
220
- const appliedMcpServers = [];
221
- const applyOne = async (res) => {
222
- const outcome = await applyMessage(deps.controller, res.handler, res.message, deps.org, false);
223
- if (outcome.warning !== undefined)
224
- deps.warn(outcome.warning);
225
- if (outcome.appliedMcpServer !== undefined)
226
- appliedMcpServers.push(outcome.appliedMcpServer);
227
- if (MEMBER_KINDS.has(res.handler.kind) && outcome.applied !== undefined) {
228
- const slug = memberSlugOf(outcome.applied);
229
- if (slug)
230
- members.push(reference(deps.org, res.handler.kind, slug));
231
- }
232
- };
233
- // MCP servers first, then capability discovery, then everything else — the
234
- // dependency principle applied to capabilities, not just existence. The
235
- // server validates agent enabled_tools against discovered capabilities at
236
- // apply time (stigmer/stigmer#402), and the backend's own post-apply
237
- // connect is asynchronous; discovering here means agents in this apply
238
- // validate against the toolset this apply just shipped, not the previous
239
- // generation's (which would falsely reject e.g. a project upgrade that
240
- // adds a tool to a server and enables it in an agent in the same pass). Discovery stays
241
- // best-effort: a failed connect warns, capabilities stay stale, and the
242
- // dependent apply surfaces an actionable error listing last-known tools.
243
- for (const res of resources) {
244
- if (res.handler.kind === ApiResourceKind.mcp_server)
245
- await applyOne(res);
246
- }
247
- await discoverAppliedMcpServers(deps.stigmer, appliedMcpServers, deps.org, deps.info);
248
- for (const res of resources) {
249
- if (res.handler.kind !== ApiResourceKind.mcp_server)
250
- await applyOne(res);
251
- }
252
- injectOrg(project, deps.org);
253
- if (project.spec === undefined)
254
- project.spec = create(ProjectSpecSchema, {});
255
- project.spec.members = members;
256
- const created = (project.metadata?.id ?? "") === "";
257
- const applied = await deps.controller(ProjectCommandController).apply(project);
258
- return buildDeclarativeResult(applied, members, created);
259
- }
260
- /**
261
- * Push one skill source and return the result. Local sources push directly;
262
- * git sources clone to a temp dir, push from the subdir, then clean up
263
- * (mirrors `commands/push.ts` --git-url and Go's `pushSkillSynth`).
264
- */
265
- export async function pushSkillSource(client, src, org, info) {
266
- if (src.kind === "local") {
267
- info(`Pushing skill from ${basename(src.dir)}...`);
268
- return pushSkill(client, src.dir, org, src.tag, "", DEFAULT_IGNORE_OPTIONS);
269
- }
270
- info(`Pushing skill from ${src.url}...`);
271
- const tempDir = mkdtempSync(join(tmpdir(), "stigmer-skill-"));
272
- try {
273
- cloneRepository(src.url, src.ref, tempDir);
274
- const skillDir = src.subdir !== "" ? join(tempDir, src.subdir) : tempDir;
275
- return await pushSkillFromClone(client, skillDir, {
276
- gitUrl: src.url,
277
- gitRef: src.ref,
278
- subdir: src.subdir,
279
- org,
280
- tag: src.tag,
281
- message: "",
282
- options: DEFAULT_IGNORE_OPTIONS,
283
- });
284
- }
285
- finally {
286
- rmSync(tempDir, { recursive: true, force: true });
287
- }
288
- }
289
- // Member slug from an applied resource: prefer the server's slug, fall back to
290
- // the name (mirrors Go's buildResourceReference / reader name-fallback).
291
- function memberSlugOf(message) {
292
- const meta = resourceMetadata(message);
293
- return meta?.slug || meta?.name || "";
294
- }
295
- /** Dry-run: validate every resource without touching the backend. */
296
- export function previewDeclarative(detect, deps) {
297
- const { configDir } = detect;
298
- if (configDir === undefined)
299
- throw new UsageError("declarative apply requires a stigmer.yaml project");
300
- const items = buildDeclarativeItems(scanResourceFiles(configDir), deps.warn);
301
- const results = items.map((item) => buildDryRunPreview(item));
302
- const summary = CommandResult.success(`Dry run complete: ${items.length} resource(s) validated`);
303
- summary.hint("Remove --dry-run to apply resources to the backend");
304
- return { results, summary };
305
- }
306
- function buildDryRunPreview(item) {
307
- const meta = metaOf(item);
308
- const result = CommandResult.success(`Dry run: ${meta?.name ?? item.handler.displayName} is valid`);
309
- const section = result.addSection(`${item.handler.displayName} Preview`);
310
- if (meta?.name)
311
- section.field("Name", meta.name);
312
- if (meta?.slug)
313
- section.field("Slug", meta.slug);
314
- return result;
315
- }
316
- // The document is YAML-shaped JSON; read metadata fields for membership/preview
317
- // without marshalling (the apply itself marshals strictly).
318
- function metaOf(item) {
319
- const meta = item.document.metadata;
320
- if (meta === undefined)
321
- return undefined;
322
- return {
323
- name: typeof meta.name === "string" ? meta.name : undefined,
324
- slug: typeof meta.slug === "string" ? meta.slug : undefined,
325
- };
326
- }
327
- function reference(org, kind, slug) {
328
- return create(ApiResourceReferenceSchema, { org, kind, slug });
329
- }
330
- function injectOrg(project, org) {
331
- if (org === "")
332
- return;
333
- const holder = project;
334
- if (holder.metadata === undefined) {
335
- holder.metadata = create(ApiResourceMetadataSchema, { org });
336
- }
337
- else if (holder.metadata.org === "") {
338
- holder.metadata.org = org;
339
- }
340
- }
341
- // =============================================================================
342
- // Result builders
343
- // =============================================================================
344
- function buildNoResourcesResult(projectDir) {
345
- const result = CommandResult.warning("No resource files found in project directory");
346
- result
347
- .addSection("")
348
- .field("Directory", projectDir)
349
- .item("Add YAML resource files (Agent, Workflow, McpServer) or skill directories (with SKILL.md) next to stigmer.yaml");
350
- result.hint("Example: create agent.yaml with kind: Agent, then run 'stigmer apply'");
351
- return result;
352
- }
353
- function buildDeclarativeResult(project, members, created) {
354
- const name = project.metadata?.name ?? "project";
355
- const result = CommandResult.success(`Project ${name} successfully (${created ? "created" : "updated"})`);
356
- const section = result.addSection("Project");
357
- if (project.metadata?.name)
358
- section.field("Name", project.metadata.name);
359
- if (project.metadata?.slug)
360
- section.field("Slug", project.metadata.slug);
361
- if (project.metadata?.id)
362
- section.field("ID", project.metadata.id);
363
- const counts = countByKind(members);
364
- if (counts.size > 0) {
365
- const memberSection = result.addSection("Members Applied");
366
- for (const kind of [
367
- ApiResourceKind.agent,
368
- ApiResourceKind.workflow,
369
- ApiResourceKind.mcp_server,
370
- ApiResourceKind.skill,
371
- ]) {
372
- const count = counts.get(kind);
373
- if (count !== undefined)
374
- memberSection.field(ApiResourceKind[kind], String(count));
375
- }
376
- }
377
- const recon = project.status?.lastReconciliation;
378
- if (recon !== undefined && (recon.created.length > 0 || recon.updated.length > 0 || recon.deleted.length > 0)) {
379
- const reconSection = result.addSection("Reconciliation");
380
- if (recon.created.length > 0)
381
- reconSection.field("Created", String(recon.created.length));
382
- if (recon.updated.length > 0)
383
- reconSection.field("Updated", String(recon.updated.length));
384
- if (recon.deleted.length > 0)
385
- reconSection.field("Pruned", String(recon.deleted.length));
386
- }
387
- if (project.metadata?.slug)
388
- result.hint(`View project: stigmer get project ${project.metadata.slug}`);
389
- return result;
390
- }
391
- function countByKind(members) {
392
- const counts = new Map();
393
- for (const member of members)
394
- counts.set(member.kind, (counts.get(member.kind) ?? 0) + 1);
395
- return counts;
396
- }
397
- //# sourceMappingURL=declarative.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"declarative.js","sourceRoot":"","sources":["../../../src/resources/apply/declarative.ts"],"names":[],"mappings":"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"}
@@ -1,21 +0,0 @@
1
- import { CommandResult } from "../../../output/index.js";
2
- import { type DeclarativeDeps, type DetectResult } from "../declarative.js";
3
- import type { SynthesizeDeps } from "./synthesize.js";
4
- /** Deps for the project track: the reconciler deps plus injectable synthesis. */
5
- export interface ProjectTrackDeps extends DeclarativeDeps {
6
- /** Injectable synthesis collaborators (real subprocess by default). */
7
- readonly synthesizeDeps?: SynthesizeDeps;
8
- }
9
- /**
10
- * Apply an SDK project: synthesize the entry point, read the `.pb` output, and
11
- * reconcile membership through the shared reconciler. Returns the summary
12
- * CommandResult for the caller to render.
13
- */
14
- export declare function applyProjectTrack(detect: DetectResult, deps: ProjectTrackDeps): Promise<CommandResult>;
15
- /**
16
- * Dry-run preview: validate the project configuration statically (no synthesis,
17
- * no backend), warning if the entry point file is missing. Port of Go's
18
- * executeSDKDryRun.
19
- */
20
- export declare function previewProjectTrack(detect: DetectResult): CommandResult;
21
- //# sourceMappingURL=project-track.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"project-track.d.ts","sourceRoot":"","sources":["../../../../src/resources/apply/synth/project-track.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,YAAY,EAIlB,MAAM,mBAAmB,CAAC;AAK3B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAGtD,iFAAiF;AACjF,MAAM,WAAW,gBAAiB,SAAQ,eAAe;IACvD,uEAAuE;IACvE,QAAQ,CAAC,cAAc,CAAC,EAAE,cAAc,CAAC;CAC1C;AAED;;;;GAIG;AACH,wBAAsB,iBAAiB,CAAC,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,aAAa,CAAC,CAyB5G;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,YAAY,GAAG,aAAa,CAmBvE"}
@@ -1,102 +0,0 @@
1
- // Synthesis (project) track: the consumer adapter for `apply entry_point`.
2
- //
3
- // Its job mirrors the declarative adapter's — turn a source into resources +
4
- // skill sources — but the source here is the SDK program rather than YAML
5
- // files: infer the runtime, run synthesis (subprocess → `.pb`), decode the
6
- // output, normalize it into the shared shapes, then hand off to the ONE shared
7
- // reconciler (DD-009 §6). There is no parallel project-apply path.
8
- //
9
- // Resources are emitted in dependency-apply order (mcp_server → agent →
10
- // workflow), matching the declarative track's APPLY_ORDER so parents land before
11
- // dependents — a deliberate, more-correct ordering than the Go synth path
12
- // (which applied agents first).
13
- import { existsSync } from "node:fs";
14
- import { isAbsolute, join } from "node:path";
15
- import { ApiResourceKind } from "@stigmer/protos/ai/stigmer/commons/apiresource/apiresourcekind/api_resource_kind_pb";
16
- import { UsageError } from "../../../errors/index.js";
17
- import { CommandResult } from "../../../output/index.js";
18
- import { reconcileProjectMembers, } from "../declarative.js";
19
- import { APPLY_HANDLERS } from "../handlers.js";
20
- import { readSynthesisOutput } from "./reader.js";
21
- import { inferRuntime } from "./runtime.js";
22
- import { synthesize } from "./synthesize.js";
23
- /**
24
- * Apply an SDK project: synthesize the entry point, read the `.pb` output, and
25
- * reconcile membership through the shared reconciler. Returns the summary
26
- * CommandResult for the caller to render.
27
- */
28
- export async function applyProjectTrack(detect, deps) {
29
- const { project, configDir } = detect;
30
- if (project === undefined || configDir === undefined) {
31
- throw new UsageError("project synthesis requires a stigmer.yaml project with an entry_point");
32
- }
33
- const entryPoint = project.spec?.entryPoint ?? "";
34
- if (entryPoint === "")
35
- throw new UsageError("project has no entry_point");
36
- const runtime = inferRuntime(entryPoint);
37
- deps.info(`SDK mode: ${entryPoint} (runtime: ${runtime})`);
38
- const { outputDir } = await synthesize({ projectDir: configDir, entryPoint, runtime, orgId: deps.org }, deps.synthesizeDeps);
39
- const synth = readSynthesisOutput(outputDir);
40
- deps.info(`Synthesis complete: ${synth.agents.length} agent(s), ${synth.workflows.length} workflow(s), ` +
41
- `${synth.mcpServers.length} MCP server(s), ${synth.skillSynths.length} skill(s)`);
42
- const resources = toReconcileResources(synth);
43
- const skillSources = toSkillSources(synth, configDir);
44
- return reconcileProjectMembers(project, resources, skillSources, deps);
45
- }
46
- /**
47
- * Dry-run preview: validate the project configuration statically (no synthesis,
48
- * no backend), warning if the entry point file is missing. Port of Go's
49
- * executeSDKDryRun.
50
- */
51
- export function previewProjectTrack(detect) {
52
- const { project, configDir } = detect;
53
- if (project === undefined || configDir === undefined) {
54
- throw new UsageError("project synthesis requires a stigmer.yaml project with an entry_point");
55
- }
56
- const entryPoint = project.spec?.entryPoint ?? "";
57
- const runtime = inferRuntime(entryPoint);
58
- const result = CommandResult.success("Dry run: SDK project configuration is valid");
59
- const section = result.addSection("Project");
60
- if (project.metadata?.name)
61
- section.field("Name", project.metadata.name);
62
- section.field("Entry Point", entryPoint);
63
- section.field("Runtime", runtime);
64
- if (!existsSync(join(configDir, entryPoint))) {
65
- result.addSection("Warning").item(`Entry point file not found: ${entryPoint}`);
66
- }
67
- result.hint("Remove --dry-run to execute synthesis and apply resources");
68
- return result;
69
- }
70
- // Normalize decoded protos into ReconcileResources in dependency-apply order.
71
- function toReconcileResources(synth) {
72
- const resources = [];
73
- for (const message of synth.mcpServers)
74
- resources.push({ handler: handlerFor(ApiResourceKind.mcp_server), message });
75
- for (const message of synth.agents)
76
- resources.push({ handler: handlerFor(ApiResourceKind.agent), message });
77
- for (const message of synth.workflows)
78
- resources.push({ handler: handlerFor(ApiResourceKind.workflow), message });
79
- return resources;
80
- }
81
- // Normalize SkillSynths into SkillSources; local paths resolve relative to the
82
- // project dir (matching Go's pushSkillSynth).
83
- function toSkillSources(synth, configDir) {
84
- return synth.skillSynths.map((skill) => {
85
- if (skill.source.case === "local") {
86
- const path = skill.source.value.path;
87
- return { kind: "local", dir: isAbsolute(path) ? path : join(configDir, path), tag: skill.tag };
88
- }
89
- if (skill.source.case === "git") {
90
- const git = skill.source.value;
91
- return { kind: "git", url: git.url, ref: git.ref, subdir: git.subdir, tag: skill.tag };
92
- }
93
- throw new UsageError("skill synthesis has no source configured (neither local nor git)");
94
- });
95
- }
96
- function handlerFor(kind) {
97
- const handler = APPLY_HANDLERS.get(kind);
98
- if (handler === undefined)
99
- throw new UsageError(`apply not implemented for ${ApiResourceKind[kind]}`);
100
- return handler;
101
- }
102
- //# sourceMappingURL=project-track.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"project-track.js","sourceRoot":"","sources":["../../../../src/resources/apply/synth/project-track.ts"],"names":[],"mappings":"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"}
@@ -1,18 +0,0 @@
1
- import { type Agent } from "@stigmer/protos/ai/stigmer/agentic/agent/v1/api_pb";
2
- import { type McpServer } from "@stigmer/protos/ai/stigmer/agentic/mcpserver/v1/api_pb";
3
- import { type SkillSynth } from "@stigmer/protos/ai/stigmer/agentic/skill/v1/synth_pb";
4
- import { type Workflow } from "@stigmer/protos/ai/stigmer/agentic/workflow/v1/api_pb";
5
- /** Decoded synthesis output, grouped by kind in read order. */
6
- export interface SynthesisResult {
7
- readonly skillSynths: SkillSynth[];
8
- readonly mcpServers: McpServer[];
9
- readonly agents: Agent[];
10
- readonly workflows: Workflow[];
11
- }
12
- /**
13
- * Read and decode all synthesized `.pb` files from `outputDir`. Throws a
14
- * UsageError if the synthesis produced no resources (a program that registered
15
- * nothing, or wrote to the wrong directory).
16
- */
17
- export declare function readSynthesisOutput(outputDir: string): SynthesisResult;
18
- //# sourceMappingURL=reader.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"reader.d.ts","sourceRoot":"","sources":["../../../../src/resources/apply/synth/reader.ts"],"names":[],"mappings":"AAmBA,OAAO,EAAE,KAAK,KAAK,EAAe,MAAM,oDAAoD,CAAC;AAC7F,OAAO,EAAE,KAAK,SAAS,EAAmB,MAAM,wDAAwD,CAAC;AACzG,OAAO,EAAE,KAAK,UAAU,EAAoB,MAAM,sDAAsD,CAAC;AACzG,OAAO,EAAE,KAAK,QAAQ,EAAkB,MAAM,uDAAuD,CAAC;AAGtG,+DAA+D;AAC/D,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,WAAW,EAAE,UAAU,EAAE,CAAC;IACnC,QAAQ,CAAC,UAAU,EAAE,SAAS,EAAE,CAAC;IACjC,QAAQ,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,QAAQ,EAAE,CAAC;CAChC;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,eAAe,CAetE"}
@@ -1,55 +0,0 @@
1
- // Reader for SDK synthesis output.
2
- //
3
- // The SDK writes one binary proto per resource into the out dir:
4
- // skill-N.pb (SkillSynth — input for skill push)
5
- // mcpserver-N.pb (McpServer)
6
- // agent-N.pb (Agent)
7
- // workflow-N.pb (Workflow)
8
- // We glob each `<kind>-*.pb`, sort lexically (matching Go's reader so the same
9
- // bytes read identically on both consumers), and decode with `fromBinary`
10
- // (DD-009 §3). At least one resource must be present.
11
- //
12
- // `dependencies.json` (Go's local-only dependency graph) is deliberately NOT
13
- // consumed: no dependency-graph validation feature exists, and the TS SDK does
14
- // not emit it. Its absence is therefore tolerated by construction (DD-009).
15
- // Port of `internal/cli/synthesis/reader.go`.
16
- import { readdirSync, readFileSync } from "node:fs";
17
- import { join } from "node:path";
18
- import { fromBinary } from "@bufbuild/protobuf";
19
- import { AgentSchema } from "@stigmer/protos/ai/stigmer/agentic/agent/v1/api_pb";
20
- import { McpServerSchema } from "@stigmer/protos/ai/stigmer/agentic/mcpserver/v1/api_pb";
21
- import { SkillSynthSchema } from "@stigmer/protos/ai/stigmer/agentic/skill/v1/synth_pb";
22
- import { WorkflowSchema } from "@stigmer/protos/ai/stigmer/agentic/workflow/v1/api_pb";
23
- import { UsageError } from "../../../errors/index.js";
24
- /**
25
- * Read and decode all synthesized `.pb` files from `outputDir`. Throws a
26
- * UsageError if the synthesis produced no resources (a program that registered
27
- * nothing, or wrote to the wrong directory).
28
- */
29
- export function readSynthesisOutput(outputDir) {
30
- const skillSynths = readProtoFiles(outputDir, "skill-", SkillSynthSchema);
31
- const mcpServers = readProtoFiles(outputDir, "mcpserver-", McpServerSchema);
32
- const agents = readProtoFiles(outputDir, "agent-", AgentSchema);
33
- const workflows = readProtoFiles(outputDir, "workflow-", WorkflowSchema);
34
- if (skillSynths.length + mcpServers.length + agents.length + workflows.length === 0) {
35
- throw new UsageError("no resources found in synthesis output\n\n" +
36
- "The entry point ran but registered no resources. Register at least one " +
37
- "agent, workflow, MCP server, or skill, and end with `await project.synth()`.");
38
- }
39
- return { skillSynths, mcpServers, agents, workflows };
40
- }
41
- // Glob `<prefix>*.pb` in `dir`, sort lexically (parity with Go's sort.Strings),
42
- // and decode each. A missing directory yields an empty list (the caller's
43
- // zero-resource check produces the user-facing error).
44
- function readProtoFiles(dir, prefix, schema) {
45
- let names;
46
- try {
47
- names = readdirSync(dir);
48
- }
49
- catch {
50
- return [];
51
- }
52
- const matches = names.filter((name) => name.startsWith(prefix) && name.endsWith(".pb")).sort();
53
- return matches.map((name) => fromBinary(schema, readFileSync(join(dir, name))));
54
- }
55
- //# sourceMappingURL=reader.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"reader.js","sourceRoot":"","sources":["../../../../src/resources/apply/synth/reader.ts"],"names":[],"mappings":"AAAA,mCAAmC;AACnC,EAAE;AACF,iEAAiE;AACjE,yDAAyD;AACzD,iCAAiC;AACjC,6BAA6B;AAC7B,gCAAgC;AAChC,+EAA+E;AAC/E,0EAA0E;AAC1E,sDAAsD;AACtD,EAAE;AACF,6EAA6E;AAC7E,+EAA+E;AAC/E,4EAA4E;AAC5E,8CAA8C;AAE9C,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACpD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAoB,UAAU,EAAqB,MAAM,oBAAoB,CAAC;AACrF,OAAO,EAAc,WAAW,EAAE,MAAM,oDAAoD,CAAC;AAC7F,OAAO,EAAkB,eAAe,EAAE,MAAM,wDAAwD,CAAC;AACzG,OAAO,EAAmB,gBAAgB,EAAE,MAAM,sDAAsD,CAAC;AACzG,OAAO,EAAiB,cAAc,EAAE,MAAM,uDAAuD,CAAC;AACtG,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAUtD;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CAAC,SAAiB;IACnD,MAAM,WAAW,GAAG,cAAc,CAAC,SAAS,EAAE,QAAQ,EAAE,gBAAgB,CAAC,CAAC;IAC1E,MAAM,UAAU,GAAG,cAAc,CAAC,SAAS,EAAE,YAAY,EAAE,eAAe,CAAC,CAAC;IAC5E,MAAM,MAAM,GAAG,cAAc,CAAC,SAAS,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;IAChE,MAAM,SAAS,GAAG,cAAc,CAAC,SAAS,EAAE,WAAW,EAAE,cAAc,CAAC,CAAC;IAEzE,IAAI,WAAW,CAAC,MAAM,GAAG,UAAU,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACpF,MAAM,IAAI,UAAU,CAClB,4CAA4C;YAC1C,yEAAyE;YACzE,8EAA8E,CACjF,CAAC;IACJ,CAAC;IAED,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;AACxD,CAAC;AAED,gFAAgF;AAChF,0EAA0E;AAC1E,uDAAuD;AACvD,SAAS,cAAc,CAA2B,GAAW,EAAE,MAAc,EAAE,MAAY;IACzF,IAAI,KAAe,CAAC;IACpB,IAAI,CAAC;QACH,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC/F,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC,MAAM,EAAE,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AAClF,CAAC"}