@stigmer/cli 3.12.1 → 3.12.3
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/commands/push.d.ts.map +1 -1
- package/commands/push.js +57 -0
- package/commands/push.js.map +1 -1
- package/commands/setup.d.ts.map +1 -1
- package/commands/setup.js +7 -3
- package/commands/setup.js.map +1 -1
- package/local/daemon/launch.js +2 -6
- package/local/daemon/launch.js.map +1 -1
- package/local/llm-config.d.ts +0 -6
- package/local/llm-config.d.ts.map +1 -1
- package/local/llm-config.js +8 -14
- package/local/llm-config.js.map +1 -1
- package/local/setup/wizard.d.ts +4 -5
- package/local/setup/wizard.d.ts.map +1 -1
- package/local/setup/wizard.js +7 -9
- package/local/setup/wizard.js.map +1 -1
- package/local/state/startup-config.d.ts +5 -4
- package/local/state/startup-config.d.ts.map +1 -1
- package/local/state/startup-config.js +6 -3
- package/local/state/startup-config.js.map +1 -1
- package/local/status.d.ts.map +1 -1
- package/local/status.js +5 -6
- package/local/status.js.map +1 -1
- package/package.json +5 -5
- package/resources/skill.d.ts +48 -0
- package/resources/skill.d.ts.map +1 -1
- package/resources/skill.js +144 -5
- package/resources/skill.js.map +1 -1
- package/src/commands/push.ts +74 -0
- package/src/commands/setup.ts +7 -4
- package/src/local/daemon/launch.ts +1 -6
- package/src/local/llm-config.test.ts +11 -14
- package/src/local/llm-config.ts +8 -15
- package/src/local/setup/wizard.test.ts +2 -3
- package/src/local/setup/wizard.ts +7 -9
- package/src/local/state/startup-config.ts +11 -7
- package/src/local/state/state.test.ts +23 -3
- package/src/local/status.test.ts +2 -2
- package/src/local/status.ts +5 -6
- package/src/resources/skill.test.ts +197 -5
- package/src/resources/skill.ts +177 -5
package/resources/skill.d.ts
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import type { Skill } from "@stigmer/protos/ai/stigmer/agentic/skill/v1/api_pb";
|
|
2
|
+
import type { PushSkillRequest } from "@stigmer/protos/ai/stigmer/agentic/skill/v1/io_pb";
|
|
1
3
|
import { ApiResourceVisibility } from "@stigmer/protos/ai/stigmer/commons/apiresource/enum_pb";
|
|
2
4
|
import type { Stigmer } from "@stigmer/sdk";
|
|
3
5
|
export declare const SKILL_FILE = "SKILL.md";
|
|
@@ -50,6 +52,13 @@ interface SkillMetadata {
|
|
|
50
52
|
}
|
|
51
53
|
/** Parse SKILL.md YAML frontmatter and validate the skill name (kebab-case, optionally dot-scoped). */
|
|
52
54
|
export declare function parseSkillMetadata(dir: string): SkillMetadata;
|
|
55
|
+
/**
|
|
56
|
+
* Parse SKILL.md content directly — the shared core behind the directory
|
|
57
|
+
* path (`parseSkillMetadata`) and the pre-packaged archive path
|
|
58
|
+
* (`pushSkillFromArchive`), where the content comes out of a zip entry
|
|
59
|
+
* rather than the filesystem.
|
|
60
|
+
*/
|
|
61
|
+
export declare function parseSkillMetadataContent(content: string): SkillMetadata;
|
|
53
62
|
/**
|
|
54
63
|
* Map an optional `visibility` frontmatter value to the proto enum. Returns
|
|
55
64
|
* undefined when omitted or explicitly unspecified; throws on an unknown value
|
|
@@ -63,6 +72,14 @@ export declare function createSkillZip(dir: string, options: IgnoreOptions, onDe
|
|
|
63
72
|
};
|
|
64
73
|
/** Dry-run: report what would be included/ignored without zipping. */
|
|
65
74
|
export declare function analyzeDryRun(dir: string, options: IgnoreOptions): DryRunAnalysis;
|
|
75
|
+
/**
|
|
76
|
+
* Push, routing the artifact by size (#675): small artifacts travel inline
|
|
77
|
+
* in the request (one round trip, unchanged behavior); larger ones are
|
|
78
|
+
* staged over HTTP via createArtifactUploadUrl — a capability URL, so no
|
|
79
|
+
* auth header — and pushed by reference. The 100MB skill limit therefore
|
|
80
|
+
* no longer collides with the 10MB gRPC message cap.
|
|
81
|
+
*/
|
|
82
|
+
export declare function pushRouted(client: Stigmer, request: PushSkillRequest): Promise<Skill>;
|
|
66
83
|
/** Push a skill from a local directory. Git provenance is auto-detected. */
|
|
67
84
|
export declare function pushSkill(client: Stigmer, dir: string, org: string, tag: string, message: string, options: IgnoreOptions, onDecision?: DecisionSink): Promise<PushResult>;
|
|
68
85
|
export interface RemotePushParams {
|
|
@@ -76,6 +93,37 @@ export interface RemotePushParams {
|
|
|
76
93
|
}
|
|
77
94
|
/** Push a skill from a directory cloned from a remote git repo (--git-url). */
|
|
78
95
|
export declare function pushSkillFromClone(client: Stigmer, skillDir: string, params: RemotePushParams, onDecision?: DecisionSink): Promise<PushResult>;
|
|
96
|
+
/** A validated pre-packaged skill archive (`--archive`), ready to upload. */
|
|
97
|
+
export interface SkillArchive {
|
|
98
|
+
/** The archive file's exact bytes — uploaded untouched. */
|
|
99
|
+
readonly bytes: Uint8Array;
|
|
100
|
+
/** Metadata parsed from the archive's root SKILL.md. */
|
|
101
|
+
readonly meta: SkillMetadata;
|
|
102
|
+
/** Number of file entries (directory markers excluded). */
|
|
103
|
+
readonly fileCount: number;
|
|
104
|
+
/** Total uncompressed size of all file entries, in bytes. */
|
|
105
|
+
readonly totalSize: number;
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Read and validate a pre-packaged skill archive.
|
|
109
|
+
*
|
|
110
|
+
* Client-side validation is deliberately minimal — root SKILL.md present and
|
|
111
|
+
* frontmatter parses (the same contract the console's upload preview checks);
|
|
112
|
+
* the server remains the authoritative validator. The unzip filter inflates
|
|
113
|
+
* ONLY SKILL.md: entry metadata is enough for the count/size summary, and
|
|
114
|
+
* validation must not pay for decompressing a large artifact.
|
|
115
|
+
*/
|
|
116
|
+
export declare function readSkillArchive(archivePath: string): SkillArchive;
|
|
117
|
+
/**
|
|
118
|
+
* Push a pre-packaged skill archive as-is (`--archive`).
|
|
119
|
+
*
|
|
120
|
+
* The bytes are uploaded untouched, so the engine's version hash is the
|
|
121
|
+
* SHA-256 of the file on disk — release pipelines that publish checksums get
|
|
122
|
+
* engine version identities that match them (stigmer/stigmer#671). Git
|
|
123
|
+
* provenance is deliberately omitted: the archive was built elsewhere, so the
|
|
124
|
+
* local checkout says nothing about the artifact's origin.
|
|
125
|
+
*/
|
|
126
|
+
export declare function pushSkillFromArchive(client: Stigmer, archivePath: string, org: string, tag: string, message: string): Promise<PushResult>;
|
|
79
127
|
/** Human-readable byte size (1024-based), matching Go's formatBytes. */
|
|
80
128
|
export declare function formatBytes(bytes: number): string;
|
|
81
129
|
/** Friendly truncated sha256 identifier. */
|
package/resources/skill.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skill.d.ts","sourceRoot":"","sources":["../../src/resources/skill.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"skill.d.ts","sourceRoot":"","sources":["../../src/resources/skill.ts"],"names":[],"mappings":"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"}
|
package/resources/skill.js
CHANGED
|
@@ -7,16 +7,27 @@
|
|
|
7
7
|
import { readdirSync, readFileSync, statSync } from "node:fs";
|
|
8
8
|
import { join, relative, resolve } from "node:path";
|
|
9
9
|
import { create } from "@bufbuild/protobuf";
|
|
10
|
-
import {
|
|
10
|
+
import { Code, ConnectError } from "@connectrpc/connect";
|
|
11
|
+
import { CreateSkillArtifactUploadUrlRequestSchema, PushSkillRequestSchema } from "@stigmer/protos/ai/stigmer/agentic/skill/v1/io_pb";
|
|
11
12
|
import { GitProvenanceSchema } from "@stigmer/protos/ai/stigmer/agentic/skill/v1/status_pb";
|
|
12
13
|
import { ApiResourceVisibility } from "@stigmer/protos/ai/stigmer/commons/apiresource/enum_pb";
|
|
13
14
|
import { UpdateVisibilityInputSchema } from "@stigmer/protos/ai/stigmer/commons/apiresource/io_pb";
|
|
14
|
-
import { zipSync } from "fflate";
|
|
15
|
+
import { strFromU8, unzipSync, zipSync } from "fflate";
|
|
15
16
|
import { parse as parseYaml } from "yaml";
|
|
16
17
|
import { UsageError } from "../errors/index.js";
|
|
17
18
|
import { getGitBranchName, getGitCommit, getGitRemoteUrl, getGitRepoRoot } from "./git.js";
|
|
18
19
|
import { createMatcher, REASON_TEXT } from "./ignore/index.js";
|
|
19
20
|
export const SKILL_FILE = "SKILL.md";
|
|
21
|
+
// A skill version's identity is the server-side SHA-256 of the uploaded zip
|
|
22
|
+
// bytes, so packaging must be a pure function of content — otherwise
|
|
23
|
+
// re-pushing unchanged content registers a new version and the server's
|
|
24
|
+
// unchanged-content no-op never fires (stigmer/stigmer#671). fflate stamps
|
|
25
|
+
// zip-creation time into every entry when no mtime is given; pinning the DOS
|
|
26
|
+
// epoch (the earliest representable zip timestamp) removes the only
|
|
27
|
+
// byte-level variance. Local-field Date construction is deliberate: DOS
|
|
28
|
+
// timestamps store wall-clock fields, so this encodes identically in every
|
|
29
|
+
// timezone.
|
|
30
|
+
const DETERMINISTIC_ZIP_MTIME = new Date(1980, 0, 1);
|
|
20
31
|
// Kebab-case, optionally scoped with dot-separated namespaces (e.g.
|
|
21
32
|
// "platform.planton-architecture"). Every segment must be alphanumeric, so no
|
|
22
33
|
// leading/trailing/consecutive separators. The derived slug renders dots as hyphens.
|
|
@@ -46,6 +57,15 @@ export function parseSkillMetadata(dir) {
|
|
|
46
57
|
catch (err) {
|
|
47
58
|
throw new Error(`failed to read ${SKILL_FILE}: ${err.message}`);
|
|
48
59
|
}
|
|
60
|
+
return parseSkillMetadataContent(content);
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Parse SKILL.md content directly — the shared core behind the directory
|
|
64
|
+
* path (`parseSkillMetadata`) and the pre-packaged archive path
|
|
65
|
+
* (`pushSkillFromArchive`), where the content comes out of a zip entry
|
|
66
|
+
* rather than the filesystem.
|
|
67
|
+
*/
|
|
68
|
+
export function parseSkillMetadataContent(content) {
|
|
49
69
|
const frontmatter = extractFrontmatter(content);
|
|
50
70
|
const parsed = (parseYaml(frontmatter) ?? {});
|
|
51
71
|
const name = typeof parsed.name === "string" ? parsed.name : "";
|
|
@@ -161,7 +181,7 @@ export function createSkillZip(dir, options, onDecision) {
|
|
|
161
181
|
}
|
|
162
182
|
};
|
|
163
183
|
walk(dir, "");
|
|
164
|
-
const bytes = zipSync(files, { level: 6 });
|
|
184
|
+
const bytes = zipSync(files, { level: 6, mtime: DETERMINISTIC_ZIP_MTIME });
|
|
165
185
|
return { bytes, stats };
|
|
166
186
|
}
|
|
167
187
|
/** Dry-run: report what would be included/ignored without zipping. */
|
|
@@ -227,6 +247,60 @@ export function analyzeDryRun(dir, options) {
|
|
|
227
247
|
const patternSources = [...sourceCounts.entries()].map(([source, count]) => `${source} (${count} patterns)`);
|
|
228
248
|
return { stats, patternSources, sampleIgnored, sampleIncluded };
|
|
229
249
|
}
|
|
250
|
+
/**
|
|
251
|
+
* Largest artifact pushed inline in the gRPC request (#675). The server's
|
|
252
|
+
* transport cap is 10MB for the WHOLE message, so the artifact leaves 64KB
|
|
253
|
+
* of headroom for the request envelope (org, tag, provenance, framing).
|
|
254
|
+
* Mirrors the Go SDK's maxInlineArtifactBytes.
|
|
255
|
+
*/
|
|
256
|
+
const MAX_INLINE_ARTIFACT_BYTES = 10 * 1024 * 1024 - 64 * 1024;
|
|
257
|
+
/**
|
|
258
|
+
* Push, routing the artifact by size (#675): small artifacts travel inline
|
|
259
|
+
* in the request (one round trip, unchanged behavior); larger ones are
|
|
260
|
+
* staged over HTTP via createArtifactUploadUrl — a capability URL, so no
|
|
261
|
+
* auth header — and pushed by reference. The 100MB skill limit therefore
|
|
262
|
+
* no longer collides with the 10MB gRPC message cap.
|
|
263
|
+
*/
|
|
264
|
+
export async function pushRouted(client, request) {
|
|
265
|
+
if (request.artifact.length <= MAX_INLINE_ARTIFACT_BYTES) {
|
|
266
|
+
return client.skill.push(request);
|
|
267
|
+
}
|
|
268
|
+
let minted;
|
|
269
|
+
try {
|
|
270
|
+
minted = await client.skill.createArtifactUploadUrl(create(CreateSkillArtifactUploadUrlRequestSchema, {
|
|
271
|
+
org: request.org,
|
|
272
|
+
sizeBytes: BigInt(request.artifact.length),
|
|
273
|
+
}));
|
|
274
|
+
}
|
|
275
|
+
catch (err) {
|
|
276
|
+
if (err instanceof ConnectError && err.code === Code.Unimplemented) {
|
|
277
|
+
// Pre-transfer-lane server: an artifact this size physically cannot
|
|
278
|
+
// travel inline. Say so instead of surfacing the raw transport error.
|
|
279
|
+
throw new UsageError(`skill artifact is ${formatBytes(request.artifact.length)}, above the ~10MB gRPC message cap, ` +
|
|
280
|
+
"and this server does not support the HTTP artifact transfer lane.\n\n" +
|
|
281
|
+
"Upgrade stigmer-server to push skills of this size.");
|
|
282
|
+
}
|
|
283
|
+
throw err;
|
|
284
|
+
}
|
|
285
|
+
const resp = await fetch(minted.url, {
|
|
286
|
+
method: "PUT",
|
|
287
|
+
// Buffer keeps undici's BodyInit typing happy where a bare Uint8Array
|
|
288
|
+
// view does not (Node-only code path, so Buffer is always available).
|
|
289
|
+
body: Buffer.from(request.artifact),
|
|
290
|
+
headers: { "content-type": "application/zip" },
|
|
291
|
+
});
|
|
292
|
+
if (!resp.ok) {
|
|
293
|
+
const detail = (await resp.text().catch(() => "")).slice(0, 512).trim();
|
|
294
|
+
throw new Error(`skill artifact upload rejected with HTTP ${resp.status}${detail === "" ? "" : `: ${detail}`}`);
|
|
295
|
+
}
|
|
296
|
+
// Same request, artifact traveling by reference instead of by value.
|
|
297
|
+
const byRef = create(PushSkillRequestSchema, {
|
|
298
|
+
...request,
|
|
299
|
+
artifact: new Uint8Array(0),
|
|
300
|
+
artifactUploadRef: minted.artifactUploadRef,
|
|
301
|
+
});
|
|
302
|
+
return client.skill.push(byRef);
|
|
303
|
+
}
|
|
230
304
|
/** Push a skill from a local directory. Git provenance is auto-detected. */
|
|
231
305
|
export async function pushSkill(client, dir, org, tag, message, options, onDecision) {
|
|
232
306
|
if (!hasSkillFile(dir)) {
|
|
@@ -242,7 +316,7 @@ export async function pushSkill(client, dir, org, tag, message, options, onDecis
|
|
|
242
316
|
message,
|
|
243
317
|
gitProvenance: provenance,
|
|
244
318
|
});
|
|
245
|
-
const response = await client
|
|
319
|
+
const response = await pushRouted(client, request);
|
|
246
320
|
const applied = await applyDeclaredVisibility(client, response, visibility);
|
|
247
321
|
return toResult(applied, name, message, stats.totalSize, visibility);
|
|
248
322
|
}
|
|
@@ -267,10 +341,75 @@ export async function pushSkillFromClone(client, skillDir, params, onDecision) {
|
|
|
267
341
|
message: params.message,
|
|
268
342
|
gitProvenance: provenance,
|
|
269
343
|
});
|
|
270
|
-
const response = await client
|
|
344
|
+
const response = await pushRouted(client, request);
|
|
271
345
|
const applied = await applyDeclaredVisibility(client, response, visibility);
|
|
272
346
|
return toResult(applied, name, params.message, stats.totalSize, visibility);
|
|
273
347
|
}
|
|
348
|
+
/**
|
|
349
|
+
* Read and validate a pre-packaged skill archive.
|
|
350
|
+
*
|
|
351
|
+
* Client-side validation is deliberately minimal — root SKILL.md present and
|
|
352
|
+
* frontmatter parses (the same contract the console's upload preview checks);
|
|
353
|
+
* the server remains the authoritative validator. The unzip filter inflates
|
|
354
|
+
* ONLY SKILL.md: entry metadata is enough for the count/size summary, and
|
|
355
|
+
* validation must not pay for decompressing a large artifact.
|
|
356
|
+
*/
|
|
357
|
+
export function readSkillArchive(archivePath) {
|
|
358
|
+
let raw;
|
|
359
|
+
try {
|
|
360
|
+
raw = readFileSync(archivePath);
|
|
361
|
+
}
|
|
362
|
+
catch (err) {
|
|
363
|
+
throw new UsageError(`failed to read archive ${archivePath}: ${err.message}`);
|
|
364
|
+
}
|
|
365
|
+
const bytes = new Uint8Array(raw);
|
|
366
|
+
let fileCount = 0;
|
|
367
|
+
let totalSize = 0;
|
|
368
|
+
let unzipped;
|
|
369
|
+
try {
|
|
370
|
+
unzipped = unzipSync(bytes, {
|
|
371
|
+
filter: (info) => {
|
|
372
|
+
if (!info.name.endsWith("/")) {
|
|
373
|
+
fileCount++;
|
|
374
|
+
totalSize += info.originalSize;
|
|
375
|
+
}
|
|
376
|
+
return info.name === SKILL_FILE;
|
|
377
|
+
},
|
|
378
|
+
});
|
|
379
|
+
}
|
|
380
|
+
catch (err) {
|
|
381
|
+
throw new UsageError(`${archivePath} is not a valid ZIP archive: ${err.message}`);
|
|
382
|
+
}
|
|
383
|
+
const skillMd = unzipped[SKILL_FILE];
|
|
384
|
+
if (skillMd === undefined) {
|
|
385
|
+
throw new UsageError(`${SKILL_FILE} not found at the root of ${archivePath}\n\n` +
|
|
386
|
+
`A skill archive must contain ${SKILL_FILE} at its root (not inside a directory) defining the skill interface`);
|
|
387
|
+
}
|
|
388
|
+
return { bytes, meta: parseSkillMetadataContent(strFromU8(skillMd)), fileCount, totalSize };
|
|
389
|
+
}
|
|
390
|
+
/**
|
|
391
|
+
* Push a pre-packaged skill archive as-is (`--archive`).
|
|
392
|
+
*
|
|
393
|
+
* The bytes are uploaded untouched, so the engine's version hash is the
|
|
394
|
+
* SHA-256 of the file on disk — release pipelines that publish checksums get
|
|
395
|
+
* engine version identities that match them (stigmer/stigmer#671). Git
|
|
396
|
+
* provenance is deliberately omitted: the archive was built elsewhere, so the
|
|
397
|
+
* local checkout says nothing about the artifact's origin.
|
|
398
|
+
*/
|
|
399
|
+
export async function pushSkillFromArchive(client, archivePath, org, tag, message) {
|
|
400
|
+
const archive = readSkillArchive(archivePath);
|
|
401
|
+
const request = create(PushSkillRequestSchema, {
|
|
402
|
+
org,
|
|
403
|
+
artifact: archive.bytes,
|
|
404
|
+
tag: tag === "" ? "latest" : tag,
|
|
405
|
+
message,
|
|
406
|
+
});
|
|
407
|
+
// Size-routed like every other push path (#675): pre-packaged archives are
|
|
408
|
+
// the release-pipeline lane, exactly where content-heavy skills come from.
|
|
409
|
+
const response = await pushRouted(client, request);
|
|
410
|
+
const applied = await applyDeclaredVisibility(client, response, archive.meta.visibility);
|
|
411
|
+
return toResult(applied, archive.meta.name, message, archive.totalSize, archive.meta.visibility);
|
|
412
|
+
}
|
|
274
413
|
/**
|
|
275
414
|
* Apply the SKILL.md-declared visibility after a push. The push RPC carries
|
|
276
415
|
* artifact + provenance but not access level (visibility is metadata, not part
|
package/resources/skill.js.map
CHANGED
|
@@ -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":"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"}
|
package/src/commands/push.ts
CHANGED
|
@@ -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;
|
package/src/commands/setup.ts
CHANGED
|
@@ -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
|
|
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,
|
|
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",
|
|
62
|
-
expect(readLlm(updated)).toEqual({ provider: "anthropic",
|
|
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
|
});
|
package/src/local/llm-config.ts
CHANGED
|
@@ -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/
|
|
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
|
|
16
|
-
//
|
|
17
|
-
//
|
|
18
|
-
//
|
|
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
|
|
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"
|
|
26
|
+
expect(buildLlmForChoice("anthropic", { apiKey: "k" })).toEqual({
|
|
27
27
|
provider: "anthropic",
|
|
28
|
-
model: "m",
|
|
29
28
|
api_key: "k",
|
|
30
29
|
});
|
|
31
30
|
});
|