@stigmer/cli 3.12.4 → 3.12.5
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/draft.js +4 -2
- package/commands/draft.js.map +1 -1
- package/commands/run.js +4 -2
- package/commands/run.js.map +1 -1
- package/commands/seedpack.d.ts.map +1 -1
- package/commands/seedpack.js +27 -5
- package/commands/seedpack.js.map +1 -1
- package/local/seedpack/apply.d.ts +32 -3
- package/local/seedpack/apply.d.ts.map +1 -1
- package/local/seedpack/apply.js +59 -8
- package/local/seedpack/apply.js.map +1 -1
- package/package.json +5 -5
- package/resources/apply/apply.d.ts.map +1 -1
- package/resources/apply/apply.js +10 -1
- package/resources/apply/apply.js.map +1 -1
- package/resources/connect/connect.d.ts +7 -0
- package/resources/connect/connect.d.ts.map +1 -1
- package/resources/connect/connect.js +47 -30
- package/resources/connect/connect.js.map +1 -1
- package/resources/connect/display.d.ts.map +1 -1
- package/resources/connect/display.js +3 -0
- package/resources/connect/display.js.map +1 -1
- package/resources/run/prepare.d.ts +12 -1
- package/resources/run/prepare.d.ts.map +1 -1
- package/resources/run/prepare.js +27 -2
- package/resources/run/prepare.js.map +1 -1
- package/resources/task-configs.d.ts +15 -0
- package/resources/task-configs.d.ts.map +1 -0
- package/resources/task-configs.js +135 -0
- package/resources/task-configs.js.map +1 -0
- package/resources/validate.d.ts.map +1 -1
- package/resources/validate.js +8 -1
- package/resources/validate.js.map +1 -1
- package/src/commands/draft.ts +4 -2
- package/src/commands/run.ts +4 -2
- package/src/commands/seedpack.ts +27 -5
- package/src/local/seedpack/apply.test.ts +127 -6
- package/src/local/seedpack/apply.ts +69 -9
- package/src/resources/apply/apply.ts +11 -1
- package/src/resources/connect/connect.ts +70 -44
- package/src/resources/connect/display.ts +3 -0
- package/src/resources/run/prepare.test.ts +80 -0
- package/src/resources/run/prepare.ts +41 -1
- package/src/resources/task-configs.test.ts +98 -0
- package/src/resources/task-configs.ts +150 -0
- package/src/resources/validate.test.ts +26 -0
- package/src/resources/validate.ts +10 -2
package/commands/draft.js
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
// Draft differs from run only at the edges: the agent is fixed (a system agent),
|
|
7
7
|
// --message is required, and artifacts download to -o/--output (or the CWD)
|
|
8
8
|
// unless detached or a local workspace is in play.
|
|
9
|
-
import { ensureAuthenticated, resolveOrganization } from "../config/index.js";
|
|
9
|
+
import { ensureAuthenticated, isCloudMode, resolveOrganization } from "../config/index.js";
|
|
10
10
|
import { UsageError } from "../errors/index.js";
|
|
11
11
|
import { addAgentExecFlags, toAgentExecFlags } from "./agent-exec-flags.js";
|
|
12
12
|
import { globalOrg } from "./shared.js";
|
|
@@ -47,7 +47,9 @@ async function runDraft(config, options, command) {
|
|
|
47
47
|
import("../resources/run/workspace.js"),
|
|
48
48
|
]);
|
|
49
49
|
const agent = await resolveDraftAgent(resolveAgentRef, client.stigmer, config);
|
|
50
|
-
const prepared = await prepareAgentExec(toAgentExecFlags(options), client.stigmer, org, stderrProgress()
|
|
50
|
+
const prepared = await prepareAgentExec(toAgentExecFlags(options), client.stigmer, org, stderrProgress(), {
|
|
51
|
+
cloudBackend: isCloudMode(client.config),
|
|
52
|
+
});
|
|
51
53
|
if (prepared.attachments.length + prepared.workspaceFileRefs.length > 0) {
|
|
52
54
|
process.stderr.write(`Attached ${prepared.attachments.length + prepared.workspaceFileRefs.length} file(s) as context\n`);
|
|
53
55
|
}
|
package/commands/draft.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"draft.js","sourceRoot":"","sources":["../../src/commands/draft.ts"],"names":[],"mappings":"AAAA,iFAAiF;AACjF,6EAA6E;AAC7E,gFAAgF;AAChF,oCAAoC;AACpC,EAAE;AACF,iFAAiF;AACjF,4EAA4E;AAC5E,mDAAmD;AAGnD,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"draft.js","sourceRoot":"","sources":["../../src/commands/draft.ts"],"names":[],"mappings":"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"}
|
package/commands/run.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
// reference (smart 0/1/2-arg dispatch mirroring Go's run.go + run_picker.go),
|
|
4
4
|
// then delegate to the shared run stack. Heavy modules (backend client, Ink,
|
|
5
5
|
// the differ) load lazily inside the action so `--help` stays fast (DD-001).
|
|
6
|
-
import { ensureAuthenticated, resolveOrganization } from "../config/index.js";
|
|
6
|
+
import { ensureAuthenticated, isCloudMode, resolveOrganization } from "../config/index.js";
|
|
7
7
|
import { UsageError } from "../errors/index.js";
|
|
8
8
|
import { interactiveBrowseEnabled } from "../resources/picker/tty.js";
|
|
9
9
|
import { addAgentExecFlags } from "./agent-exec-flags.js";
|
|
@@ -109,7 +109,9 @@ async function runResolvedAgent(agent, options, org, outputMode, client) {
|
|
|
109
109
|
const { prepareAgentExec } = await import("../resources/run/prepare.js");
|
|
110
110
|
const { executeResolvedAgent } = await import("../resources/run/agent-exec.js");
|
|
111
111
|
const { toAgentExecFlags } = await import("./agent-exec-flags.js");
|
|
112
|
-
const prepared = await prepareAgentExec(toAgentExecFlags(options), client.stigmer, org, stderrProgress()
|
|
112
|
+
const prepared = await prepareAgentExec(toAgentExecFlags(options), client.stigmer, org, stderrProgress(), {
|
|
113
|
+
cloudBackend: isCloudMode(client.config),
|
|
114
|
+
});
|
|
113
115
|
await executeResolvedAgent({
|
|
114
116
|
agent,
|
|
115
117
|
prepared,
|
package/commands/run.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/commands/run.ts"],"names":[],"mappings":"AAAA,iFAAiF;AACjF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,6EAA6E;AAG7E,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/commands/run.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"seedpack.d.ts","sourceRoot":"","sources":["../../src/commands/seedpack.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"seedpack.d.ts","sourceRoot":"","sources":["../../src/commands/seedpack.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AASzC,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAevD"}
|
package/commands/seedpack.js
CHANGED
|
@@ -3,7 +3,10 @@
|
|
|
3
3
|
// The seedpack (system agents, skills, MCP servers, workflows under the
|
|
4
4
|
// "stigmer" org) is applied automatically on `stigmer up` in local mode; these
|
|
5
5
|
// commands bootstrap it explicitly against whatever backend is configured
|
|
6
|
-
// (local or cloud). Apply is idempotent
|
|
6
|
+
// (local or cloud). Apply is content-hash idempotent: in cloud mode the truth
|
|
7
|
+
// is the stigmer.ai/seedpack-hash label on the server's seedpack Project (any
|
|
8
|
+
// machine sees the same applied state — cloud#429); in local mode it is a
|
|
9
|
+
// marker file in the data dir, which lives and dies with the local backend.
|
|
7
10
|
//
|
|
8
11
|
// Heavy modules load lazily inside the action so `--help` stays fast (DD-001).
|
|
9
12
|
import { configDir, dataDir, isCloudMode, load } from "../config/index.js";
|
|
@@ -36,7 +39,11 @@ async function runApply(flags) {
|
|
|
36
39
|
stigmer: client.stigmer,
|
|
37
40
|
info: (line) => process.stderr.write(`${line}\n`),
|
|
38
41
|
warn: (line) => process.stderr.write(`${line}\n`),
|
|
39
|
-
}, {
|
|
42
|
+
}, {
|
|
43
|
+
markerDir: markerDir(),
|
|
44
|
+
force: flags.force === true,
|
|
45
|
+
useServerHash: isCloudMode(load()),
|
|
46
|
+
});
|
|
40
47
|
const label = backendLabel();
|
|
41
48
|
const message = result.applied
|
|
42
49
|
? `Seedpack applied to ${label} backend`
|
|
@@ -44,10 +51,25 @@ async function runApply(flags) {
|
|
|
44
51
|
renderResult(CommandResult.success(message), resultFormat(flags));
|
|
45
52
|
}
|
|
46
53
|
async function runStatus(flags) {
|
|
47
|
-
const { seedpackContentHash } = await import("../local/seedpack/apply.js");
|
|
54
|
+
const { readServerSeedpackHash, resolveSeedpackOrg, seedpackContentHash } = await import("../local/seedpack/apply.js");
|
|
48
55
|
const { readMarker } = await import("../local/seedpack/content.js");
|
|
49
56
|
const hash = seedpackContentHash();
|
|
50
|
-
|
|
57
|
+
// Cloud mode asks the server (the label on the seedpack Project) so status
|
|
58
|
+
// is truthful from ANY machine, not just the one that last ran apply.
|
|
59
|
+
let stored;
|
|
60
|
+
let storedLabel;
|
|
61
|
+
if (isCloudMode(load())) {
|
|
62
|
+
const { connectBackend } = await import("../backend.js");
|
|
63
|
+
const { ensureAuthenticated } = await import("../config/index.js");
|
|
64
|
+
const client = connectBackend();
|
|
65
|
+
ensureAuthenticated(client.config);
|
|
66
|
+
stored = await readServerSeedpackHash(client.stigmer, resolveSeedpackOrg());
|
|
67
|
+
storedLabel = "Applied Hash (server)";
|
|
68
|
+
}
|
|
69
|
+
else {
|
|
70
|
+
stored = readMarker(markerDir());
|
|
71
|
+
storedLabel = "Applied Hash";
|
|
72
|
+
}
|
|
51
73
|
const result = CommandResult.success("Seedpack status");
|
|
52
74
|
const section = result.addSection("");
|
|
53
75
|
section.field("Backend", backendLabel());
|
|
@@ -56,7 +78,7 @@ async function runStatus(flags) {
|
|
|
56
78
|
section.field("Status", "Not applied (run 'stigmer seedpack apply')");
|
|
57
79
|
}
|
|
58
80
|
else {
|
|
59
|
-
section.field(
|
|
81
|
+
section.field(storedLabel, stored);
|
|
60
82
|
section.field("Status", stored === hash ? "Up to date" : "Outdated (run 'stigmer seedpack apply' to update)");
|
|
61
83
|
}
|
|
62
84
|
renderResult(result, resultFormat(flags));
|
package/commands/seedpack.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"seedpack.js","sourceRoot":"","sources":["../../src/commands/seedpack.ts"],"names":[],"mappings":"AAAA,yEAAyE;AACzE,EAAE;AACF,wEAAwE;AACxE,+EAA+E;AAC/E,0EAA0E;AAC1E,
|
|
1
|
+
{"version":3,"file":"seedpack.js","sourceRoot":"","sources":["../../src/commands/seedpack.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,21 @@
|
|
|
1
1
|
import type { Stigmer } from "@stigmer/sdk";
|
|
2
2
|
import type { ControllerFn } from "../../resources/apply/handlers.js";
|
|
3
3
|
import { type SeedpackContent } from "./content.js";
|
|
4
|
+
/**
|
|
5
|
+
* Reserved label on the seedpack Project recording the last applied content
|
|
6
|
+
* hash (cloud#429). Writing a NEW value requires `can_write_reserved_labels`
|
|
7
|
+
* (the seeding identity's capability); re-sending an unchanged value is an
|
|
8
|
+
* echo the cloud guard passes for any caller — so re-applies of identical
|
|
9
|
+
* content are never treated as reserved-label writes.
|
|
10
|
+
*/
|
|
11
|
+
export declare const SEEDPACK_HASH_LABEL = "stigmer.ai/seedpack-hash";
|
|
12
|
+
/**
|
|
13
|
+
* The seedpack Project's slug. The server derives it from the manifest's
|
|
14
|
+
* `metadata.name` in `seedpack/stigmer.yaml` — "stigmer-seedpack" is already
|
|
15
|
+
* slug-shaped, so name and slug coincide. Pinned by a test against the real
|
|
16
|
+
* content so a rename there fails loudly here.
|
|
17
|
+
*/
|
|
18
|
+
export declare const SEEDPACK_PROJECT_SLUG = "stigmer-seedpack";
|
|
4
19
|
export interface SeedpackApplyDeps {
|
|
5
20
|
/** Raw command-controller accessor (full-proto apply, preserves metadata.id). */
|
|
6
21
|
readonly controller: ControllerFn;
|
|
@@ -12,7 +27,7 @@ export interface SeedpackApplyDeps {
|
|
|
12
27
|
readonly warn: (line: string) => void;
|
|
13
28
|
}
|
|
14
29
|
export interface SeedpackApplyOptions {
|
|
15
|
-
/** Directory holding the idempotency marker (
|
|
30
|
+
/** Directory holding the idempotency marker (local mode only). */
|
|
16
31
|
readonly markerDir: string;
|
|
17
32
|
/** Target org slug. Defaults to STIGMER_SEEDPACK_ORG, then "stigmer". */
|
|
18
33
|
readonly org?: string;
|
|
@@ -21,6 +36,13 @@ export interface SeedpackApplyOptions {
|
|
|
21
36
|
/** Pre-resolved content (injectable for tests); resolved on demand otherwise. */
|
|
22
37
|
readonly content?: SeedpackContent;
|
|
23
38
|
readonly home?: string;
|
|
39
|
+
/**
|
|
40
|
+
* Cloud mode: the idempotency truth is the {@link SEEDPACK_HASH_LABEL} on the
|
|
41
|
+
* server's seedpack Project, read via {@link readServerSeedpackHash} — the
|
|
42
|
+
* local marker is neither read nor written, so a stateless machine (CI, a
|
|
43
|
+
* second operator laptop) still skips unchanged content correctly.
|
|
44
|
+
*/
|
|
45
|
+
readonly useServerHash?: boolean;
|
|
24
46
|
}
|
|
25
47
|
export interface SeedpackApplyResult {
|
|
26
48
|
/** True when the seedpack was applied; false when skipped as up to date. */
|
|
@@ -34,10 +56,17 @@ export interface SeedpackApplyResult {
|
|
|
34
56
|
export declare function resolveSeedpackOrg(explicit?: string): string;
|
|
35
57
|
/** Compute the current seedpack content hash without applying (drives `status`). */
|
|
36
58
|
export declare function seedpackContentHash(opts?: Pick<SeedpackApplyOptions, "content" | "home">): string;
|
|
59
|
+
/**
|
|
60
|
+
* Read the applied content hash recorded on the backend's seedpack Project,
|
|
61
|
+
* or null when it cannot be proven (project absent — never applied — or the
|
|
62
|
+
* read failed). Null means "apply": the apply itself is idempotent server-side,
|
|
63
|
+
* so an unprovable state costs one redundant pass, never a skipped update.
|
|
64
|
+
*/
|
|
65
|
+
export declare function readServerSeedpackHash(stigmer: Stigmer, org: string): Promise<string | null>;
|
|
37
66
|
/**
|
|
38
67
|
* Apply the seedpack to the backend the deps connect to. Returns `applied:false`
|
|
39
|
-
* (without touching the backend
|
|
40
|
-
* hash and `force` is not set.
|
|
68
|
+
* (without touching the backend beyond the cloud-mode hash read) when the
|
|
69
|
+
* recorded hash already matches the content hash and `force` is not set.
|
|
41
70
|
*/
|
|
42
71
|
export declare function applySeedpack(deps: SeedpackApplyDeps, opts: SeedpackApplyOptions): Promise<SeedpackApplyResult>;
|
|
43
72
|
//# sourceMappingURL=apply.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apply.d.ts","sourceRoot":"","sources":["../../../src/local/seedpack/apply.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"apply.d.ts","sourceRoot":"","sources":["../../../src/local/seedpack/apply.ts"],"names":[],"mappings":"AAwBA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAG5C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AACtE,OAAO,EAKL,KAAK,eAAe,EAErB,MAAM,cAAc,CAAC;AAKtB;;;;;;GAMG;AACH,eAAO,MAAM,mBAAmB,6BAA6B,CAAC;AAE9D;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,qBAAqB,CAAC;AAExD,MAAM,WAAW,iBAAiB;IAChC,iFAAiF;IACjF,QAAQ,CAAC,UAAU,EAAE,YAAY,CAAC;IAClC,mEAAmE;IACnE,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,qCAAqC;IACrC,QAAQ,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,yBAAyB;IACzB,QAAQ,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CACvC;AAED,MAAM,WAAW,oBAAoB;IACnC,kEAAkE;IAClE,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,yEAAyE;IACzE,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,wDAAwD;IACxD,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IACzB,iFAAiF;IACjF,QAAQ,CAAC,OAAO,CAAC,EAAE,eAAe,CAAC;IACnC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB;;;;;OAKG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC;CAClC;AAED,MAAM,WAAW,mBAAmB;IAClC,4EAA4E;IAC5E,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,6EAA6E;IAC7E,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,+BAA+B;IAC/B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;CACtB;AAED,qEAAqE;AACrE,wBAAgB,kBAAkB,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAK5D;AAED,oFAAoF;AACpF,wBAAgB,mBAAmB,CAAC,IAAI,GAAE,IAAI,CAAC,oBAAoB,EAAE,SAAS,GAAG,MAAM,CAAM,GAAG,MAAM,CAGrG;AAED;;;;;GAKG;AACH,wBAAsB,sBAAsB,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAOlG;AAED;;;;GAIG;AACH,wBAAsB,aAAa,CAAC,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,oBAAoB,GAAG,OAAO,CAAC,mBAAmB,CAAC,CA6BrH"}
|
package/local/seedpack/apply.js
CHANGED
|
@@ -10,15 +10,37 @@
|
|
|
10
10
|
// 2. the project (stigmer.yaml + agents/skills/mcp-servers/workflows) via the
|
|
11
11
|
// declarative reconciler, under the target org.
|
|
12
12
|
//
|
|
13
|
-
// Idempotent
|
|
13
|
+
// Idempotent, with the applied-hash truth living with the backend it describes
|
|
14
|
+
// (cloud#429): every apply stamps the content hash as a reserved label on the
|
|
15
|
+
// seedpack Project, and cloud-mode runs skip by reading that label back — so
|
|
16
|
+
// any machine (operator laptop, CI) sees the same applied state. Local mode
|
|
17
|
+
// keeps the original marker file (the local data dir lives and dies with the
|
|
18
|
+
// local backend, so a local file IS backend-scoped state there).
|
|
14
19
|
import { mkdtempSync, rmSync } from "node:fs";
|
|
15
20
|
import { tmpdir } from "node:os";
|
|
16
21
|
import { join } from "node:path";
|
|
22
|
+
import { create } from "@bufbuild/protobuf";
|
|
23
|
+
import { ApiResourceMetadataSchema } from "@stigmer/protos/ai/stigmer/commons/apiresource/metadata_pb";
|
|
17
24
|
import { applyItem, resolveApplyItems } from "../../resources/apply/apply.js";
|
|
18
25
|
import { applyDeclarative, detectTrack } from "../../resources/apply/declarative.js";
|
|
19
26
|
import { extractSeedpack, hashSeedpackContent, readMarker, resolveSeedpackContent, writeMarker, } from "./content.js";
|
|
20
27
|
const DEFAULT_ORG = "stigmer";
|
|
21
28
|
const ORG_ENV_VAR = "STIGMER_SEEDPACK_ORG";
|
|
29
|
+
/**
|
|
30
|
+
* Reserved label on the seedpack Project recording the last applied content
|
|
31
|
+
* hash (cloud#429). Writing a NEW value requires `can_write_reserved_labels`
|
|
32
|
+
* (the seeding identity's capability); re-sending an unchanged value is an
|
|
33
|
+
* echo the cloud guard passes for any caller — so re-applies of identical
|
|
34
|
+
* content are never treated as reserved-label writes.
|
|
35
|
+
*/
|
|
36
|
+
export const SEEDPACK_HASH_LABEL = "stigmer.ai/seedpack-hash";
|
|
37
|
+
/**
|
|
38
|
+
* The seedpack Project's slug. The server derives it from the manifest's
|
|
39
|
+
* `metadata.name` in `seedpack/stigmer.yaml` — "stigmer-seedpack" is already
|
|
40
|
+
* slug-shaped, so name and slug coincide. Pinned by a test against the real
|
|
41
|
+
* content so a rename there fails loudly here.
|
|
42
|
+
*/
|
|
43
|
+
export const SEEDPACK_PROJECT_SLUG = "stigmer-seedpack";
|
|
22
44
|
/** Resolve the target org: explicit option > env var > "stigmer". */
|
|
23
45
|
export function resolveSeedpackOrg(explicit) {
|
|
24
46
|
if (explicit !== undefined && explicit !== "")
|
|
@@ -33,16 +55,34 @@ export function seedpackContentHash(opts = {}) {
|
|
|
33
55
|
const content = opts.content ?? resolveSeedpackContent({ home: opts.home });
|
|
34
56
|
return hashSeedpackContent(content.dir);
|
|
35
57
|
}
|
|
58
|
+
/**
|
|
59
|
+
* Read the applied content hash recorded on the backend's seedpack Project,
|
|
60
|
+
* or null when it cannot be proven (project absent — never applied — or the
|
|
61
|
+
* read failed). Null means "apply": the apply itself is idempotent server-side,
|
|
62
|
+
* so an unprovable state costs one redundant pass, never a skipped update.
|
|
63
|
+
*/
|
|
64
|
+
export async function readServerSeedpackHash(stigmer, org) {
|
|
65
|
+
try {
|
|
66
|
+
const project = await stigmer.project.getByReference({ org, slug: SEEDPACK_PROJECT_SLUG });
|
|
67
|
+
return project.metadata?.labels?.[SEEDPACK_HASH_LABEL] ?? null;
|
|
68
|
+
}
|
|
69
|
+
catch {
|
|
70
|
+
return null;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
36
73
|
/**
|
|
37
74
|
* Apply the seedpack to the backend the deps connect to. Returns `applied:false`
|
|
38
|
-
* (without touching the backend
|
|
39
|
-
* hash and `force` is not set.
|
|
75
|
+
* (without touching the backend beyond the cloud-mode hash read) when the
|
|
76
|
+
* recorded hash already matches the content hash and `force` is not set.
|
|
40
77
|
*/
|
|
41
78
|
export async function applySeedpack(deps, opts) {
|
|
42
79
|
const org = resolveSeedpackOrg(opts.org);
|
|
43
80
|
const content = opts.content ?? resolveSeedpackContent({ home: opts.home });
|
|
44
81
|
const hash = hashSeedpackContent(content.dir);
|
|
45
|
-
|
|
82
|
+
const appliedHash = opts.useServerHash === true
|
|
83
|
+
? await readServerSeedpackHash(deps.stigmer, org)
|
|
84
|
+
: readMarker(opts.markerDir);
|
|
85
|
+
if (opts.force !== true && appliedHash === hash) {
|
|
46
86
|
return { applied: false, hash, org };
|
|
47
87
|
}
|
|
48
88
|
deps.info("Applying system resources (seedpack)…");
|
|
@@ -50,8 +90,12 @@ export async function applySeedpack(deps, opts) {
|
|
|
50
90
|
try {
|
|
51
91
|
extractSeedpack(content.dir, stage);
|
|
52
92
|
await applyOrganizations(deps, stage);
|
|
53
|
-
await applyProject(deps, stage, org);
|
|
54
|
-
|
|
93
|
+
await applyProject(deps, stage, org, hash);
|
|
94
|
+
// The Project label written above is the cloud-mode record; the marker
|
|
95
|
+
// stays the local-mode one. Never both — two records of one fact drift.
|
|
96
|
+
if (opts.useServerHash !== true) {
|
|
97
|
+
writeMarker(opts.markerDir, hash);
|
|
98
|
+
}
|
|
55
99
|
}
|
|
56
100
|
finally {
|
|
57
101
|
rmSync(stage, { recursive: true, force: true });
|
|
@@ -78,11 +122,18 @@ async function applyOrganizations(deps, stageDir) {
|
|
|
78
122
|
}
|
|
79
123
|
// Phase 2: the project (agents, skills, MCP servers, workflows) via the shared
|
|
80
124
|
// declarative reconciler — the same path `stigmer apply` runs for a user project.
|
|
81
|
-
|
|
125
|
+
//
|
|
126
|
+
// The content hash is stamped as a reserved label on the Project HERE, in the
|
|
127
|
+
// seedpack path only — general `stigmer apply` never writes reserved labels.
|
|
128
|
+
// The stamp rides the project apply that happens anyway, so recording the hash
|
|
129
|
+
// costs no extra RPC and can never succeed while the apply failed.
|
|
130
|
+
async function applyProject(deps, stageDir, org, contentHash) {
|
|
82
131
|
const detect = detectTrack(stageDir);
|
|
83
|
-
if (detect.track !== "declarative") {
|
|
132
|
+
if (detect.track !== "declarative" || detect.project === undefined) {
|
|
84
133
|
throw new Error(`seedpack is not a declarative project (detected '${detect.track}')`);
|
|
85
134
|
}
|
|
135
|
+
detect.project.metadata ??= create(ApiResourceMetadataSchema, {});
|
|
136
|
+
detect.project.metadata.labels[SEEDPACK_HASH_LABEL] = contentHash;
|
|
86
137
|
await applyDeclarative(detect, {
|
|
87
138
|
controller: deps.controller,
|
|
88
139
|
stigmer: deps.stigmer,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apply.js","sourceRoot":"","sources":["../../../src/local/seedpack/apply.ts"],"names":[],"mappings":"AAAA,6BAA6B;AAC7B,EAAE;AACF,yEAAyE;AACzE,gFAAgF;AAChF,gFAAgF;AAChF,wDAAwD;AACxD,EAAE;AACF,wEAAwE;AACxE,6EAA6E;AAC7E,gFAAgF;AAChF,qDAAqD;AACrD,EAAE;AACF,
|
|
1
|
+
{"version":3,"file":"apply.js","sourceRoot":"","sources":["../../../src/local/seedpack/apply.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@stigmer/cli",
|
|
3
|
-
"version": "3.12.
|
|
3
|
+
"version": "3.12.5",
|
|
4
4
|
"description": "Stigmer command-line interface — manage agents, workflows, MCP servers, skills, and executions from the terminal",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"type": "module",
|
|
@@ -35,10 +35,10 @@
|
|
|
35
35
|
"@connectrpc/connect": "^2.0.0",
|
|
36
36
|
"@connectrpc/connect-node": "^2.1.1",
|
|
37
37
|
"@modelcontextprotocol/sdk": "^1.26.0",
|
|
38
|
-
"@stigmer/ink": "3.12.
|
|
39
|
-
"@stigmer/mcp-server": "3.12.
|
|
40
|
-
"@stigmer/protos": "3.12.
|
|
41
|
-
"@stigmer/sdk": "3.12.
|
|
38
|
+
"@stigmer/ink": "3.12.5",
|
|
39
|
+
"@stigmer/mcp-server": "3.12.5",
|
|
40
|
+
"@stigmer/protos": "3.12.5",
|
|
41
|
+
"@stigmer/sdk": "3.12.5",
|
|
42
42
|
"commander": "^12.1.0",
|
|
43
43
|
"fflate": "^0.8.3",
|
|
44
44
|
"ink": "^7.0.0",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apply.d.ts","sourceRoot":"","sources":["../../../src/resources/apply/apply.ts"],"names":[],"mappings":"AAQA,OAAO,EAAoB,KAAK,SAAS,EAAE,KAAK,OAAO,EAAE,MAAM,oBAAoB,CAAC;AACpF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wDAAwD,CAAC;
|
|
1
|
+
{"version":3,"file":"apply.d.ts","sourceRoot":"","sources":["../../../src/resources/apply/apply.ts"],"names":[],"mappings":"AAQA,OAAO,EAAoB,KAAK,SAAS,EAAE,KAAK,OAAO,EAAE,MAAM,oBAAoB,CAAC;AACpF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wDAAwD,CAAC;AAKxF,OAAO,EACL,KAAK,mBAAmB,EAEzB,MAAM,4DAA4D,CAAC;AAEpE,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAItD,OAAO,EAAE,KAAK,YAAY,EAAkB,KAAK,YAAY,EAAE,MAAM,eAAe,CAAC;AAErF,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAC;IAC/B,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAC;CAC9B;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;IAC/B,+EAA+E;IAC/E,QAAQ,CAAC,gBAAgB,CAAC,EAAE,SAAS,CAAC;IACtC,0DAA0D;IAC1D,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B;;;;OAIG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,iFAAiF;AACjF,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,EAAE,CAY3D;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,YAAY,CAgB/E;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,SAAS,EAAE,GAAG,SAAS,EAAE,CAG9D;AAED,6EAA6E;AAC7E,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,SAAS,SAAS,EAAE,GAAG,OAAO,CAEvE;AAED,mFAAmF;AACnF,wBAAsB,SAAS,CAC7B,UAAU,EAAE,YAAY,EACxB,IAAI,EAAE,SAAS,EACf,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,OAAO,GACd,OAAO,CAAC,YAAY,CAAC,CAEvB;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,CAcpD;AAED;;;;;;;GAOG;AACH,wBAAsB,YAAY,CAChC,UAAU,EAAE,YAAY,EACxB,OAAO,EAAE,YAAY,EACrB,OAAO,EAAE,OAAO,EAChB,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,OAAO,GACd,OAAO,CAAC,YAAY,CAAC,CAgBvB;AA2DD,yEAAyE;AACzE,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,mBAAmB,GAAG,SAAS,CAElF"}
|
package/resources/apply/apply.js
CHANGED
|
@@ -14,6 +14,7 @@ import { UsageError } from "../../errors/index.js";
|
|
|
14
14
|
import { CommandResult } from "../../output/index.js";
|
|
15
15
|
import { defaultRegistry, Verb } from "../../registry/index.js";
|
|
16
16
|
import { loadDocuments, resolveYamlFiles } from "../documents.js";
|
|
17
|
+
import { decodeWorkflowTaskConfigs } from "../task-configs.js";
|
|
17
18
|
import { APPLY_HANDLERS } from "./handlers.js";
|
|
18
19
|
/** Expand a path into ordered, kind-resolved apply items (strict YAML parse). */
|
|
19
20
|
export function resolveApplyItems(path) {
|
|
@@ -78,7 +79,15 @@ export async function applyItem(controller, item, org, dryRun) {
|
|
|
78
79
|
*/
|
|
79
80
|
export function marshalItem(item) {
|
|
80
81
|
try {
|
|
81
|
-
|
|
82
|
+
const message = fromJson(item.handler.schema, item.document, { ignoreUnknownFields: false });
|
|
83
|
+
// Workflow task_config blocks live inside an open Struct the top-level
|
|
84
|
+
// decode cannot see into; decode them per kind so a dry-run (and the
|
|
85
|
+
// reconciler's marshal) rejects exactly what a real apply rejects
|
|
86
|
+
// (stigmer/stigmer#778).
|
|
87
|
+
if (item.handler.kind === ApiResourceKind.workflow) {
|
|
88
|
+
decodeWorkflowTaskConfigs(message);
|
|
89
|
+
}
|
|
90
|
+
return message;
|
|
82
91
|
}
|
|
83
92
|
catch (err) {
|
|
84
93
|
throw new UsageError(`invalid ${item.handler.displayName} in ${item.filePath}: ${err.message}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apply.js","sourceRoot":"","sources":["../../../src/resources/apply/apply.ts"],"names":[],"mappings":"AAAA,yDAAyD;AACzD,EAAE;AACF,2EAA2E;AAC3E,sEAAsE;AACtE,8EAA8E;AAC9E,+EAA+E;AAC/E,0EAA0E;AAE1E,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAgC,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"apply.js","sourceRoot":"","sources":["../../../src/resources/apply/apply.ts"],"names":[],"mappings":"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"}
|
|
@@ -27,6 +27,13 @@ export interface ConnectResult {
|
|
|
27
27
|
readonly capabilities: DiscoveredCapabilities | undefined;
|
|
28
28
|
/** Set when capabilities were persisted (non-dry-run); undefined for dry-run. */
|
|
29
29
|
readonly updated: McpServer | undefined;
|
|
30
|
+
/**
|
|
31
|
+
* Start-time advisory from the backend's connect pre-flight (e.g. "no
|
|
32
|
+
* runner appears to be polling the task queue"). Only set on the async
|
|
33
|
+
* lane, and only when the operation ultimately settled anyway — surfaced
|
|
34
|
+
* so the user learns their runner came up late.
|
|
35
|
+
*/
|
|
36
|
+
readonly warning?: string;
|
|
30
37
|
}
|
|
31
38
|
/** Connect to an MCP server and discover its capabilities (push or dry-run). */
|
|
32
39
|
export declare function connectMcpServer(client: Stigmer, opts: ConnectOptions): Promise<ConnectResult>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connect.d.ts","sourceRoot":"","sources":["../../../src/resources/connect/connect.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"connect.d.ts","sourceRoot":"","sources":["../../../src/resources/connect/connect.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wDAAwD,CAAC;AAGxF,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,2DAA2D,CAAC;AAExG,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAE5C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAQ1D,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B;;;;;;;OAOG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;IACzC,6DAA6D;IAC7D,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;IAClC,0EAA0E;IAC1E,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;CAC/B;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC;IAC3B,QAAQ,CAAC,YAAY,EAAE,sBAAsB,GAAG,SAAS,CAAC;IAC1D,iFAAiF;IACjF,QAAQ,CAAC,OAAO,EAAE,SAAS,GAAG,SAAS,CAAC;IACxC;;;;;OAKG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,gFAAgF;AAChF,wBAAsB,gBAAgB,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC,CA6BpG"}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
|
-
// `connect mcp-server` orchestration.
|
|
2
|
-
//
|
|
3
|
-
//
|
|
4
|
-
//
|
|
1
|
+
// `connect mcp-server` orchestration. Resolve the server, then either run the
|
|
2
|
+
// server-side connect (discovery + tool-approval classification, persisted on
|
|
3
|
+
// the resource) or, for --dry-run, discover locally and return without
|
|
4
|
+
// persisting. The server-side path uses the async lane — startConnect + poll
|
|
5
|
+
// (stigmer/stigmer#425) — with a blocking-RPC fallback for backends that
|
|
6
|
+
// predate it.
|
|
5
7
|
//
|
|
6
8
|
// OAuth: when a server requires OAuth, has no existing grant, and no --env was
|
|
7
9
|
// supplied, the interactive browser flow (oauth.ts) shepherds the user through
|
|
@@ -10,6 +12,7 @@
|
|
|
10
12
|
// Audit identity (reviewer) and token acquisition stay server-side by design.
|
|
11
13
|
import { create } from "@bufbuild/protobuf";
|
|
12
14
|
import { ConnectInputSchema, GetOAuthGrantStatusInputSchema } from "@stigmer/protos/ai/stigmer/agentic/mcpserver/v1/io_pb";
|
|
15
|
+
import { connectAndWait, ConnectStillRunningError, CONNECT_SETTLE_BOUND_MS } from "@stigmer/sdk";
|
|
13
16
|
import { CliExitError, ExitCode, UsageError } from "../../errors/index.js";
|
|
14
17
|
import { defaultRegistry } from "../../registry/index.js";
|
|
15
18
|
import { PlaceholderResolutionError } from "../mcp/placeholder-resolver.js";
|
|
@@ -41,39 +44,53 @@ export async function connectMcpServer(client, opts) {
|
|
|
41
44
|
}
|
|
42
45
|
}
|
|
43
46
|
await ensureOAuthSatisfied(client, server, opts);
|
|
44
|
-
const
|
|
47
|
+
const input = create(ConnectInputSchema, {
|
|
45
48
|
mcpServerId: server.metadata?.id ?? "",
|
|
46
49
|
org: opts.org,
|
|
47
50
|
runtimeEnv: buildRuntimeEnv(server, opts.envOverrides),
|
|
48
|
-
})
|
|
49
|
-
|
|
50
|
-
? await push
|
|
51
|
-
: await boundedPush(push, opts.pushTimeoutMs, server);
|
|
52
|
-
return { server, capabilities: updated.status?.discoveredCapabilities, updated };
|
|
51
|
+
});
|
|
52
|
+
return serverSideConnect(client, server, input, opts);
|
|
53
53
|
}
|
|
54
|
-
//
|
|
55
|
-
//
|
|
56
|
-
//
|
|
57
|
-
//
|
|
58
|
-
|
|
54
|
+
// Run the server-side connect through the SDK's shared async-lane protocol
|
|
55
|
+
// (connectAndWait, stigmer/stigmer#425): startConnect + poll, with the
|
|
56
|
+
// blocking-RPC fallback for backends that predate the lane. The CLI's job is
|
|
57
|
+
// only to translate its --timeout semantics and turn a still-running stop
|
|
58
|
+
// into its own actionable guidance.
|
|
59
|
+
async function serverSideConnect(client, server, input, opts) {
|
|
59
60
|
const slug = server.metadata?.slug ?? server.metadata?.id ?? "the server";
|
|
60
|
-
let
|
|
61
|
-
const timeout = new Promise((_, reject) => {
|
|
62
|
-
timer = setTimeout(() => reject(new CliExitError(`Stopped waiting for the connect of MCP server '${slug}' after ${timeoutMs / 1000}s (--timeout)`, ExitCode.Connection, [
|
|
63
|
-
"The server-side connect is still running and will persist its result if it succeeds.",
|
|
64
|
-
`Check the outcome with: stigmer get mcp-server ${slug}`,
|
|
65
|
-
"Re-run without --timeout to wait for completion.",
|
|
66
|
-
])), timeoutMs);
|
|
67
|
-
});
|
|
68
|
-
// The losing push may settle after the CLI has started exiting; swallow its
|
|
69
|
-
// late rejection so it cannot surface as an unhandled-rejection crash.
|
|
70
|
-
void push.catch(() => { });
|
|
61
|
+
let warning = "";
|
|
71
62
|
try {
|
|
72
|
-
|
|
63
|
+
const updated = await connectAndWait(client.mcpServer, input, {
|
|
64
|
+
deadlineMs: opts.pushTimeoutMs,
|
|
65
|
+
onStarted: (started) => {
|
|
66
|
+
warning = started.status?.connectStatus?.warning ?? "";
|
|
67
|
+
},
|
|
68
|
+
});
|
|
69
|
+
return {
|
|
70
|
+
server,
|
|
71
|
+
capabilities: updated.status?.discoveredCapabilities,
|
|
72
|
+
updated,
|
|
73
|
+
warning: warning !== "" ? warning : undefined,
|
|
74
|
+
};
|
|
73
75
|
}
|
|
74
|
-
|
|
75
|
-
if (
|
|
76
|
-
|
|
76
|
+
catch (err) {
|
|
77
|
+
if (!(err instanceof ConnectStillRunningError))
|
|
78
|
+
throw err;
|
|
79
|
+
if (opts.pushTimeoutMs !== undefined) {
|
|
80
|
+
// The user's explicit --timeout fired: historical soft-bound semantics.
|
|
81
|
+
throw new CliExitError(`Stopped waiting for the connect of MCP server '${slug}' after ${opts.pushTimeoutMs / 1000}s (--timeout)`, ExitCode.Connection, [
|
|
82
|
+
"The server-side connect is still running and will persist its result if it succeeds.",
|
|
83
|
+
`Check the outcome with: stigmer get mcp-server ${slug}`,
|
|
84
|
+
"Re-run without --timeout to wait for completion.",
|
|
85
|
+
]);
|
|
86
|
+
}
|
|
87
|
+
// The SDK's settle bound fired: past the backend's own ceiling, only a
|
|
88
|
+
// connect_status orphaned by a backend restart can still read CONNECTING.
|
|
89
|
+
throw new CliExitError(`The connect of MCP server '${slug}' did not settle within ${CONNECT_SETTLE_BOUND_MS / 60_000} minutes`, ExitCode.Connection, [
|
|
90
|
+
"This usually means the backend restarted mid-operation.",
|
|
91
|
+
`Check the current state with: stigmer get mcp-server ${slug}`,
|
|
92
|
+
"Re-run the connect to start a fresh operation.",
|
|
93
|
+
]);
|
|
77
94
|
}
|
|
78
95
|
}
|
|
79
96
|
// Resolve a reference (id, org/slug, or bare slug) to an McpServer. Mirrors Go's
|