@stigmer/cli 3.12.1 → 3.12.2

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 (41) hide show
  1. package/commands/push.d.ts.map +1 -1
  2. package/commands/push.js +57 -0
  3. package/commands/push.js.map +1 -1
  4. package/commands/setup.d.ts.map +1 -1
  5. package/commands/setup.js +7 -3
  6. package/commands/setup.js.map +1 -1
  7. package/local/daemon/launch.js +2 -6
  8. package/local/daemon/launch.js.map +1 -1
  9. package/local/llm-config.d.ts +0 -6
  10. package/local/llm-config.d.ts.map +1 -1
  11. package/local/llm-config.js +8 -14
  12. package/local/llm-config.js.map +1 -1
  13. package/local/setup/wizard.d.ts +4 -5
  14. package/local/setup/wizard.d.ts.map +1 -1
  15. package/local/setup/wizard.js +7 -9
  16. package/local/setup/wizard.js.map +1 -1
  17. package/local/state/startup-config.d.ts +5 -4
  18. package/local/state/startup-config.d.ts.map +1 -1
  19. package/local/state/startup-config.js +6 -3
  20. package/local/state/startup-config.js.map +1 -1
  21. package/local/status.d.ts.map +1 -1
  22. package/local/status.js +5 -6
  23. package/local/status.js.map +1 -1
  24. package/package.json +5 -5
  25. package/resources/skill.d.ts +38 -0
  26. package/resources/skill.d.ts.map +1 -1
  27. package/resources/skill.js +84 -2
  28. package/resources/skill.js.map +1 -1
  29. package/src/commands/push.ts +74 -0
  30. package/src/commands/setup.ts +7 -4
  31. package/src/local/daemon/launch.ts +1 -6
  32. package/src/local/llm-config.test.ts +11 -14
  33. package/src/local/llm-config.ts +8 -15
  34. package/src/local/setup/wizard.test.ts +2 -3
  35. package/src/local/setup/wizard.ts +7 -9
  36. package/src/local/state/startup-config.ts +11 -7
  37. package/src/local/state/state.test.ts +23 -3
  38. package/src/local/status.test.ts +2 -2
  39. package/src/local/status.ts +5 -6
  40. package/src/resources/skill.test.ts +119 -5
  41. package/src/resources/skill.ts +108 -2
@@ -1 +1 @@
1
- {"version":3,"file":"skill.d.ts","sourceRoot":"","sources":["../../src/resources/skill.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"skill.d.ts","sourceRoot":"","sources":["../../src/resources/skill.ts"],"names":[],"mappings":"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"}
@@ -11,12 +11,22 @@ import { PushSkillRequestSchema } from "@stigmer/protos/ai/stigmer/agentic/skill
11
11
  import { GitProvenanceSchema } from "@stigmer/protos/ai/stigmer/agentic/skill/v1/status_pb";
12
12
  import { ApiResourceVisibility } from "@stigmer/protos/ai/stigmer/commons/apiresource/enum_pb";
13
13
  import { UpdateVisibilityInputSchema } from "@stigmer/protos/ai/stigmer/commons/apiresource/io_pb";
14
- import { zipSync } from "fflate";
14
+ import { strFromU8, unzipSync, zipSync } from "fflate";
15
15
  import { parse as parseYaml } from "yaml";
16
16
  import { UsageError } from "../errors/index.js";
17
17
  import { getGitBranchName, getGitCommit, getGitRemoteUrl, getGitRepoRoot } from "./git.js";
18
18
  import { createMatcher, REASON_TEXT } from "./ignore/index.js";
19
19
  export const SKILL_FILE = "SKILL.md";
20
+ // A skill version's identity is the server-side SHA-256 of the uploaded zip
21
+ // bytes, so packaging must be a pure function of content — otherwise
22
+ // re-pushing unchanged content registers a new version and the server's
23
+ // unchanged-content no-op never fires (stigmer/stigmer#671). fflate stamps
24
+ // zip-creation time into every entry when no mtime is given; pinning the DOS
25
+ // epoch (the earliest representable zip timestamp) removes the only
26
+ // byte-level variance. Local-field Date construction is deliberate: DOS
27
+ // timestamps store wall-clock fields, so this encodes identically in every
28
+ // timezone.
29
+ const DETERMINISTIC_ZIP_MTIME = new Date(1980, 0, 1);
20
30
  // Kebab-case, optionally scoped with dot-separated namespaces (e.g.
21
31
  // "platform.planton-architecture"). Every segment must be alphanumeric, so no
22
32
  // leading/trailing/consecutive separators. The derived slug renders dots as hyphens.
@@ -46,6 +56,15 @@ export function parseSkillMetadata(dir) {
46
56
  catch (err) {
47
57
  throw new Error(`failed to read ${SKILL_FILE}: ${err.message}`);
48
58
  }
59
+ return parseSkillMetadataContent(content);
60
+ }
61
+ /**
62
+ * Parse SKILL.md content directly — the shared core behind the directory
63
+ * path (`parseSkillMetadata`) and the pre-packaged archive path
64
+ * (`pushSkillFromArchive`), where the content comes out of a zip entry
65
+ * rather than the filesystem.
66
+ */
67
+ export function parseSkillMetadataContent(content) {
49
68
  const frontmatter = extractFrontmatter(content);
50
69
  const parsed = (parseYaml(frontmatter) ?? {});
51
70
  const name = typeof parsed.name === "string" ? parsed.name : "";
@@ -161,7 +180,7 @@ export function createSkillZip(dir, options, onDecision) {
161
180
  }
162
181
  };
163
182
  walk(dir, "");
164
- const bytes = zipSync(files, { level: 6 });
183
+ const bytes = zipSync(files, { level: 6, mtime: DETERMINISTIC_ZIP_MTIME });
165
184
  return { bytes, stats };
166
185
  }
167
186
  /** Dry-run: report what would be included/ignored without zipping. */
@@ -271,6 +290,69 @@ export async function pushSkillFromClone(client, skillDir, params, onDecision) {
271
290
  const applied = await applyDeclaredVisibility(client, response, visibility);
272
291
  return toResult(applied, name, params.message, stats.totalSize, visibility);
273
292
  }
293
+ /**
294
+ * Read and validate a pre-packaged skill archive.
295
+ *
296
+ * Client-side validation is deliberately minimal — root SKILL.md present and
297
+ * frontmatter parses (the same contract the console's upload preview checks);
298
+ * the server remains the authoritative validator. The unzip filter inflates
299
+ * ONLY SKILL.md: entry metadata is enough for the count/size summary, and
300
+ * validation must not pay for decompressing a large artifact.
301
+ */
302
+ export function readSkillArchive(archivePath) {
303
+ let raw;
304
+ try {
305
+ raw = readFileSync(archivePath);
306
+ }
307
+ catch (err) {
308
+ throw new UsageError(`failed to read archive ${archivePath}: ${err.message}`);
309
+ }
310
+ const bytes = new Uint8Array(raw);
311
+ let fileCount = 0;
312
+ let totalSize = 0;
313
+ let unzipped;
314
+ try {
315
+ unzipped = unzipSync(bytes, {
316
+ filter: (info) => {
317
+ if (!info.name.endsWith("/")) {
318
+ fileCount++;
319
+ totalSize += info.originalSize;
320
+ }
321
+ return info.name === SKILL_FILE;
322
+ },
323
+ });
324
+ }
325
+ catch (err) {
326
+ throw new UsageError(`${archivePath} is not a valid ZIP archive: ${err.message}`);
327
+ }
328
+ const skillMd = unzipped[SKILL_FILE];
329
+ if (skillMd === undefined) {
330
+ throw new UsageError(`${SKILL_FILE} not found at the root of ${archivePath}\n\n` +
331
+ `A skill archive must contain ${SKILL_FILE} at its root (not inside a directory) defining the skill interface`);
332
+ }
333
+ return { bytes, meta: parseSkillMetadataContent(strFromU8(skillMd)), fileCount, totalSize };
334
+ }
335
+ /**
336
+ * Push a pre-packaged skill archive as-is (`--archive`).
337
+ *
338
+ * The bytes are uploaded untouched, so the engine's version hash is the
339
+ * SHA-256 of the file on disk — release pipelines that publish checksums get
340
+ * engine version identities that match them (stigmer/stigmer#671). Git
341
+ * provenance is deliberately omitted: the archive was built elsewhere, so the
342
+ * local checkout says nothing about the artifact's origin.
343
+ */
344
+ export async function pushSkillFromArchive(client, archivePath, org, tag, message) {
345
+ const archive = readSkillArchive(archivePath);
346
+ const request = create(PushSkillRequestSchema, {
347
+ org,
348
+ artifact: archive.bytes,
349
+ tag: tag === "" ? "latest" : tag,
350
+ message,
351
+ });
352
+ const response = await client.skill.push(request);
353
+ const applied = await applyDeclaredVisibility(client, response, archive.meta.visibility);
354
+ return toResult(applied, archive.meta.name, message, archive.totalSize, archive.meta.visibility);
355
+ }
274
356
  /**
275
357
  * Apply the SKILL.md-declared visibility after a push. The push RPC carries
276
358
  * artifact + provenance but not access level (visibility is metadata, not part
@@ -1 +1 @@
1
- {"version":3,"file":"skill.js","sourceRoot":"","sources":["../../src/resources/skill.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"skill.js","sourceRoot":"","sources":["../../src/resources/skill.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,EAAE;AACF,gFAAgF;AAChF,iFAAiF;AACjF,wEAAwE;AACxE,uEAAuE;AAEvE,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC9D,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpD,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAE5C,OAAO,EAAE,sBAAsB,EAAE,MAAM,mDAAmD,CAAC;AAC3F,OAAO,EAAE,mBAAmB,EAAE,MAAM,uDAAuD,CAAC;AAC5F,OAAO,EAAE,qBAAqB,EAAE,MAAM,wDAAwD,CAAC;AAC/F,OAAO,EAAE,2BAA2B,EAAE,MAAM,sDAAsD,CAAC;AAEnG,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AACvD,OAAO,EAAE,KAAK,IAAI,SAAS,EAAE,MAAM,MAAM,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC3F,OAAO,EAAE,aAAa,EAAE,WAAW,EAAe,MAAM,mBAAmB,CAAC;AAE5E,MAAM,CAAC,MAAM,UAAU,GAAG,UAAU,CAAC;AAErC,4EAA4E;AAC5E,qEAAqE;AACrE,wEAAwE;AACxE,2EAA2E;AAC3E,6EAA6E;AAC7E,oEAAoE;AACpE,wEAAwE;AACxE,2EAA2E;AAC3E,YAAY;AACZ,MAAM,uBAAuB,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACrD,oEAAoE;AACpE,8EAA8E;AAC9E,qFAAqF;AACrF,MAAM,aAAa,GAAG,6BAA6B,CAAC;AA2CpD,SAAS,WAAW,CAAC,GAAW;IAC9B,IAAI,CAAC;QACH,OAAO,WAAW,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;IACnD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,GAAW;IACtC,IAAI,CAAC;QACH,OAAO,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAClD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAaD,uGAAuG;AACvG,MAAM,UAAU,kBAAkB,CAAC,GAAW;IAC5C,IAAI,OAAe,CAAC;IACpB,IAAI,CAAC;QACH,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,UAAU,CAAC,EAAE,MAAM,CAAC,CAAC;IACxD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,kBAAkB,UAAU,KAAM,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;IAC7E,CAAC;IACD,OAAO,yBAAyB,CAAC,OAAO,CAAC,CAAC;AAC5C,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,yBAAyB,CAAC,OAAe;IACvD,MAAM,WAAW,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;IAChD,MAAM,MAAM,GAAG,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,EAAE,CAA4B,CAAC;IACzE,MAAM,IAAI,GAAG,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;IAEhE,IAAI,IAAI,KAAK,EAAE,EAAE,CAAC;QAChB,MAAM,IAAI,UAAU,CAClB,GAAG,UAAU,2DAA2D;YACtE,qDAAqD;YACrD,yEAAyE;YACzE,wDAAwD,CAC3D,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAC9B,MAAM,IAAI,UAAU,CAClB,uBAAuB,IAAI,QAAQ,UAAU,MAAM;YACjD,8EAA8E;YAC9E,6EAA6E;YAC7E,yCAAyC;YACzC,sFAAsF,CACzF,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,eAAe,CAAC,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,EAAE,CAAC;AAC9E,CAAC;AAED,8EAA8E;AAC9E,gFAAgF;AAChF,+EAA+E;AAC/E,yEAAyE;AACzE,MAAM,kBAAkB,GAA+C,IAAI,GAAG,CAAC;IAC7E,CAAC,SAAS,EAAE,qBAAqB,CAAC,kBAAkB,CAAC;IACrD,CAAC,oBAAoB,EAAE,qBAAqB,CAAC,kBAAkB,CAAC;IAChE,CAAC,QAAQ,EAAE,qBAAqB,CAAC,iBAAiB,CAAC;IACnD,CAAC,mBAAmB,EAAE,qBAAqB,CAAC,iBAAiB,CAAC;IAC9D,CAAC,KAAK,EAAE,qBAAqB,CAAC,cAAc,CAAC;IAC7C,CAAC,gBAAgB,EAAE,qBAAqB,CAAC,cAAc,CAAC;IACxD,CAAC,UAAU,EAAE,qBAAqB,CAAC,mBAAmB,CAAC;IACvD,CAAC,qBAAqB,EAAE,qBAAqB,CAAC,mBAAmB,CAAC;CACnE,CAAC,CAAC;AAEH;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,KAAc,EAAE,MAAM,GAAG,UAAU;IACjE,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,SAAS,CAAC;IAC5D,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,MAAM,IAAI,UAAU,CAAC,2BAA2B,MAAM,4BAA4B,OAAO,KAAK,EAAE,CAAC,CAAC;IACpG,CAAC;IACD,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACvC,IAAI,GAAG,KAAK,EAAE,IAAI,GAAG,KAAK,aAAa,IAAI,GAAG,KAAK,qCAAqC;QAAE,OAAO,SAAS,CAAC;IAC3G,MAAM,MAAM,GAAG,kBAAkB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC3C,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,MAAM,IAAI,UAAU,CAClB,+BAA+B,KAAK,QAAQ,MAAM,MAAM;YACtD,+CAA+C,CAClD,CAAC;IACJ,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,kBAAkB,CAAC,OAAe;IACzC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACrC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,KAAK,EAAE,CAAC;QACpD,MAAM,IAAI,UAAU,CAAC,GAAG,UAAU,yCAAyC,CAAC,CAAC;IAC/E,CAAC;IACD,MAAM,SAAS,GAAa,EAAE,CAAC;IAC/B,IAAI,MAAM,GAAG,KAAK,CAAC;IACnB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,KAAK,EAAE,CAAC;YAC9B,MAAM,GAAG,IAAI,CAAC;YACd,MAAM;QACR,CAAC;QACD,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3B,CAAC;IACD,IAAI,CAAC,MAAM;QAAE,MAAM,IAAI,UAAU,CAAC,GAAG,UAAU,kDAAkD,CAAC,CAAC;IACnG,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;QAAE,MAAM,IAAI,UAAU,CAAC,GAAG,UAAU,wBAAwB,CAAC,CAAC;IACxF,OAAO,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC9B,CAAC;AAED,4EAA4E;AAC5E,MAAM,UAAU,cAAc,CAC5B,GAAW,EACX,OAAsB,EACtB,UAAyB;IAEzB,MAAM,OAAO,GAAG,aAAa,CAAC;QAC5B,OAAO,EAAE,GAAG;QACZ,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;QAC1C,eAAe,EAAE,IAAI;QACrB,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,YAAY,EAAE,OAAO,CAAC,YAAY;KACnC,CAAC,CAAC;IAEH,MAAM,KAAK,GAAa,EAAE,aAAa,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC;IAC5F,MAAM,KAAK,GAA+B,EAAE,CAAC;IAE7C,MAAM,IAAI,GAAG,CAAC,UAAkB,EAAE,MAAc,EAAQ,EAAE;QACxD,MAAM,OAAO,GAAG,WAAW,CAAC,UAAU,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QAC9G,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,MAAM,OAAO,GAAG,MAAM,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;YACvE,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;YAE1C,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;gBACxB,MAAM,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;gBACtD,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;oBACnB,KAAK,CAAC,WAAW,EAAE,CAAC;oBACpB,UAAU,EAAE,CAAC,eAAe,OAAO,MAAM,WAAW,CAAC,MAAM,CAAC,MAAgB,CAAC,GAAG,CAAC,CAAC;oBAClF,SAAS;gBACX,CAAC;gBACD,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;gBACpB,SAAS;YACX,CAAC;YACD,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;gBAAE,SAAS;YAE9B,MAAM,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;YACvD,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBACnB,KAAK,CAAC,YAAY,EAAE,CAAC;gBACrB,UAAU,EAAE,CAAC,eAAe,OAAO,KAAK,WAAW,CAAC,MAAM,CAAC,MAAgB,CAAC,GAAG,CAAC,CAAC;gBACjF,SAAS;YACX,CAAC;YACD,UAAU,EAAE,CAAC,eAAe,OAAO,EAAE,CAAC,CAAC;YACvC,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;YAChC,KAAK,CAAC,OAAO,CAAC,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC;YACtC,KAAK,CAAC,aAAa,EAAE,CAAC;YACtB,KAAK,CAAC,SAAS,IAAI,IAAI,CAAC,MAAM,CAAC;QACjC,CAAC;IACH,CAAC,CAAC;IACF,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IAEd,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,uBAAuB,EAAE,CAAC,CAAC;IAC3E,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;AAC1B,CAAC;AAED,sEAAsE;AACtE,MAAM,UAAU,aAAa,CAAC,GAAW,EAAE,OAAsB;IAC/D,MAAM,OAAO,GAAG,aAAa,CAAC;QAC5B,OAAO,EAAE,GAAG;QACZ,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;QAC1C,eAAe,EAAE,IAAI;QACrB,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,YAAY,EAAE,OAAO,CAAC,YAAY;KACnC,CAAC,CAAC;IAEH,MAAM,KAAK,GAAa,EAAE,aAAa,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC;IAC5F,MAAM,aAAa,GAAa,EAAE,CAAC;IACnC,MAAM,cAAc,GAAa,EAAE,CAAC;IAEpC,MAAM,IAAI,GAAG,CAAC,UAAkB,EAAE,MAAc,EAAQ,EAAE;QACxD,MAAM,OAAO,GAAG,WAAW,CAAC,UAAU,CAAC,CAAC;QACxC,IAAI,OAAO,KAAK,SAAS;YAAE,OAAO,CAAC,mEAAmE;QACtG,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;YACzE,MAAM,OAAO,GAAG,MAAM,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;YACvE,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;YAE1C,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;gBACxB,MAAM,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;gBACtD,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;oBACnB,KAAK,CAAC,WAAW,EAAE,CAAC;oBACpB,IAAI,aAAa,CAAC,MAAM,GAAG,EAAE;wBAAE,aAAa,CAAC,IAAI,CAAC,GAAG,OAAO,MAAM,WAAW,CAAC,MAAM,CAAC,MAAgB,CAAC,GAAG,CAAC,CAAC;oBAC3G,SAAS;gBACX,CAAC;gBACD,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;gBACpB,SAAS;YACX,CAAC;YACD,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;gBAAE,SAAS;YAE9B,MAAM,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;YACvD,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBACnB,KAAK,CAAC,YAAY,EAAE,CAAC;gBACrB,IAAI,aAAa,CAAC,MAAM,GAAG,EAAE;oBAAE,aAAa,CAAC,IAAI,CAAC,GAAG,OAAO,KAAK,WAAW,CAAC,MAAM,CAAC,MAAgB,CAAC,GAAG,CAAC,CAAC;YAC5G,CAAC;iBAAM,CAAC;gBACN,KAAK,CAAC,aAAa,EAAE,CAAC;gBACtB,IAAI,CAAC;oBACH,KAAK,CAAC,SAAS,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC;gBACzC,CAAC;gBAAC,MAAM,CAAC;oBACP,uBAAuB;gBACzB,CAAC;gBACD,IAAI,cAAc,CAAC,MAAM,GAAG,EAAE;oBAAE,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC/D,CAAC;QACH,CAAC;IACH,CAAC,CAAC;IACF,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IAEd,MAAM,YAAY,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC/C,KAAK,MAAM,CAAC,IAAI,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC;QACnC,MAAM,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC3B,IAAI,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC;YACjC,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;YAC/B,YAAY,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAChE,CAAC;IACH,CAAC;IACD,MAAM,cAAc,GAAG,CAAC,GAAG,YAAY,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,GAAG,MAAM,KAAK,KAAK,YAAY,CAAC,CAAC;IAE7G,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,cAAc,EAAE,CAAC;AAClE,CAAC;AAED,4EAA4E;AAC5E,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,MAAe,EACf,GAAW,EACX,GAAW,EACX,GAAW,EACX,OAAe,EACf,OAAsB,EACtB,UAAyB;IAEzB,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,UAAU,CAClB,GAAG,UAAU,iBAAiB,GAAG,wCAAwC,UAAU,oCAAoC,CACxH,CAAC;IACJ,CAAC;IACD,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC;IACrD,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,cAAc,CAAC,GAAG,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;IAElE,MAAM,UAAU,GAAG,yBAAyB,CAAC,GAAG,CAAC,CAAC;IAClD,MAAM,OAAO,GAAG,MAAM,CAAC,sBAAsB,EAAE;QAC7C,GAAG;QACH,QAAQ,EAAE,KAAK;QACf,GAAG,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG;QAChC,OAAO;QACP,aAAa,EAAE,UAAU;KAC1B,CAAC,CAAC;IACH,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAClD,MAAM,OAAO,GAAG,MAAM,uBAAuB,CAAC,MAAM,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;IAC5E,OAAO,QAAQ,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;AACvE,CAAC;AAYD,+EAA+E;AAC/E,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,MAAe,EACf,QAAgB,EAChB,MAAwB,EACxB,UAAyB;IAEzB,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,UAAU,CAAC,GAAG,UAAU,iBAAiB,QAAQ,0CAA0C,UAAU,OAAO,CAAC,CAAC;IAC1H,CAAC;IACD,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IAC1D,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,cAAc,CAAC,QAAQ,EAAE,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;IAE9E,MAAM,MAAM,GAAG,YAAY,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;IAC5C,MAAM,UAAU,GAAG,MAAM,CAAC,mBAAmB,EAAE;QAC7C,SAAS,EAAE,MAAM,CAAC,MAAM;QACxB,GAAG,EAAE,MAAM,CAAC,MAAM;QAClB,MAAM;QACN,MAAM,EAAE,MAAM,CAAC,MAAM;KACtB,CAAC,CAAC;IACH,MAAM,OAAO,GAAG,MAAM,CAAC,sBAAsB,EAAE;QAC7C,GAAG,EAAE,MAAM,CAAC,GAAG;QACf,QAAQ,EAAE,KAAK;QACf,GAAG,EAAE,MAAM,CAAC,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG;QAC9C,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,aAAa,EAAE,UAAU;KAC1B,CAAC,CAAC;IACH,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAClD,MAAM,OAAO,GAAG,MAAM,uBAAuB,CAAC,MAAM,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;IAC5E,OAAO,QAAQ,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;AAC9E,CAAC;AAcD;;;;;;;;GAQG;AACH,MAAM,UAAU,gBAAgB,CAAC,WAAmB;IAClD,IAAI,GAAW,CAAC;IAChB,IAAI,CAAC;QACH,GAAG,GAAG,YAAY,CAAC,WAAW,CAAC,CAAC;IAClC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,UAAU,CAAC,0BAA0B,WAAW,KAAM,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;IAC3F,CAAC;IACD,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC;IAElC,IAAI,SAAS,GAAG,CAAC,CAAC;IAClB,IAAI,SAAS,GAAG,CAAC,CAAC;IAClB,IAAI,QAAoC,CAAC;IACzC,IAAI,CAAC;QACH,QAAQ,GAAG,SAAS,CAAC,KAAK,EAAE;YAC1B,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;gBACf,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;oBAC7B,SAAS,EAAE,CAAC;oBACZ,SAAS,IAAI,IAAI,CAAC,YAAY,CAAC;gBACjC,CAAC;gBACD,OAAO,IAAI,CAAC,IAAI,KAAK,UAAU,CAAC;YAClC,CAAC;SACF,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,UAAU,CAAC,GAAG,WAAW,gCAAiC,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;IAC/F,CAAC;IAED,MAAM,OAAO,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAC;IACrC,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,MAAM,IAAI,UAAU,CAClB,GAAG,UAAU,6BAA6B,WAAW,MAAM;YACzD,gCAAgC,UAAU,oEAAoE,CACjH,CAAC;IACJ,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,yBAAyB,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC;AAC9F,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,MAAe,EACf,WAAmB,EACnB,GAAW,EACX,GAAW,EACX,OAAe;IAEf,MAAM,OAAO,GAAG,gBAAgB,CAAC,WAAW,CAAC,CAAC;IAC9C,MAAM,OAAO,GAAG,MAAM,CAAC,sBAAsB,EAAE;QAC7C,GAAG;QACH,QAAQ,EAAE,OAAO,CAAC,KAAK;QACvB,GAAG,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG;QAChC,OAAO;KACR,CAAC,CAAC;IACH,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAClD,MAAM,OAAO,GAAG,MAAM,uBAAuB,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACzF,OAAO,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AACnG,CAAC;AAED;;;;;;;GAOG;AACH,KAAK,UAAU,uBAAuB,CACpC,MAAe,EACf,MAAa,EACb,UAA6C;IAE7C,IAAI,UAAU,KAAK,SAAS;QAAE,OAAO,MAAM,CAAC;IAC5C,MAAM,UAAU,GAAG,MAAM,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,CAAC;IAC7C,IAAI,UAAU,KAAK,EAAE;QAAE,OAAO,MAAM,CAAC;IACrC,IAAI,MAAM,CAAC,QAAQ,EAAE,UAAU,KAAK,UAAU;QAAE,OAAO,MAAM,CAAC;IAC9D,OAAO,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,MAAM,CAAC,2BAA2B,EAAE,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC;AACxG,CAAC;AAED,SAAS,yBAAyB,CAAC,GAAW;IAC5C,MAAM,IAAI,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;IACjC,IAAI,IAAI,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IACzC,MAAM,SAAS,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;IACvC,IAAI,SAAS,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC,CAAC,wCAAwC;IAEvF,MAAM,UAAU,GAAG,MAAM,CAAC,mBAAmB,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;IAC9D,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;IACjC,IAAI,MAAM,KAAK,SAAS;QAAE,UAAU,CAAC,MAAM,GAAG,MAAM,CAAC;IACrD,MAAM,MAAM,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC;IACrC,IAAI,MAAM,KAAK,SAAS;QAAE,UAAU,CAAC,GAAG,GAAG,MAAM,CAAC;IAElD,wEAAwE;IACxE,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;IACzC,IAAI,GAAG,KAAK,EAAE,IAAI,GAAG,KAAK,GAAG;QAAE,UAAU,CAAC,MAAM,GAAG,GAAG,CAAC;IACvD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,SAAS,QAAQ,CACf,QAAe,EACf,SAAiB,EACjB,OAAe,EACf,IAAY,EACZ,UAA6C;IAE7C,MAAM,OAAO,GAAG,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3C,MAAM,KAAK,GAAG,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,iBAAiB,KAAK,EAAE,CAAC;IAC/E,MAAM,OAAO,GACX,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,iBAAiB,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,KAAK,OAAO,CAAC,iBAAiB,CAAC;IACpH,OAAO;QACL,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE;QAC/B,SAAS;QACT,IAAI,EAAE,QAAQ,CAAC,QAAQ,EAAE,IAAI,IAAI,EAAE;QACnC,WAAW,EAAE,QAAQ,CAAC,MAAM,EAAE,WAAW,IAAI,EAAE;QAC/C,GAAG,EAAE,QAAQ,CAAC,IAAI,EAAE,GAAG,IAAI,EAAE;QAC7B,OAAO;QACP,YAAY,EAAE,IAAI;QAClB,aAAa,EAAE,KAAK;QACpB,cAAc,EAAE,OAAO;QACvB,UAAU;KACX,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAU,CAAC;AAEhE,wEAAwE;AACxE,MAAM,UAAU,WAAW,CAAC,KAAa;IACvC,IAAI,KAAK,GAAG,IAAI;QAAE,OAAO,GAAG,KAAK,IAAI,CAAC;IACtC,IAAI,GAAG,GAAG,IAAI,CAAC;IACf,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC;QAC3E,GAAG,IAAI,IAAI,CAAC;QACZ,GAAG,EAAE,CAAC;IACR,CAAC;IACD,OAAO,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC;AAC9D,CAAC;AAED,4CAA4C;AAC5C,MAAM,UAAU,SAAS,CAAC,IAAY;IACpC,IAAI,IAAI,KAAK,EAAE;QAAE,OAAO,eAAe,CAAC;IACxC,OAAO,UAAU,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AACjE,CAAC"}
@@ -19,6 +19,7 @@ interface PushFlags {
19
19
  gitUrl?: string;
20
20
  gitRef?: string;
21
21
  subdir?: string;
22
+ archive?: string;
22
23
  ignore?: string[];
23
24
  include?: string[];
24
25
  gitignore?: boolean; // false when --no-gitignore is passed (commander negation)
@@ -37,6 +38,7 @@ export function registerPush(program: Command): void {
37
38
  .option("--git-url <url>", "push from a remote git repository URL")
38
39
  .option("--git-ref <ref>", "git reference (tag, branch, or commit SHA) for remote push")
39
40
  .option("--subdir <dir>", "subdirectory within the git repository containing the artifact")
41
+ .option("--archive <file>", "push a pre-packaged ZIP archive as-is (version hash = the file's SHA-256)")
40
42
  .option("--ignore <pattern>", "additional pattern to ignore (repeatable)", collect, [])
41
43
  .option("--include <pattern>", "pattern to force-include (repeatable)", collect, [])
42
44
  .option("--no-gitignore", "don't respect .gitignore patterns")
@@ -72,6 +74,11 @@ async function runPush(type: string, path: string | undefined, options: PushFlag
72
74
  const tag = options.tag ?? "latest";
73
75
  const message = options.message ?? "";
74
76
 
77
+ if (options.archive !== undefined && options.archive !== "") {
78
+ await pushArchive(client.stigmer, skill, { org, tag, message, path, options });
79
+ return;
80
+ }
81
+
75
82
  if (options.gitUrl !== undefined && options.gitUrl !== "") {
76
83
  await pushRemote(client.stigmer, skill, { org, tag, message, ignoreOptions, decisionSink, options });
77
84
  return;
@@ -95,6 +102,73 @@ async function runPush(type: string, path: string | undefined, options: PushFlag
95
102
  process.stdout.write(renderResult(result, skill));
96
103
  }
97
104
 
105
+ interface ArchiveContext {
106
+ org: string;
107
+ tag: string;
108
+ message: string;
109
+ path: string | undefined;
110
+ options: PushFlags;
111
+ }
112
+
113
+ /**
114
+ * Push a pre-packaged skill archive (`--archive`). The bytes are uploaded
115
+ * as-is, so source-mode and filtering flags have nothing to act on — passing
116
+ * one alongside --archive is a contradiction we fail loudly rather than
117
+ * silently ignore.
118
+ */
119
+ async function pushArchive(
120
+ client: import("@stigmer/sdk").Stigmer,
121
+ skill: typeof import("../resources/skill.js"),
122
+ ctx: ArchiveContext,
123
+ ): Promise<void> {
124
+ const conflicts: string[] = [];
125
+ if (ctx.path !== undefined && ctx.path !== "") conflicts.push("[path]");
126
+ if (ctx.options.gitUrl !== undefined && ctx.options.gitUrl !== "") conflicts.push("--git-url");
127
+ if (ctx.options.gitRef !== undefined && ctx.options.gitRef !== "") conflicts.push("--git-ref");
128
+ if (ctx.options.subdir !== undefined && ctx.options.subdir !== "") conflicts.push("--subdir");
129
+ if ((ctx.options.ignore ?? []).length > 0) conflicts.push("--ignore");
130
+ if ((ctx.options.include ?? []).length > 0) conflicts.push("--include");
131
+ if (ctx.options.gitignore === false) conflicts.push("--no-gitignore");
132
+ if (conflicts.length > 0) {
133
+ throw new UsageError(
134
+ `--archive pushes a pre-packaged ZIP as-is and cannot be combined with: ${conflicts.join(", ")}\n\n` +
135
+ "Packaging already happened when the archive was built.",
136
+ );
137
+ }
138
+
139
+ const archivePath = ctx.options.archive ?? "";
140
+ if (ctx.options.dryRun === true) {
141
+ process.stdout.write(renderArchiveDryRun(archivePath, skill.readSkillArchive(archivePath), skill));
142
+ return;
143
+ }
144
+
145
+ const result = await skill.pushSkillFromArchive(client, archivePath, ctx.org, ctx.tag, ctx.message);
146
+ process.stdout.write(renderResult(result, skill));
147
+ }
148
+
149
+ function renderArchiveDryRun(
150
+ archivePath: string,
151
+ archive: import("../resources/skill.js").SkillArchive,
152
+ skill: typeof import("../resources/skill.js"),
153
+ ): string {
154
+ const lines = [
155
+ "",
156
+ `Dry run - validating skill archive: ${archivePath}`,
157
+ "",
158
+ `Skill name: ${archive.meta.name}`,
159
+ `Files: ${archive.fileCount}`,
160
+ `Content size: ${skill.formatBytes(archive.totalSize)}`,
161
+ `Upload size: ${skill.formatBytes(archive.bytes.length)}`,
162
+ "",
163
+ "The archive bytes are uploaded as-is: the registered version hash is the",
164
+ "SHA-256 of this file, so it matches any checksum you published for it.",
165
+ "",
166
+ "Run without --dry-run to push the skill artifact.",
167
+ "",
168
+ ];
169
+ return `${lines.join("\n")}\n`;
170
+ }
171
+
98
172
  interface RemoteContext {
99
173
  org: string;
100
174
  tag: string;
@@ -1,11 +1,17 @@
1
1
  // `stigmer setup` — configure the LLM provider used for agent execution.
2
2
  //
3
3
  // Two paths share one decision core (local/setup/wizard.ts): a non-interactive
4
- // flag path (`--provider`, `--api-key`, `--model`) for scripts and CI, and an
4
+ // flag path (`--provider`, `--api-key`) for scripts and CI, and an
5
5
  // interactive API-key prompt when no provider flag is given. Both write to
6
6
  // backend.local.llm, preserving every other config field. The valid provider
7
7
  // set is owned by wizard.ts's PROVIDER_CHOICES (Anthropic-only + skip — the
8
8
  // only story the native runner serves).
9
+ //
10
+ // Setup deliberately has NO model concept: the platform model registry owns
11
+ // the execution default, and per-run overrides belong to `stigmer run
12
+ // --model`. A setup-level pin used to exist but never reached execution
13
+ // (oss#314) — config that looks authoritative but is dead invites exactly the
14
+ // bug class Session 29 fixed, so it is structurally gone rather than wired up.
9
15
 
10
16
  import type { Command } from "commander";
11
17
  import { homedir } from "node:os";
@@ -14,7 +20,6 @@ import { addResultFlags, resultFormat } from "./shared.js";
14
20
 
15
21
  interface SetupFlags extends OutputFlags {
16
22
  provider?: string;
17
- model?: string;
18
23
  apiKey?: string;
19
24
  }
20
25
 
@@ -23,7 +28,6 @@ export function registerSetup(program: Command): void {
23
28
  .command("setup")
24
29
  .description("configure the LLM provider for agent execution")
25
30
  .option("--provider <name>", "provider: anthropic, or skip to clear (non-interactive)")
26
- .option("--model <name>", "pin a specific model (defaults to the platform-selected model)")
27
31
  .option("--api-key <key>", "Anthropic API key")
28
32
  .action((options: SetupFlags) => runSetup(options));
29
33
  addResultFlags(setup);
@@ -47,7 +51,6 @@ async function runSetup(options: SetupFlags): Promise<void> {
47
51
  ]);
48
52
  }
49
53
  updated = applyChoice(config, provider as (typeof PROVIDER_CHOICES)[number], {
50
- model: options.model,
51
54
  apiKey: options.apiKey,
52
55
  });
53
56
  } else {
@@ -95,7 +95,7 @@ export async function up(options: UpOptions = {}, home: string = homedir()): Pro
95
95
 
96
96
  await applySeedpackBestEffort(home);
97
97
 
98
- saveStartupConfig(data, buildStartupConfig(data, logs, temporal.address, config, daemonPid, options));
98
+ saveStartupConfig(data, buildStartupConfig(data, logs, temporal.address, daemonPid, options));
99
99
  }
100
100
 
101
101
  /**
@@ -246,18 +246,13 @@ function buildStartupConfig(
246
246
  data: string,
247
247
  logs: string,
248
248
  temporalAddr: string,
249
- config: Config,
250
249
  daemonPid: number,
251
250
  options: UpOptions,
252
251
  ): StartupConfig {
253
- const local = config.backend.local as { llm?: { provider?: string; model?: string; base_url?: string } } | undefined;
254
252
  return {
255
253
  data_dir: data,
256
254
  log_dir: logs,
257
255
  temporal_addr: temporalAddr,
258
- llm_provider: local?.llm?.provider ?? "",
259
- llm_model: local?.llm?.model ?? "",
260
- llm_base_url: local?.llm?.base_url ?? "",
261
256
  execution_mode: "local",
262
257
  sandbox_image: "",
263
258
  sandbox_auto_pull: false,
@@ -4,7 +4,6 @@ import {
4
4
  detectProviderFromEnv,
5
5
  readLlm,
6
6
  resolveApiKey,
7
- resolveModel,
8
7
  resolveProvider,
9
8
  setLlm,
10
9
  } from "./llm-config.js";
@@ -32,17 +31,6 @@ describe("resolveProvider", () => {
32
31
  });
33
32
  });
34
33
 
35
- describe("resolveModel", () => {
36
- it("returns the explicit override, else empty — the registry owns the default", () => {
37
- // No hardcoded model version anywhere in the CLI: unset means "platform
38
- // default", resolved by the runner from the model registry.
39
- expect(resolveModel(config({ llm: { provider: "anthropic" } }), {})).toBe("");
40
- expect(resolveModel(config(), {})).toBe("");
41
- expect(resolveModel(config({ llm: { provider: "anthropic", model: "claude-x" } }), {})).toBe("claude-x");
42
- expect(resolveModel(config({ llm: { provider: "anthropic" } }), { STIGMER_LLM_MODEL: "envm" })).toBe("envm");
43
- });
44
- });
45
-
46
34
  describe("resolveApiKey", () => {
47
35
  it("uses ANTHROPIC_API_KEY, then config", () => {
48
36
  const cfg = config({ llm: { provider: "anthropic", api_key: "cfgkey" } });
@@ -58,12 +46,21 @@ describe("resolveApiKey", () => {
58
46
  describe("setLlm", () => {
59
47
  it("preserves sibling local keys and can clear the section", () => {
60
48
  const cfg = config({ temporal: { managed: true }, llm: { provider: "anthropic" } });
61
- const updated = setLlm(cfg, { provider: "anthropic", model: "m" });
62
- expect(readLlm(updated)).toEqual({ provider: "anthropic", model: "m" });
49
+ const updated = setLlm(cfg, { provider: "anthropic", api_key: "k" });
50
+ expect(readLlm(updated)).toEqual({ provider: "anthropic", api_key: "k" });
63
51
  expect((updated.backend.local as { temporal: unknown }).temporal).toEqual({ managed: true });
64
52
 
65
53
  const cleared = setLlm(cfg, undefined);
66
54
  expect(readLlm(cleared)).toBeUndefined();
67
55
  expect((cleared.backend.local as { temporal: unknown }).temporal).toEqual({ managed: true });
68
56
  });
57
+
58
+ it("replaces the section wholesale — a stale model key from a pre-oss#314 config does not survive a rewrite", () => {
59
+ // The graceful-migration contract: old configs may carry llm.model (the
60
+ // removed dead pin). Reads ignore it (LlmSettings no longer models it);
61
+ // the next setup write clears it because setLlm never merges.
62
+ const cfg = config({ llm: { provider: "anthropic", model: "stale-pin", api_key: "k" } });
63
+ const rewritten = setLlm(cfg, { provider: "anthropic", api_key: "k" });
64
+ expect(readLlm(rewritten)).toEqual({ provider: "anthropic", api_key: "k" });
65
+ });
69
66
  });
@@ -4,7 +4,7 @@
4
4
  // The config module (config/config.ts) carries `backend.local` through verbatim
5
5
  // so the CLI never drops fields it does not model. This module adds a *typed
6
6
  // lens* for the one sub-tree setup owns — `local.llm` — and resolves the
7
- // effective provider/model with env-override precedence (env > config file >
7
+ // effective provider/key with env-override precedence (env > config file >
8
8
  // API-key autodetect). Writes merge into a shallow copy of `local`, preserving
9
9
  // every sibling key (temporal, execution, …).
10
10
  //
@@ -12,10 +12,13 @@
12
12
  // Anthropic clients, and the platform model registry's native-harness entries
13
13
  // are all Anthropic models. Two invariants follow:
14
14
  //
15
- // 1. The model registry — not this config — owns the default execution model.
16
- // The runner resolves it from the registry at execution time, so this
17
- // module never hardcodes a model version (hardcoded versions here drifted
18
- // from the registry repeatedly). An unset model means "platform default".
15
+ // 1. The model registry — not this config — owns the execution model, so
16
+ // there is deliberately NO model field here. A config-level model pin
17
+ // existed once but never reached execution (oss#314): the launcher
18
+ // forwards only the API key, making such a pin config-that-lies. Per-run
19
+ // overrides belong to `stigmer run --model`. Stale `model` keys in
20
+ // existing config files are silently ignored (verbatim carry-through)
21
+ // and cleared by the next `setup` write.
19
22
  // 2. `provider` exists to route the right API key to the runner, not to
20
23
  // select an execution backend; "anthropic" is the only provider the local
21
24
  // stack can serve.
@@ -25,7 +28,6 @@ import type { Config } from "../config/config.js";
25
28
  /** LLM settings as persisted under `backend.local.llm` (snake_case = YAML keys). */
26
29
  export interface LlmSettings {
27
30
  provider?: string;
28
- model?: string;
29
31
  api_key?: string;
30
32
  }
31
33
 
@@ -61,15 +63,6 @@ export function resolveProvider(config: Config, env: NodeJS.ProcessEnv = process
61
63
  return detectProviderFromEnv(env);
62
64
  }
63
65
 
64
- /**
65
- * Effective model override: env override > config. Empty string means "no
66
- * override" — the runner picks the default from the platform model registry.
67
- */
68
- export function resolveModel(config: Config, env: NodeJS.ProcessEnv = process.env): string {
69
- if (env.STIGMER_LLM_MODEL) return env.STIGMER_LLM_MODEL;
70
- return readLlm(config)?.model ?? "";
71
- }
72
-
73
66
  /** Effective API key: ANTHROPIC_API_KEY env var > config. */
74
67
  export function resolveApiKey(config: Config, env: NodeJS.ProcessEnv = process.env): string {
75
68
  if (resolveProvider(config, env) !== "anthropic") return "";
@@ -21,11 +21,10 @@ describe("PROVIDER_CHOICES", () => {
21
21
  });
22
22
 
23
23
  describe("buildLlmForChoice", () => {
24
- it("persists no model unless explicitly overridden — the registry owns the default", () => {
24
+ it("persists provider and key only — there is no model concept, the registry owns it (oss#314)", () => {
25
25
  expect(buildLlmForChoice("anthropic")).toEqual({ provider: "anthropic" });
26
- expect(buildLlmForChoice("anthropic", { apiKey: "k", model: "m" })).toEqual({
26
+ expect(buildLlmForChoice("anthropic", { apiKey: "k" })).toEqual({
27
27
  provider: "anthropic",
28
- model: "m",
29
28
  api_key: "k",
30
29
  });
31
30
  });
@@ -7,9 +7,9 @@
7
7
  // Local agent execution is Anthropic-only (the native runner only constructs
8
8
  // Anthropic clients and the registry's native entries are Anthropic models),
9
9
  // so the interactive flow is a single API-key prompt rather than a provider
10
- // menu. The model is deliberately NOT asked for: the platform model registry
11
- // owns the execution default, and an explicit override is a power-user flag
12
- // (`stigmer setup --model …`), not a setup question.
10
+ // menu. There is no model concept here at all: the platform model registry
11
+ // owns the execution default, and per-run overrides belong to `stigmer run
12
+ // --model` (oss#314 removed the dead setup-level pin).
13
13
 
14
14
  import type { Config } from "../../config/config.js";
15
15
  import { type LlmSettings, setLlm } from "../llm-config.js";
@@ -27,19 +27,17 @@ export type ProviderChoice = (typeof PROVIDER_CHOICES)[number];
27
27
 
28
28
  export interface SelectionInputs {
29
29
  apiKey?: string;
30
- model?: string;
31
30
  }
32
31
 
33
32
  /**
34
- * Resolve a provider choice (plus optional overrides) to the LLM settings to
35
- * persist. "skip" yields `undefined`, which clears the section. An omitted
36
- * model is stored as absent — meaning "platform default", resolved from the
37
- * model registry at execution time.
33
+ * Resolve a provider choice (plus an optional API key) to the LLM settings to
34
+ * persist. "skip" yields `undefined`, which clears the section — including any
35
+ * stale `model` key from a pre-oss#314 config, since setLlm replaces the
36
+ * section wholesale.
38
37
  */
39
38
  export function buildLlmForChoice(choice: ProviderChoice, inputs: SelectionInputs = {}): LlmSettings | undefined {
40
39
  if (choice === "skip") return undefined;
41
40
  const settings: LlmSettings = { provider: choice };
42
- if (inputs.model) settings.model = inputs.model;
43
41
  if (inputs.apiKey) settings.api_key = inputs.apiKey;
44
42
  return settings;
45
43
  }
@@ -1,19 +1,23 @@
1
- // Configuration captured at `up` time so the daemon can restart components with
2
- // the same settings the user launched with. Persisted as `startup-config.json`
3
- // in the data dir; JSON keys are snake_case to match the Go CLI's file.
1
+ // A diagnostic snapshot of the settings `up` launched with, persisted as
2
+ // `startup-config.json` in the data dir and removed by `down`. Nothing in the
3
+ // CLI or daemon reads it back — it exists for humans and support tooling
4
+ // inspecting a running stack, so keep it truthful: a field that no component
5
+ // consumes does not belong here (oss#314 removed the write-only llm_* trio).
6
+ // JSON keys stay snake_case for continuity with previously-written files.
4
7
 
5
8
  import { readFileSync, rmSync, writeFileSync } from "node:fs";
6
9
  import { join } from "node:path";
7
10
  import { STARTUP_CONFIG_FILE } from "../constants.js";
8
11
 
9
- /** The persisted launch configuration. Mirrors the Go `StartupConfig` struct. */
12
+ /**
13
+ * The persisted launch snapshot. `loadStartupConfig` parses leniently (a cast,
14
+ * not a validator), so files written by older CLIs with extra fields — e.g.
15
+ * the removed llm_* trio — load without migration.
16
+ */
10
17
  export interface StartupConfig {
11
18
  data_dir: string;
12
19
  log_dir: string;
13
20
  temporal_addr: string;
14
- llm_provider: string;
15
- llm_model: string;
16
- llm_base_url: string;
17
21
  execution_mode: string;
18
22
  sandbox_image: string;
19
23
  sandbox_auto_pull: boolean;
@@ -82,9 +82,6 @@ describe("startup-config", () => {
82
82
  data_dir: dir,
83
83
  log_dir: join(dir, "logs"),
84
84
  temporal_addr: "127.0.0.1:7233",
85
- llm_provider: "anthropic",
86
- llm_model: "claude",
87
- llm_base_url: "",
88
85
  execution_mode: "local",
89
86
  sandbox_image: "",
90
87
  sandbox_auto_pull: false,
@@ -98,6 +95,29 @@ describe("startup-config", () => {
98
95
  removeStartupConfig(dir);
99
96
  expect(loadStartupConfig(dir)).toBeNull();
100
97
  });
98
+
99
+ it("loads files written by older CLIs carrying since-removed fields (e.g. the llm_* trio)", () => {
100
+ // The lenient-load contract oss#314 leans on: no migration for on-disk
101
+ // files — extra keys simply come along and nothing consumes them.
102
+ const dir = tempDir("stigmer-startup-");
103
+ const legacy = {
104
+ data_dir: dir,
105
+ log_dir: join(dir, "logs"),
106
+ temporal_addr: "127.0.0.1:7233",
107
+ llm_provider: "anthropic",
108
+ llm_model: "claude",
109
+ llm_base_url: "",
110
+ execution_mode: "local",
111
+ sandbox_image: "",
112
+ sandbox_auto_pull: false,
113
+ sandbox_cleanup: true,
114
+ sandbox_ttl: 0,
115
+ stigmer_server_pid: 999,
116
+ server_only: false,
117
+ };
118
+ writeFileSync(join(dir, "startup-config.json"), JSON.stringify(legacy));
119
+ expect(loadStartupConfig(dir)).toMatchObject({ temporal_addr: "127.0.0.1:7233", stigmer_server_pid: 999 });
120
+ });
101
121
  });
102
122
 
103
123
  describe("log-rotation", () => {
@@ -62,12 +62,12 @@ describe("buildStatusResult", () => {
62
62
  expect(field(result, "Web UI", "Temporal")).toBe("http://localhost:8233");
63
63
  });
64
64
 
65
- it("shows an explicit model override verbatim", async () => {
65
+ it("ignores a stale model key from a pre-oss#314 config — the pin never reached execution, so status must not display it", async () => {
66
66
  writeHealth({ daemon_pid: process.pid, started_at: new Date().toISOString(), components: {} });
67
67
  writeFileSync(configPath(home), "backend:\n type: local\n local:\n llm:\n provider: anthropic\n model: claude-x\n api_key: sk-x\n");
68
68
 
69
69
  const result = await buildStatusResult(home, open);
70
- expect(field(result, "LLM Configuration", "Model")).toBe("claude-x");
70
+ expect(field(result, "LLM Configuration", "Model")).toBe("Auto (platform default)");
71
71
  });
72
72
 
73
73
  it("reports a non-anthropic provider as unknown — local execution is Anthropic-only", async () => {
@@ -13,7 +13,7 @@ import { load as loadConfig } from "../config/config.js";
13
13
  import { configPath } from "../config/paths.js";
14
14
  import { CommandResult } from "../output/command-result.js";
15
15
  import { SERVER_PORT, TEMPORAL_UI_PORT, WEB_CONSOLE_PORT } from "./constants.js";
16
- import { resolveApiKey, resolveModel, resolveProvider } from "./llm-config.js";
16
+ import { resolveApiKey, resolveProvider } from "./llm-config.js";
17
17
  import { tcpConnects } from "./net/tcp.js";
18
18
  import { dataDir } from "./paths.js";
19
19
  import { type ComponentState, type HealthState, loadHealthState } from "./state/health-state.js";
@@ -130,12 +130,11 @@ function addLlmSection(result: CommandResult, home: string): void {
130
130
  return;
131
131
  }
132
132
 
133
- // An unset model is not a gap: the platform model registry picks the
134
- // execution default, so the CLI reports that truthfully instead of asserting
135
- // a version it does not control.
136
- const model = resolveModel(config);
133
+ // The model line is a constant: the platform model registry picks the
134
+ // execution default and the CLI has no model concept to report (oss#314
135
+ // removed the dead config pin). Per-run overrides ride `stigmer run --model`.
137
136
  section.field("Provider", "Anthropic (Cloud)");
138
- section.field("Model", model !== "" ? model : "Auto (platform default)");
137
+ section.field("Model", "Auto (platform default)");
139
138
  section.field("API Key", resolveApiKey(config) !== "" ? "Configured ✓" : "Not configured ✗");
140
139
  }
141
140