@stigmer/cli 3.8.0 → 3.9.0

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.
@@ -1 +1 @@
1
- {"version":3,"file":"components.d.ts","sourceRoot":"","sources":["../../../src/local/daemon/components.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,KAAK,EAAE,aAAa,EAAiB,MAAM,YAAY,CAAC;AAK/D;;;GAGG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,YAAY,EAAE,IAAI,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,CAAC,UAAU,CAY7G;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,YAAY,EAAE,IAAI,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,CAAC,UAAU,CAoB7G;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,YAAY,EAAE,IAAI,GAAE,MAAM,CAAC,UAAwB,GAAG,aAAa,EAAE,CAmC5G"}
1
+ {"version":3,"file":"components.d.ts","sourceRoot":"","sources":["../../../src/local/daemon/components.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,KAAK,EAAE,aAAa,EAAiB,MAAM,YAAY,CAAC;AAK/D;;;GAGG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,YAAY,EAAE,IAAI,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,CAAC,UAAU,CAgB7G;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,YAAY,EAAE,IAAI,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,CAAC,UAAU,CA0B7G;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,YAAY,EAAE,IAAI,GAAE,MAAM,CAAC,UAAwB,GAAG,aAAa,EAAE,CAmC5G"}
@@ -8,6 +8,7 @@
8
8
  // enforceable — mirroring test/e2e/fixtures/server-manager.ts.
9
9
  import { dirname, join } from "node:path";
10
10
  import { RUNNER_TASK_QUEUE, RUNNER_READY_MARKER, SERVER_PID_FILE, RUNNER_PID_FILE, SERVER_PORT, TEMPORAL_NAMESPACE } from "../constants.js";
11
+ import { ARTIFACTS_SUBDIR } from "../paths.js";
11
12
  import { waitForTcp } from "../net/tcp.js";
12
13
  /** How long the server has to open its gRPC port before startup aborts. */
13
14
  const SERVER_GATE_TIMEOUT_MS = 30_000;
@@ -26,6 +27,10 @@ export function buildServerEnv(config, base = process.env) {
26
27
  TEMPORAL_WORKFLOW_EXECUTION_RUNNER_TASK_QUEUE: RUNNER_TASK_QUEUE,
27
28
  DB_PATH: join(configDir, "stigmer.db"),
28
29
  STORAGE_PATH: join(configDir, "storage"),
30
+ // The artifact root the runner also reads (#285). Set explicitly rather
31
+ // than relying on the server's compiled default so the shared-store contract
32
+ // is visible and enforceable here, next to the runner's LOCAL_ARTIFACT_PATH.
33
+ ARTIFACT_LOCAL_BASE_PATH: join(config.dataDir, ARTIFACTS_SUBDIR),
29
34
  };
30
35
  }
31
36
  /**
@@ -43,6 +48,12 @@ export function buildRunnerEnv(config, base = process.env) {
43
48
  WORKSPACE_ROOT_DIR: join(config.dataDir, "workspace"),
44
49
  STIGMER_TASK_QUEUE: RUNNER_TASK_QUEUE,
45
50
  LOG_LEVEL: base.LOG_LEVEL ?? "info",
51
+ // Read artifacts from the exact directory the server writes to (#285), and
52
+ // pin the serve URL to the server's artifact HTTP port (GRPC_PORT + 1)
53
+ // rather than leaving two independent defaults to agree by luck.
54
+ ARTIFACT_STORAGE_TYPE: "local",
55
+ LOCAL_ARTIFACT_PATH: join(config.dataDir, ARTIFACTS_SUBDIR),
56
+ LOCAL_ARTIFACT_SERVE_URL: `http://localhost:${SERVER_PORT + 1}`,
46
57
  };
47
58
  if (config.cursorApiKey !== undefined)
48
59
  env.CURSOR_API_KEY = config.cursorApiKey;
@@ -1 +1 @@
1
- {"version":3,"file":"components.js","sourceRoot":"","sources":["../../../src/local/daemon/components.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"components.js","sourceRoot":"","sources":["../../../src/local/daemon/components.ts"],"names":[],"mappings":"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"}
package/local/paths.d.ts CHANGED
@@ -4,6 +4,17 @@ export { configDir, dataDir };
4
4
  export declare function logDir(home?: string): string;
5
5
  /** Working directory the runner is launched in (~/.stigmer/data/workspace). */
6
6
  export declare function workspaceDir(home?: string): string;
7
+ /** Subdirectory name of the local artifact store under the data dir. */
8
+ export declare const ARTIFACTS_SUBDIR = "artifacts";
9
+ /**
10
+ * Local artifact store root (~/.stigmer/data/artifacts). This one directory is
11
+ * shared by both local processes: the stigmer-server writes to it (as its
12
+ * ARTIFACT_LOCAL_BASE_PATH) and the runner reads from it (as its
13
+ * LOCAL_ARTIFACT_PATH). Owning the path here — beside logDir() and
14
+ * workspaceDir() — is what keeps the two env vars from drifting apart, the
15
+ * regression behind stigmer/stigmer#285.
16
+ */
17
+ export declare function artifactDir(home?: string): string;
7
18
  /** Downloaded-binary directory for Temporal + stigmer-server (~/.stigmer/bin). */
8
19
  export declare function binDir(home?: string): string;
9
20
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../src/local/paths.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAExD,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC;AAE9B,0EAA0E;AAC1E,wBAAgB,MAAM,CAAC,IAAI,GAAE,MAAkB,GAAG,MAAM,CAEvD;AAED,+EAA+E;AAC/E,wBAAgB,YAAY,CAAC,IAAI,GAAE,MAAkB,GAAG,MAAM,CAE7D;AAED,kFAAkF;AAClF,wBAAgB,MAAM,CAAC,IAAI,GAAE,MAAkB,GAAG,MAAM,CAEvD;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,IAAI,GAAE,MAAkB,GAAG,MAAM,CAE5D;AAED,qEAAqE;AACrE,wBAAgB,eAAe,CAAC,IAAI,GAAE,MAAkB,GAAG,MAAM,CAEhE;AAED;mEACmE;AACnE,wBAAgB,eAAe,CAAC,IAAI,GAAE,MAAkB,GAAG,MAAM,CAEhE;AAED,qEAAqE;AACrE,wBAAgB,gBAAgB,CAAC,IAAI,GAAE,MAAkB,GAAG,MAAM,CAEjE;AAED,gFAAgF;AAChF,wBAAgB,YAAY,CAAC,IAAI,GAAE,MAAkB,GAAG,MAAM,CAE7D;AAED,+EAA+E;AAC/E,wBAAgB,WAAW,CAAC,IAAI,GAAE,MAAkB,GAAG,MAAM,CAE5D"}
1
+ {"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../src/local/paths.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAExD,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC;AAE9B,0EAA0E;AAC1E,wBAAgB,MAAM,CAAC,IAAI,GAAE,MAAkB,GAAG,MAAM,CAEvD;AAED,+EAA+E;AAC/E,wBAAgB,YAAY,CAAC,IAAI,GAAE,MAAkB,GAAG,MAAM,CAE7D;AAED,wEAAwE;AACxE,eAAO,MAAM,gBAAgB,cAAc,CAAC;AAE5C;;;;;;;GAOG;AACH,wBAAgB,WAAW,CAAC,IAAI,GAAE,MAAkB,GAAG,MAAM,CAE5D;AAED,kFAAkF;AAClF,wBAAgB,MAAM,CAAC,IAAI,GAAE,MAAkB,GAAG,MAAM,CAEvD;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,IAAI,GAAE,MAAkB,GAAG,MAAM,CAE5D;AAED,qEAAqE;AACrE,wBAAgB,eAAe,CAAC,IAAI,GAAE,MAAkB,GAAG,MAAM,CAEhE;AAED;mEACmE;AACnE,wBAAgB,eAAe,CAAC,IAAI,GAAE,MAAkB,GAAG,MAAM,CAEhE;AAED,qEAAqE;AACrE,wBAAgB,gBAAgB,CAAC,IAAI,GAAE,MAAkB,GAAG,MAAM,CAEjE;AAED,gFAAgF;AAChF,wBAAgB,YAAY,CAAC,IAAI,GAAE,MAAkB,GAAG,MAAM,CAE7D;AAED,+EAA+E;AAC/E,wBAAgB,WAAW,CAAC,IAAI,GAAE,MAAkB,GAAG,MAAM,CAE5D"}
package/local/paths.js CHANGED
@@ -21,6 +21,19 @@ export function logDir(home = homedir()) {
21
21
  export function workspaceDir(home = homedir()) {
22
22
  return join(dataDir(home), "workspace");
23
23
  }
24
+ /** Subdirectory name of the local artifact store under the data dir. */
25
+ export const ARTIFACTS_SUBDIR = "artifacts";
26
+ /**
27
+ * Local artifact store root (~/.stigmer/data/artifacts). This one directory is
28
+ * shared by both local processes: the stigmer-server writes to it (as its
29
+ * ARTIFACT_LOCAL_BASE_PATH) and the runner reads from it (as its
30
+ * LOCAL_ARTIFACT_PATH). Owning the path here — beside logDir() and
31
+ * workspaceDir() — is what keeps the two env vars from drifting apart, the
32
+ * regression behind stigmer/stigmer#285.
33
+ */
34
+ export function artifactDir(home = homedir()) {
35
+ return join(dataDir(home), ARTIFACTS_SUBDIR);
36
+ }
24
37
  /** Downloaded-binary directory for Temporal + stigmer-server (~/.stigmer/bin). */
25
38
  export function binDir(home = homedir()) {
26
39
  return join(configDir(home), "bin");
@@ -1 +1 @@
1
- {"version":3,"file":"paths.js","sourceRoot":"","sources":["../../src/local/paths.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,EAAE;AACF,wEAAwE;AACxE,wBAAwB;AACxB,gFAAgF;AAChF,mCAAmC;AACnC,8EAA8E;AAC9E,iCAAiC;AACjC,4EAA4E;AAC5E,4EAA4E;AAC5E,kCAAkC;AAElC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAExD,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC;AAE9B,0EAA0E;AAC1E,MAAM,UAAU,MAAM,CAAC,OAAe,OAAO,EAAE;IAC7C,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC;AACrC,CAAC;AAED,+EAA+E;AAC/E,MAAM,UAAU,YAAY,CAAC,OAAe,OAAO,EAAE;IACnD,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,WAAW,CAAC,CAAC;AAC1C,CAAC;AAED,kFAAkF;AAClF,MAAM,UAAU,MAAM,CAAC,OAAe,OAAO,EAAE;IAC7C,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC;AACtC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,WAAW,CAAC,OAAe,OAAO,EAAE;IAClD,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,UAAU,CAAC,CAAC;AAC3C,CAAC;AAED,qEAAqE;AACrE,MAAM,UAAU,eAAe,CAAC,OAAe,OAAO,EAAE;IACtD,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,eAAe,CAAC,CAAC;AAChD,CAAC;AAED;mEACmE;AACnE,MAAM,UAAU,eAAe,CAAC,OAAe,OAAO,EAAE;IACtD,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,cAAc,CAAC,CAAC;AAC/C,CAAC;AAED,qEAAqE;AACrE,MAAM,UAAU,gBAAgB,CAAC,OAAe,OAAO,EAAE;IACvD,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,eAAe,CAAC,CAAC;AAChD,CAAC;AAED,gFAAgF;AAChF,MAAM,UAAU,YAAY,CAAC,OAAe,OAAO,EAAE;IACnD,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,YAAY,CAAC,CAAC;AAC7C,CAAC;AAED,+EAA+E;AAC/E,MAAM,UAAU,WAAW,CAAC,OAAe,OAAO,EAAE;IAClD,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC,CAAC;AAC1C,CAAC"}
1
+ {"version":3,"file":"paths.js","sourceRoot":"","sources":["../../src/local/paths.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,EAAE;AACF,wEAAwE;AACxE,wBAAwB;AACxB,gFAAgF;AAChF,mCAAmC;AACnC,8EAA8E;AAC9E,iCAAiC;AACjC,4EAA4E;AAC5E,4EAA4E;AAC5E,kCAAkC;AAElC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAExD,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC;AAE9B,0EAA0E;AAC1E,MAAM,UAAU,MAAM,CAAC,OAAe,OAAO,EAAE;IAC7C,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC;AACrC,CAAC;AAED,+EAA+E;AAC/E,MAAM,UAAU,YAAY,CAAC,OAAe,OAAO,EAAE;IACnD,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,WAAW,CAAC,CAAC;AAC1C,CAAC;AAED,wEAAwE;AACxE,MAAM,CAAC,MAAM,gBAAgB,GAAG,WAAW,CAAC;AAE5C;;;;;;;GAOG;AACH,MAAM,UAAU,WAAW,CAAC,OAAe,OAAO,EAAE;IAClD,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,gBAAgB,CAAC,CAAC;AAC/C,CAAC;AAED,kFAAkF;AAClF,MAAM,UAAU,MAAM,CAAC,OAAe,OAAO,EAAE;IAC7C,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC;AACtC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,WAAW,CAAC,OAAe,OAAO,EAAE;IAClD,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,UAAU,CAAC,CAAC;AAC3C,CAAC;AAED,qEAAqE;AACrE,MAAM,UAAU,eAAe,CAAC,OAAe,OAAO,EAAE;IACtD,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,eAAe,CAAC,CAAC;AAChD,CAAC;AAED;mEACmE;AACnE,MAAM,UAAU,eAAe,CAAC,OAAe,OAAO,EAAE;IACtD,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,cAAc,CAAC,CAAC;AAC/C,CAAC;AAED,qEAAqE;AACrE,MAAM,UAAU,gBAAgB,CAAC,OAAe,OAAO,EAAE;IACvD,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,eAAe,CAAC,CAAC;AAChD,CAAC;AAED,gFAAgF;AAChF,MAAM,UAAU,YAAY,CAAC,OAAe,OAAO,EAAE;IACnD,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,YAAY,CAAC,CAAC;AAC7C,CAAC;AAED,+EAA+E;AAC/E,MAAM,UAAU,WAAW,CAAC,OAAe,OAAO,EAAE;IAClD,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC,CAAC;AAC1C,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@stigmer/cli",
3
- "version": "3.8.0",
3
+ "version": "3.9.0",
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.8.0",
39
- "@stigmer/mcp-server": "3.8.0",
40
- "@stigmer/protos": "3.8.0",
41
- "@stigmer/sdk": "3.8.0",
38
+ "@stigmer/ink": "3.9.0",
39
+ "@stigmer/mcp-server": "3.9.0",
40
+ "@stigmer/protos": "3.9.0",
41
+ "@stigmer/sdk": "3.9.0",
42
42
  "commander": "^12.1.0",
43
43
  "fflate": "^0.8.3",
44
44
  "ink": "^7.0.0",
@@ -1,4 +1,5 @@
1
1
  import { describe, expect, it } from "vitest";
2
+ import { join } from "node:path";
2
3
  import { RUNNER_READY_MARKER, RUNNER_TASK_QUEUE } from "../constants.js";
3
4
  import type { DaemonConfig } from "./env.js";
4
5
  import { buildComponents, buildRunnerEnv, buildServerEnv } from "./components.js";
@@ -76,6 +77,24 @@ describe("buildRunnerEnv", () => {
76
77
  expect(runnerEnv.STIGMER_TASK_QUEUE).toBe(serverEnv.TEMPORAL_AGENT_EXECUTION_RUNNER_TASK_QUEUE);
77
78
  expect(runnerEnv.STIGMER_TASK_QUEUE).toBe(serverEnv.TEMPORAL_WORKFLOW_EXECUTION_RUNNER_TASK_QUEUE);
78
79
  });
80
+
81
+ // #285 regression guard: the server's artifact base and the runner's artifact
82
+ // path must be the SAME directory, or a storage-key attachment the server
83
+ // wrote fails to resolve when the runner reads it back. Both must be defined
84
+ // (a naive `runnerEnv.X === serverEnv.Y` would pass vacuously on
85
+ // undefined === undefined) and equal to the ~/.stigmer/data/artifacts root.
86
+ it("pins the runner's artifact path to the server's artifact base", () => {
87
+ const serverEnv = buildServerEnv(config, {});
88
+ const runnerEnv = buildRunnerEnv(config, {});
89
+ const expected = join(config.dataDir, "artifacts");
90
+
91
+ expect(serverEnv.ARTIFACT_LOCAL_BASE_PATH).toBe(expected);
92
+ expect(runnerEnv.LOCAL_ARTIFACT_PATH).toBe(expected);
93
+ expect(runnerEnv.LOCAL_ARTIFACT_PATH).toBe(serverEnv.ARTIFACT_LOCAL_BASE_PATH);
94
+ expect(runnerEnv.ARTIFACT_STORAGE_TYPE).toBe("local");
95
+ // Serve URL pinned to the server's artifact HTTP port (GRPC_PORT + 1).
96
+ expect(runnerEnv.LOCAL_ARTIFACT_SERVE_URL).toBe("http://localhost:7235");
97
+ });
79
98
  });
80
99
 
81
100
  describe("buildComponents", () => {
@@ -9,6 +9,7 @@
9
9
 
10
10
  import { dirname, join } from "node:path";
11
11
  import { RUNNER_TASK_QUEUE, RUNNER_READY_MARKER, SERVER_PID_FILE, RUNNER_PID_FILE, SERVER_PORT, TEMPORAL_NAMESPACE } from "../constants.js";
12
+ import { ARTIFACTS_SUBDIR } from "../paths.js";
12
13
  import { waitForTcp } from "../net/tcp.js";
13
14
  import type { DaemonConfig } from "./env.js";
14
15
  import type { ComponentSpec, ReadinessGate } from "./types.js";
@@ -31,6 +32,10 @@ export function buildServerEnv(config: DaemonConfig, base: NodeJS.ProcessEnv = p
31
32
  TEMPORAL_WORKFLOW_EXECUTION_RUNNER_TASK_QUEUE: RUNNER_TASK_QUEUE,
32
33
  DB_PATH: join(configDir, "stigmer.db"),
33
34
  STORAGE_PATH: join(configDir, "storage"),
35
+ // The artifact root the runner also reads (#285). Set explicitly rather
36
+ // than relying on the server's compiled default so the shared-store contract
37
+ // is visible and enforceable here, next to the runner's LOCAL_ARTIFACT_PATH.
38
+ ARTIFACT_LOCAL_BASE_PATH: join(config.dataDir, ARTIFACTS_SUBDIR),
34
39
  };
35
40
  }
36
41
 
@@ -49,6 +54,12 @@ export function buildRunnerEnv(config: DaemonConfig, base: NodeJS.ProcessEnv = p
49
54
  WORKSPACE_ROOT_DIR: join(config.dataDir, "workspace"),
50
55
  STIGMER_TASK_QUEUE: RUNNER_TASK_QUEUE,
51
56
  LOG_LEVEL: base.LOG_LEVEL ?? "info",
57
+ // Read artifacts from the exact directory the server writes to (#285), and
58
+ // pin the serve URL to the server's artifact HTTP port (GRPC_PORT + 1)
59
+ // rather than leaving two independent defaults to agree by luck.
60
+ ARTIFACT_STORAGE_TYPE: "local",
61
+ LOCAL_ARTIFACT_PATH: join(config.dataDir, ARTIFACTS_SUBDIR),
62
+ LOCAL_ARTIFACT_SERVE_URL: `http://localhost:${SERVER_PORT + 1}`,
52
63
  };
53
64
  if (config.cursorApiKey !== undefined) env.CURSOR_API_KEY = config.cursorApiKey;
54
65
  // Explicit set (after the base spread) so the launcher-resolved key wins over any
@@ -26,6 +26,21 @@ export function workspaceDir(home: string = homedir()): string {
26
26
  return join(dataDir(home), "workspace");
27
27
  }
28
28
 
29
+ /** Subdirectory name of the local artifact store under the data dir. */
30
+ export const ARTIFACTS_SUBDIR = "artifacts";
31
+
32
+ /**
33
+ * Local artifact store root (~/.stigmer/data/artifacts). This one directory is
34
+ * shared by both local processes: the stigmer-server writes to it (as its
35
+ * ARTIFACT_LOCAL_BASE_PATH) and the runner reads from it (as its
36
+ * LOCAL_ARTIFACT_PATH). Owning the path here — beside logDir() and
37
+ * workspaceDir() — is what keeps the two env vars from drifting apart, the
38
+ * regression behind stigmer/stigmer#285.
39
+ */
40
+ export function artifactDir(home: string = homedir()): string {
41
+ return join(dataDir(home), ARTIFACTS_SUBDIR);
42
+ }
43
+
29
44
  /** Downloaded-binary directory for Temporal + stigmer-server (~/.stigmer/bin). */
30
45
  export function binDir(home: string = homedir()): string {
31
46
  return join(configDir(home), "bin");