@sapiom/harness 0.2.5 → 0.2.6
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/CHANGELOG.md +14 -0
- package/README.md +9 -9
- package/dist/cli/banner.d.ts +12 -0
- package/dist/cli/banner.d.ts.map +1 -0
- package/dist/cli/banner.js +21 -0
- package/dist/cli/banner.js.map +1 -0
- package/dist/cli/bin.js +4 -19
- package/dist/cli/bin.js.map +1 -1
- package/dist/cli/consent.js +3 -3
- package/dist/core/canvas-body.js +3 -3
- package/dist/core/canvas-body.js.map +1 -1
- package/dist/core/canvas-graph.js +1 -1
- package/dist/core/canvas-graph.js.map +1 -1
- package/dist/core/canvas-template.js +12 -12
- package/dist/core/example-seed.js +4 -4
- package/dist/core/inject/mcp-config.d.ts +9 -0
- package/dist/core/inject/mcp-config.d.ts.map +1 -1
- package/dist/core/inject/mcp-config.js +7 -3
- package/dist/core/inject/mcp-config.js.map +1 -1
- package/dist/core/macro-runner.js +1 -1
- package/dist/core/macro-runner.js.map +1 -1
- package/dist/core/macros.d.ts.map +1 -1
- package/dist/core/macros.js +16 -1
- package/dist/core/macros.js.map +1 -1
- package/dist/core/resume-brief.js +7 -7
- package/dist/core/resume-brief.js.map +1 -1
- package/dist/core/rolling-summary.js +1 -1
- package/dist/core/rolling-summary.js.map +1 -1
- package/dist/core/session-manager.d.ts +10 -12
- package/dist/core/session-manager.d.ts.map +1 -1
- package/dist/core/session-manager.js +8 -9
- package/dist/core/session-manager.js.map +1 -1
- package/dist/core/workspace-context.d.ts +30 -16
- package/dist/core/workspace-context.d.ts.map +1 -1
- package/dist/core/workspace-context.js +142 -46
- package/dist/core/workspace-context.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/profiles/default.d.ts.map +1 -1
- package/dist/profiles/default.js +29 -21
- package/dist/profiles/default.js.map +1 -1
- package/dist/server/actions.js +2 -2
- package/dist/server/actions.js.map +1 -1
- package/dist/server/canvas.js +2 -2
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +27 -22
- package/dist/server/index.js.map +1 -1
- package/dist/server/rest.js +1 -1
- package/dist/server/rest.js.map +1 -1
- package/dist/server/static.js +2 -2
- package/dist/shared/branding.d.ts +3 -0
- package/dist/shared/branding.d.ts.map +1 -0
- package/dist/shared/branding.js +3 -0
- package/dist/shared/branding.js.map +1 -0
- package/dist/shared/types.d.ts +18 -16
- package/dist/shared/types.d.ts.map +1 -1
- package/dist/shared/types.js +4 -4
- package/dist/web/assets/{index-AmeDnue_.css → index-AAGKe1y6.css} +1 -1
- package/dist/web/assets/index-B-3_hl8M.js +448 -0
- package/dist/web/canvas/sess-boot/index.html +2 -2
- package/dist/web/index.html +3 -3
- package/package.json +6 -6
- package/dist/web/assets/index-DHqjuwrG.js +0 -447
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,19 @@
|
|
|
1
1
|
# @sapiom/harness
|
|
2
2
|
|
|
3
|
+
## 0.2.6
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- 824eb1e: Use Agent terminology across generated Canvas content, server errors, and demo fixtures.
|
|
8
|
+
- 368125b: Normalize Agent Studio shell terminology and route dashboard links to the canonical Agents page.
|
|
9
|
+
- addb63c: Clarify Agent Studio coding-agent prompts, resume metadata, and authoring action labels.
|
|
10
|
+
- 9199e10: Use Agent and Agent run terminology throughout the Canvas and Steps interfaces.
|
|
11
|
+
- 94584a2: Guard visible Agent Studio terminology and share the product name across CLI and desktop hosts.
|
|
12
|
+
- Updated dependencies [40d1c64]
|
|
13
|
+
- Updated dependencies [be2b81b]
|
|
14
|
+
- @sapiom/agent-core@0.10.0
|
|
15
|
+
- @sapiom/mcp@0.12.0
|
|
16
|
+
|
|
3
17
|
## 0.2.5
|
|
4
18
|
|
|
5
19
|
### Patch Changes
|
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Agent Studio
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Agent Studio is a local web app for building on Sapiom with your own coding agent.
|
|
4
4
|
|
|
5
5
|
```bash
|
|
6
6
|
npx @sapiom/harness [dir]
|
|
@@ -8,20 +8,20 @@ npx @sapiom/harness [dir]
|
|
|
8
8
|
sapiom dev [dir]
|
|
9
9
|
```
|
|
10
10
|
|
|
11
|
-
One command
|
|
12
|
-
with your coding agent (Claude Code
|
|
13
|
-
terminal — pre-wired with the Sapiom MCP servers and
|
|
11
|
+
One command checks your environment, signs you in, and opens Agent Studio
|
|
12
|
+
with your coding agent (Claude Code or Codex) running in an embedded
|
|
13
|
+
terminal — pre-wired with the Sapiom MCP servers and an agent-authoring
|
|
14
14
|
system prompt, in whatever project directory you choose.
|
|
15
15
|
|
|
16
16
|
## What you get
|
|
17
17
|
|
|
18
18
|
- **Terminal sessions** — your agent, your subscription, your machine; the
|
|
19
|
-
|
|
20
|
-
- **
|
|
19
|
+
Agent Studio only configures it. Multiple sessions, resumable chat history.
|
|
20
|
+
- **Agents rail** — agent projects (`sapiom.json`) discovered and
|
|
21
21
|
tracked, with one-click local test run, deploy, production run, and
|
|
22
22
|
open-in-Sapiom actions.
|
|
23
23
|
- **Canvas** — a live pane that renders static HTML your agent writes to
|
|
24
|
-
`.sapiom/canvas/` (visualize your
|
|
24
|
+
`.sapiom/canvas/` (visualize your agent, your docs, anything), plus a
|
|
25
25
|
preview mode for dev servers the agent starts.
|
|
26
26
|
- **Zero config mutation** — everything is injected per-session via flags;
|
|
27
27
|
your global agent settings are never touched.
|
|
@@ -30,7 +30,7 @@ Uninstall: `rm -rf ~/.sapiom/harness` (all harness-owned state lives there).
|
|
|
30
30
|
|
|
31
31
|
## Telemetry
|
|
32
32
|
|
|
33
|
-
With explicit opt-in,
|
|
33
|
+
With explicit opt-in, Agent Studio collects usage events (prompts, tool calls,
|
|
34
34
|
session lifecycle) to improve Sapiom. Opt out any time; `--no-telemetry`
|
|
35
35
|
disables collection entirely. Events are also written locally to
|
|
36
36
|
`~/.sapiom/harness/events.ndjson` for your own inspection.
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { HarnessIdentity } from "./auth.js";
|
|
2
|
+
export interface PrintBannerOptions {
|
|
3
|
+
dir: string;
|
|
4
|
+
port: number;
|
|
5
|
+
bootToken: string;
|
|
6
|
+
identity: Pick<HarnessIdentity, "organizationName" | "userId" | "source"> | null;
|
|
7
|
+
telemetryOptIn: boolean;
|
|
8
|
+
serverStarted: boolean;
|
|
9
|
+
}
|
|
10
|
+
/** Print the real CLI host banner after the Studio server boot attempt. */
|
|
11
|
+
export declare function printBanner(opts: PrintBannerOptions): void;
|
|
12
|
+
//# sourceMappingURL=banner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"banner.d.ts","sourceRoot":"","sources":["../../src/cli/banner.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAGjD,MAAM,WAAW,kBAAkB;IACjC,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,IAAI,CACZ,eAAe,EACf,kBAAkB,GAAG,QAAQ,GAAG,QAAQ,CACzC,GAAG,IAAI,CAAC;IACT,cAAc,EAAE,OAAO,CAAC;IACxB,aAAa,EAAE,OAAO,CAAC;CACxB;AAED,2EAA2E;AAC3E,wBAAgB,WAAW,CAAC,IAAI,EAAE,kBAAkB,GAAG,IAAI,CAwB1D"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { AGENT_STUDIO_PRODUCT_NAME } from "../shared/branding.js";
|
|
2
|
+
/** Print the real CLI host banner after the Studio server boot attempt. */
|
|
3
|
+
export function printBanner(opts) {
|
|
4
|
+
const authLine = opts.identity
|
|
5
|
+
? `${opts.identity.organizationName} (${opts.identity.userId})${opts.identity.source === "cached" ? " — cached" : ""}`
|
|
6
|
+
: "not authenticated";
|
|
7
|
+
console.log("");
|
|
8
|
+
console.log(` ${AGENT_STUDIO_PRODUCT_NAME}`);
|
|
9
|
+
console.log(" ------------");
|
|
10
|
+
console.log(` directory ${opts.dir}`);
|
|
11
|
+
console.log(` auth ${authLine}`);
|
|
12
|
+
console.log(` telemetry ${opts.telemetryOptIn ? "on" : "off"}`);
|
|
13
|
+
// Always the full tokened URL — with --no-open (or a browser that failed
|
|
14
|
+
// to launch) this is the only way to reach the app; a bare host:port
|
|
15
|
+
// 401s on every /api call and can't open the WS connections.
|
|
16
|
+
console.log(` url ${opts.serverStarted
|
|
17
|
+
? `http://localhost:${opts.port}/?token=${opts.bootToken}`
|
|
18
|
+
: "(server not started)"}`);
|
|
19
|
+
console.log("");
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=banner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"banner.js","sourceRoot":"","sources":["../../src/cli/banner.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAC;AAclE,2EAA2E;AAC3E,MAAM,UAAU,WAAW,CAAC,IAAwB;IAClD,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ;QAC5B,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,gBAAgB,KAAK,IAAI,CAAC,QAAQ,CAAC,MAAM,IACxD,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EACpD,EAAE;QACJ,CAAC,CAAC,mBAAmB,CAAC;IAExB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,KAAK,yBAAyB,EAAE,CAAC,CAAC;IAC9C,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;IAC9B,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;IACzC,OAAO,CAAC,GAAG,CAAC,iBAAiB,QAAQ,EAAE,CAAC,CAAC;IACzC,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;IACnE,yEAAyE;IACzE,qEAAqE;IACrE,6DAA6D;IAC7D,OAAO,CAAC,GAAG,CACT,iBACE,IAAI,CAAC,aAAa;QAChB,CAAC,CAAC,oBAAoB,IAAI,CAAC,IAAI,WAAW,IAAI,CAAC,SAAS,EAAE;QAC1D,CAAC,CAAC,sBACN,EAAE,CACH,CAAC;IACF,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAClB,CAAC"}
|
package/dist/cli/bin.js
CHANGED
|
@@ -17,34 +17,19 @@ import * as crypto from "node:crypto";
|
|
|
17
17
|
import open from "open";
|
|
18
18
|
import { runDoctor, printDoctorReport, pickDefaultHarness, CLAUDE_INSTALL_COMMAND, CODEX_INSTALL_COMMAND, } from "./doctor.js";
|
|
19
19
|
import { ensureAuthenticated } from "./auth.js";
|
|
20
|
+
import { printBanner } from "./banner.js";
|
|
20
21
|
import { ensureConsent } from "./consent.js";
|
|
21
22
|
import { loadSettings, recordRecentDir } from "./settings.js";
|
|
22
23
|
import { getOrCreateMachineId } from "./machine-id.js";
|
|
23
24
|
import { resolveStatePaths } from "../core/paths.js";
|
|
24
25
|
import { parseArgs } from "./args.js";
|
|
25
26
|
import { startServer } from "../server/index.js";
|
|
26
|
-
function printBanner(opts) {
|
|
27
|
-
const authLine = opts.identity
|
|
28
|
-
? `${opts.identity.organizationName} (${opts.identity.userId})${opts.identity.source === "cached" ? " — cached" : ""}`
|
|
29
|
-
: "not authenticated";
|
|
30
|
-
console.log("");
|
|
31
|
-
console.log(" Sapiom Studio");
|
|
32
|
-
console.log(" -------------");
|
|
33
|
-
console.log(` directory ${opts.dir}`);
|
|
34
|
-
console.log(` auth ${authLine}`);
|
|
35
|
-
console.log(` telemetry ${opts.telemetryOptIn ? "on" : "off"}`);
|
|
36
|
-
// Always the full tokened URL — with --no-open (or a browser that failed
|
|
37
|
-
// to launch) this is the only way to reach the app; a bare host:port
|
|
38
|
-
// 401s on every /api call and can't open the WS connections.
|
|
39
|
-
console.log(` url ${opts.serverStarted ? `http://localhost:${opts.port}/?token=${opts.bootToken}` : "(server not started)"}`);
|
|
40
|
-
console.log("");
|
|
41
|
-
}
|
|
42
27
|
const main = async () => {
|
|
43
28
|
const options = parseArgs(process.argv.slice(2));
|
|
44
29
|
const doctorReport = await runDoctor();
|
|
45
30
|
printDoctorReport(doctorReport);
|
|
46
31
|
if (!doctorReport.ok) {
|
|
47
|
-
console.error("\
|
|
32
|
+
console.error("\nAgent Studio (`sapiom-harness`) requires Node >= 20 and at least one coding agent on PATH:\n" +
|
|
48
33
|
` Claude Code: ${CLAUDE_INSTALL_COMMAND}\n` +
|
|
49
34
|
` Codex: ${CODEX_INSTALL_COMMAND}\n` +
|
|
50
35
|
"Fix the checks above and try again.");
|
|
@@ -53,7 +38,7 @@ const main = async () => {
|
|
|
53
38
|
const defaultHarnessKind = pickDefaultHarness(doctorReport);
|
|
54
39
|
if (!doctorReport.availableHarnesses.includes("claude-code")) {
|
|
55
40
|
console.log(`\n⚠ Claude Code not found — install with: ${CLAUDE_INSTALL_COMMAND}\n` +
|
|
56
|
-
" Continuing with the Codex
|
|
41
|
+
" Continuing with the Codex coding agent.");
|
|
57
42
|
}
|
|
58
43
|
// Every piece of harness state resolves through ONE root, so --state-root
|
|
59
44
|
// relocates all of it together. Without this, firstRun and recentDirs would
|
|
@@ -108,7 +93,7 @@ const main = async () => {
|
|
|
108
93
|
if (!options.dev)
|
|
109
94
|
throw err;
|
|
110
95
|
const message = err instanceof Error ? err.message : String(err);
|
|
111
|
-
console.error(`\n⚠
|
|
96
|
+
console.error(`\n⚠ Agent Studio server is not wired up yet: ${message}`);
|
|
112
97
|
console.error("--dev flow verified (doctor → auth → consent) without a live server.\n");
|
|
113
98
|
}
|
|
114
99
|
printBanner({
|
package/dist/cli/bin.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bin.js","sourceRoot":"","sources":["../../src/cli/bin.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;GAaG;AACH,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AACtC,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EACL,SAAS,EACT,iBAAiB,EACjB,kBAAkB,EAClB,sBAAsB,EACtB,qBAAqB,GACtB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,mBAAmB,
|
|
1
|
+
{"version":3,"file":"bin.js","sourceRoot":"","sources":["../../src/cli/bin.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/consent.js
CHANGED
|
@@ -10,10 +10,10 @@ import { hasStoredSettings, loadSettings, saveSettings } from "./settings.js";
|
|
|
10
10
|
// The first-run UI opt-in lives in web/src/components/WelcomePanel.tsx.
|
|
11
11
|
const DEFAULT_TELEMETRY_OPT_IN = false;
|
|
12
12
|
const CONSENT_COPY = `
|
|
13
|
-
Help us optimize your Studio experience.
|
|
13
|
+
Help us optimize your Agent Studio experience.
|
|
14
14
|
|
|
15
|
-
With your permission,
|
|
16
|
-
you send, the tool calls your agent makes, and session lifecycle events — so we
|
|
15
|
+
With your permission, Agent Studio shares your session details — the prompts
|
|
16
|
+
you send, the tool calls your coding agent makes, and session lifecycle events — so we
|
|
17
17
|
can see where the product gets in your way and improve it for you.
|
|
18
18
|
|
|
19
19
|
This is always written locally to ~/.sapiom/harness/events.ndjson for your own
|
package/dist/core/canvas-body.js
CHANGED
|
@@ -8,7 +8,7 @@ const NODE_KIND_LABEL = {
|
|
|
8
8
|
pause: "pause / waits for input",
|
|
9
9
|
"terminal-success": "terminal · success",
|
|
10
10
|
"terminal-warn": "terminal · escalation",
|
|
11
|
-
"launched-workflow": "launches another
|
|
11
|
+
"launched-workflow": "launches another agent",
|
|
12
12
|
};
|
|
13
13
|
const NODE_KIND_ORDER = [
|
|
14
14
|
"entry",
|
|
@@ -26,7 +26,7 @@ const NODE_KIND_ORDER = [
|
|
|
26
26
|
export function buildLegendHtml(nodeKinds, edgeKinds) {
|
|
27
27
|
const items = NODE_KIND_ORDER.filter((k) => nodeKinds.has(k)).map((k) => `<span class="canvas-legend-item"><span class="canvas-legend-marker canvas-legend-marker--${k}"></span>${NODE_KIND_LABEL[k]}</span>`);
|
|
28
28
|
if (edgeKinds.has("cross")) {
|
|
29
|
-
items.push(`<span class="canvas-legend-item"><span class="canvas-legend-marker canvas-legend-marker--cross"></span>cross-
|
|
29
|
+
items.push(`<span class="canvas-legend-item"><span class="canvas-legend-marker canvas-legend-marker--cross"></span>cross-agent signal/handoff</span>`);
|
|
30
30
|
}
|
|
31
31
|
if (items.length === 0)
|
|
32
32
|
return "";
|
|
@@ -143,7 +143,7 @@ export function buildErrorPanelHtml(title, reason) {
|
|
|
143
143
|
</div>
|
|
144
144
|
</header>
|
|
145
145
|
<div class="canvas-diagram-panel">
|
|
146
|
-
<p class="canvas-empty-note">Could not extract this
|
|
146
|
+
<p class="canvas-empty-note">Could not extract this agent's step graph: ${esc(reason)}. Ask your coding agent to fix the issue (see the terminal for details) — this pane updates automatically once it builds cleanly.</p>
|
|
147
147
|
</div>
|
|
148
148
|
</section>`;
|
|
149
149
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"canvas-body.js","sourceRoot":"","sources":["../../src/core/canvas-body.ts"],"names":[],"mappings":"AAmBA,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5D,SAAS,GAAG,CAAC,CAAS;IACpB,OAAO,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AACtG,CAAC;AAOD,MAAM,eAAe,GAAmC;IACtD,KAAK,EAAE,qBAAqB;IAC5B,IAAI,EAAE,MAAM;IACZ,KAAK,EAAE,yBAAyB;IAChC,kBAAkB,EAAE,oBAAoB;IACxC,eAAe,EAAE,uBAAuB;IACxC,mBAAmB,EAAE,
|
|
1
|
+
{"version":3,"file":"canvas-body.js","sourceRoot":"","sources":["../../src/core/canvas-body.ts"],"names":[],"mappings":"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"}
|
|
@@ -114,7 +114,7 @@ export function mergeLaunchesIntoGraph(graph, launches) {
|
|
|
114
114
|
// happens to share its name.
|
|
115
115
|
const nodeId = `launch:${launch.slug}`;
|
|
116
116
|
if (!nodes.some((n) => n.id === nodeId)) {
|
|
117
|
-
nodes.push({ id: nodeId, kind: "launched-workflow", label: launch.slug, sublabel: "launched
|
|
117
|
+
nodes.push({ id: nodeId, kind: "launched-workflow", label: launch.slug, sublabel: "launched agent" });
|
|
118
118
|
}
|
|
119
119
|
const from = launch.fromStepId && stepIds.has(launch.fromStepId) ? launch.fromStepId : graph.entry;
|
|
120
120
|
const edgeKey = `${from}->${nodeId}`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"canvas-graph.js","sourceRoot":"","sources":["../../src/core/canvas-graph.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,EACL,mBAAmB,GAGpB,MAAM,8BAA8B,CAAC;AAuDtC;;;;;;;;;;;;;;;;GAgBG;AACH,SAAS,YAAY,CACnB,IAAY,EACZ,KAAa,EACb,IAAuB;IAEvB,OAAO,gBAAgB,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;AAC1E,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAIhC;IACC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,KAAK,CAAC;IAC3C,MAAM,eAAe,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC;IACzE,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC;IAC1D,MAAM,YAAY,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC;IACrE,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC;IAE3D,IAAI,IAAI,KAAK,KAAK;QAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;IAChE,IAAI,KAAK;QAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,WAAW,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;IACzE,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,IAAI,CAAC,YAAY;QAC1D,OAAO,EAAE,IAAI,EAAE,eAAe,EAAE,QAAQ,EAAE,4BAA4B,EAAE,CAAC;IAC3E,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,IAAI,YAAY;QAC9C,OAAO,EAAE,IAAI,EAAE,kBAAkB,EAAE,QAAQ,EAAE,oBAAoB,EAAE,CAAC;IACtE,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,YAAY,IAAI,OAAO,CAAC,EAAE,CAAC;QAC5D,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,2BAA2B,EAAE,CAAC;IACpG,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;AAC5C,CAAC;AAED;;iEAEiE;AACjE,SAAS,YAAY,CAAC,IAAY,EAAE,IAAuB;IACzD,MAAM,eAAe,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC;IAC9E,MAAM,KAAK,GAAiB,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACtD,IAAI,EAAE,IAAI;QACV,EAAE,EAAE,CAAC,CAAC,MAAM;QACZ,IAAI,EAAE,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY;KAC9D,CAAC,CAAC,CAAC;IACJ,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC;IAC/D,IAAI,KAAK,EAAE,CAAC;QACV,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,CAAC,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;IACvF,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,8EAA8E;AAC9E,MAAM,UAAU,iBAAiB,CAAC,QAAuB,EAAE,QAAkB;IAC3E,MAAM,KAAK,GAAiB,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE;QAC9E,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,YAAY,CAAC,IAAI,EAAE,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QACpE,OAAO;YACL,EAAE,EAAE,IAAI;YACR,IAAI;YACJ,KAAK,EAAE,IAAI;YACX,QAAQ;YACR,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,EAAE;YACnC,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,IAAI;YACrC,YAAY,EAAE,IAAI,CAAC,YAAY,IAAI,EAAE;YACrC,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,IAAI;SAClC,CAAC;IACJ,CAAC,CAAC,CAAC;IACH,MAAM,KAAK,GAAiB,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,CAClF,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,CACzB,CAAC;IACF,OAAO;QACL,YAAY,EAAE,QAAQ,CAAC,IAAI;QAC3B,WAAW,EAAE,QAAQ,CAAC,WAAW,IAAI,EAAE;QACvC,KAAK,EAAE,QAAQ,CAAC,KAAK;QACrB,KAAK;QACL,KAAK;QACL,QAAQ;KACT,CAAC;AACJ,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,sBAAsB,CAAC,KAAkB,EAAE,QAAmC;IAC5F,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACtD,MAAM,KAAK,GAAG,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;IAC/B,MAAM,KAAK,GAAG,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;IAC/B,MAAM,SAAS,GAAG,IAAI,GAAG,EAAU,CAAC;IAEpC,KAAK,MAAM,MAAM,IAAI,QAAQ,EAAE,CAAC;QAC9B,IAAI,MAAM,CAAC,IAAI,KAAK,KAAK,CAAC,YAAY;YAAE,SAAS;QACjD,wEAAwE;QACxE,6BAA6B;QAC7B,MAAM,MAAM,GAAG,UAAU,MAAM,CAAC,IAAI,EAAE,CAAC;QACvC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,EAAE,CAAC;YACxC,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,mBAAmB,EAAE,KAAK,EAAE,MAAM,CAAC,IAAI,EAAE,QAAQ,EAAE,
|
|
1
|
+
{"version":3,"file":"canvas-graph.js","sourceRoot":"","sources":["../../src/core/canvas-graph.ts"],"names":[],"mappings":"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"}
|
|
@@ -133,7 +133,7 @@ body {
|
|
|
133
133
|
.canvas-group-band { fill: var(--canvas-accent); fill-opacity: 0.06; stroke: var(--canvas-border); stroke-dasharray: 3 5; }
|
|
134
134
|
.canvas-group-label { fill: var(--canvas-text-dim); font-size: 9px; text-transform: uppercase; letter-spacing: 0.06em; }
|
|
135
135
|
|
|
136
|
-
/* --- edge kinds: sequential (base) | branching (--success/--warn) | cross-
|
|
136
|
+
/* --- edge kinds: sequential (base) | branching (--success/--warn) | cross-agent signal/handoff (--cross) --- */
|
|
137
137
|
.canvas-edge { fill: none; stroke-width: 1.8; stroke: var(--canvas-border-strong); }
|
|
138
138
|
.canvas-edge--success { stroke: var(--canvas-success); }
|
|
139
139
|
.canvas-edge--warn { stroke: var(--canvas-escalation); }
|
|
@@ -248,7 +248,7 @@ const THEME_SCRIPT = `
|
|
|
248
248
|
const PATTERNS_TEMPLATE = `
|
|
249
249
|
<template id="canvas-patterns">
|
|
250
250
|
<!-- copy the pattern you need; this whole block is never rendered -->
|
|
251
|
-
<span class="canvas-badge">standalone
|
|
251
|
+
<span class="canvas-badge">standalone agent</span>
|
|
252
252
|
<div class="canvas-stat"><span class="canvas-stat-value">5</span><span class="canvas-stat-label">steps</span></div>
|
|
253
253
|
<svg>
|
|
254
254
|
<g class="canvas-node node--entry" filter="url(#canvas-glow)" transform="translate(392,40)">
|
|
@@ -280,7 +280,7 @@ const PATTERNS_TEMPLATE = `
|
|
|
280
280
|
<!-- branching: a step with multiple successors -> curved, colored by the destination's outcome -->
|
|
281
281
|
<path class="canvas-edge canvas-edge--success" d="M480,320 C480,365 288,365 288,410" marker-end="url(#canvas-arrow-success)" />
|
|
282
282
|
<path class="canvas-edge canvas-edge--warn" d="M480,320 C480,365 688,365 688,410" marker-end="url(#canvas-arrow-warn)" />
|
|
283
|
-
<!-- cross-
|
|
283
|
+
<!-- cross-agent signal/handoff: dashed, always neutral -->
|
|
284
284
|
<path class="canvas-edge canvas-edge--cross" d="M480,320 L480,410" marker-end="url(#canvas-arrow)" />
|
|
285
285
|
<!-- edge label, positioned near the branch point, anchored toward its own destination -->
|
|
286
286
|
<text class="canvas-edge-label" x="440" y="345" text-anchor="end">category == x</text>
|
|
@@ -296,7 +296,7 @@ const PATTERNS_TEMPLATE = `
|
|
|
296
296
|
<span class="canvas-legend-item"><span class="canvas-legend-marker canvas-legend-marker--pause"></span>pause / waits for input</span>
|
|
297
297
|
<span class="canvas-legend-item"><span class="canvas-legend-marker canvas-legend-marker--terminal-success"></span>terminal · success</span>
|
|
298
298
|
<span class="canvas-legend-item"><span class="canvas-legend-marker canvas-legend-marker--terminal-warn"></span>terminal · escalation</span>
|
|
299
|
-
<span class="canvas-legend-item"><span class="canvas-legend-marker canvas-legend-marker--cross"></span>cross-
|
|
299
|
+
<span class="canvas-legend-item"><span class="canvas-legend-marker canvas-legend-marker--cross"></span>cross-agent signal/handoff</span>
|
|
300
300
|
</template>
|
|
301
301
|
`.trim();
|
|
302
302
|
/** The `<defs>` every SVG graph needs — same glow filter and arrow markers
|
|
@@ -359,7 +359,7 @@ export function renderCanvasDocument(bodyHtml) {
|
|
|
359
359
|
<head>
|
|
360
360
|
<meta charset="UTF-8" />
|
|
361
361
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
362
|
-
<title>
|
|
362
|
+
<title>Agent Studio canvas</title>
|
|
363
363
|
<script>
|
|
364
364
|
${THEME_SCRIPT}
|
|
365
365
|
</script>
|
|
@@ -382,27 +382,27 @@ ${bodyHtml}
|
|
|
382
382
|
const TEMPLATE_BODY = `
|
|
383
383
|
<!--
|
|
384
384
|
═══════════════════════════════════════════════════════════════════════
|
|
385
|
-
|
|
386
|
-
|
|
385
|
+
AGENT STUDIO CANVAS TEMPLATE — fill in the sections below to visualize an
|
|
386
|
+
agent. Keep the <style> block in <head> and the structural classes
|
|
387
387
|
you see here untouched; only add markup using the patterns in the
|
|
388
388
|
<template id="canvas-patterns"> block near the end of <body> (it is
|
|
389
389
|
never rendered — read it, copy from it, don't edit it). Delete the
|
|
390
390
|
empty-state note below and the patterns template once you're done
|
|
391
|
-
authoring. For a single bound
|
|
392
|
-
a workspace overview, add one canvas-panel per
|
|
391
|
+
authoring. For a single bound agent, one canvas-panel is enough; for
|
|
392
|
+
a workspace overview, add one canvas-panel per agent plus an
|
|
393
393
|
Interconnections panel (see the pattern for its row shape).
|
|
394
394
|
═══════════════════════════════════════════════════════════════════════
|
|
395
395
|
-->
|
|
396
396
|
<section class="canvas-panel">
|
|
397
397
|
<header class="canvas-header">
|
|
398
398
|
<div class="canvas-title-row">
|
|
399
|
-
<h1 class="canvas-title">Untitled
|
|
399
|
+
<h1 class="canvas-title">Untitled agent</h1>
|
|
400
400
|
</div>
|
|
401
|
-
<p class="canvas-subtitle">One-line description of what this
|
|
401
|
+
<p class="canvas-subtitle">One-line description of what this agent does.</p>
|
|
402
402
|
<div class="canvas-stats"></div>
|
|
403
403
|
</header>
|
|
404
404
|
<div class="canvas-diagram-panel">
|
|
405
|
-
<p class="canvas-empty-note">Nothing visualized yet — run Visualize on
|
|
405
|
+
<p class="canvas-empty-note">Nothing visualized yet — run Visualize on an agent.</p>
|
|
406
406
|
</div>
|
|
407
407
|
</section>
|
|
408
408
|
|
|
@@ -181,7 +181,7 @@ const ORDER_TRIAGE_CANVAS_BODY = `
|
|
|
181
181
|
<header class="canvas-header">
|
|
182
182
|
<div class="canvas-title-row">
|
|
183
183
|
<h1 class="canvas-title">order-triage</h1>
|
|
184
|
-
<span class="canvas-badge">standalone
|
|
184
|
+
<span class="canvas-badge">standalone agent</span>
|
|
185
185
|
<span class="canvas-badge">not deployed yet</span>
|
|
186
186
|
</div>
|
|
187
187
|
<p class="canvas-subtitle">Support-ticket triage: intake -> classify -> route, then auto-resolve or escalate to a human.</p>
|
|
@@ -241,7 +241,7 @@ const ORDER_TRIAGE_CANVAS_BODY = `
|
|
|
241
241
|
<span class="canvas-legend-marker canvas-legend-marker--terminal-warn"></span>
|
|
242
242
|
<span class="canvas-interconnection-title">escalate -> external</span>
|
|
243
243
|
<span class="canvas-interconnection-tag">handoff</span>
|
|
244
|
-
<p class="canvas-interconnection-desc">routes to a human out-of-band, not to another
|
|
244
|
+
<p class="canvas-interconnection-desc">routes to a human out-of-band, not to another agent</p>
|
|
245
245
|
</div>
|
|
246
246
|
</section>
|
|
247
247
|
|
|
@@ -251,9 +251,9 @@ const ORDER_TRIAGE_CANVAS_BODY = `
|
|
|
251
251
|
<span class="canvas-legend-item"><span class="canvas-legend-marker canvas-legend-marker--step"></span>step</span>
|
|
252
252
|
<span class="canvas-legend-item"><span class="canvas-legend-marker canvas-legend-marker--terminal-success"></span>terminal · success</span>
|
|
253
253
|
<span class="canvas-legend-item"><span class="canvas-legend-marker canvas-legend-marker--terminal-warn"></span>terminal · escalation</span>
|
|
254
|
-
<span class="canvas-legend-item"><span class="canvas-legend-marker canvas-legend-marker--cross"></span>cross-
|
|
254
|
+
<span class="canvas-legend-item"><span class="canvas-legend-marker canvas-legend-marker--cross"></span>cross-agent signal/handoff</span>
|
|
255
255
|
</div>
|
|
256
|
-
<p class="canvas-note">Static preview — ask your agent to regenerate this after you change the
|
|
256
|
+
<p class="canvas-note">Static preview — ask your coding agent to regenerate this after you change the agent.</p>
|
|
257
257
|
</footer>
|
|
258
258
|
`.trim();
|
|
259
259
|
/**
|
|
@@ -14,6 +14,15 @@ export interface McpConfigOptions {
|
|
|
14
14
|
/** Root directory generated configs live under. Defaults to
|
|
15
15
|
* HARNESS_PATHS.generated. Override in tests to avoid the real home dir. */
|
|
16
16
|
generatedRoot?: string;
|
|
17
|
+
/**
|
|
18
|
+
* This harness's own version, advertised to the sapiom-dev child as
|
|
19
|
+
* `SAPIOM_HARNESS_VERSION`. The MCP is `npx`'d from the registry and so has
|
|
20
|
+
* no way to know which Studio launched it; `sapiom_send_feedback` stamps this
|
|
21
|
+
* into every feedback record, which is what makes "which build is this user
|
|
22
|
+
* on" answerable during triage. Omitted when absent — the tool leaves the
|
|
23
|
+
* field out rather than inventing an "unknown".
|
|
24
|
+
*/
|
|
25
|
+
harnessVersion?: string;
|
|
17
26
|
}
|
|
18
27
|
/**
|
|
19
28
|
* Writes the `--mcp-config` file for a harness session: the remote HTTP
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-config.d.ts","sourceRoot":"","sources":["../../../src/core/inject/mcp-config.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,gBAAgB;IAC/B,0EAA0E;IAC1E,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;;;;;OAQG;IACH,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB;iFAC6E;IAC7E,aAAa,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"mcp-config.d.ts","sourceRoot":"","sources":["../../../src/core/inject/mcp-config.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,gBAAgB;IAC/B,0EAA0E;IAC1E,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;;;;;OAQG;IACH,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB;iFAC6E;IAC7E,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;;;;;OAOG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;;;;;GAMG;AACH,wBAAsB,iBAAiB,CACrC,gBAAgB,EAAE,MAAM,EACxB,OAAO,GAAE,gBAAqB,GAC7B,OAAO,CAAC,MAAM,CAAC,CA0CjB"}
|
|
@@ -13,9 +13,13 @@ export async function generateMcpConfig(harnessSessionId, options = {}) {
|
|
|
13
13
|
const dir = path.join(expandHome(options.generatedRoot ?? HARNESS_PATHS.generated), harnessSessionId);
|
|
14
14
|
await fs.mkdir(dir, { recursive: true });
|
|
15
15
|
const sapiomEnvironment = options.environment ?? process.env.SAPIOM_ENVIRONMENT;
|
|
16
|
-
const
|
|
17
|
-
? { SAPIOM_ENVIRONMENT: sapiomEnvironment }
|
|
18
|
-
|
|
16
|
+
const devEnvEntries = {
|
|
17
|
+
...(sapiomEnvironment ? { SAPIOM_ENVIRONMENT: sapiomEnvironment } : {}),
|
|
18
|
+
...(options.harnessVersion
|
|
19
|
+
? { SAPIOM_HARNESS_VERSION: options.harnessVersion }
|
|
20
|
+
: {}),
|
|
21
|
+
};
|
|
22
|
+
const devEnv = Object.keys(devEnvEntries).length > 0 ? devEnvEntries : undefined;
|
|
19
23
|
const config = {
|
|
20
24
|
mcpServers: {
|
|
21
25
|
sapiom: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-config.js","sourceRoot":"","sources":["../../../src/core/inject/mcp-config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"mcp-config.js","sourceRoot":"","sources":["../../../src/core/inject/mcp-config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AA6BhD;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,gBAAwB,EACxB,UAA4B,EAAE;IAE9B,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,aAAa,IAAI,aAAa,CAAC,SAAS,CAAC,EAAE,gBAAgB,CAAC,CAAC;IACtG,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAEzC,MAAM,iBAAiB,GAAG,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC;IAChF,MAAM,aAAa,GAA2B;QAC5C,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACvE,GAAG,CAAC,OAAO,CAAC,cAAc;YACxB,CAAC,CAAC,EAAE,sBAAsB,EAAE,OAAO,CAAC,cAAc,EAAE;YACpD,CAAC,CAAC,EAAE,CAAC;KACR,CAAC;IACF,MAAM,MAAM,GACV,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC;IAEpE,MAAM,MAAM,GAAG;QACb,UAAU,EAAE;YACV,MAAM,EAAE;gBACN,IAAI,EAAE,MAAM;gBACZ,GAAG,EAAE,8BAA8B;gBACnC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,WAAW,EAAE,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACxE;YACD,YAAY,EAAE;gBACZ,OAAO,EAAE,KAAK;gBACd,uEAAuE;gBACvE,2DAA2D;gBAC3D,qEAAqE;gBACrE,uEAAuE;gBACvE,oEAAoE;gBACpE,iEAAiE;gBACjE,gEAAgE;gBAChE,sEAAsE;gBACtE,IAAI,EAAE,CAAC,IAAI,EAAE,oBAAoB,CAAC;gBAClC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACnC;SACF;KACF,CAAC;IAEF,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,iBAAiB,CAAC,CAAC;IACnD,yEAAyE;IACzE,oEAAoE;IACpE,MAAM,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IACtF,OAAO,QAAQ,CAAC;AAClB,CAAC"}
|
|
@@ -68,7 +68,7 @@ function substitute(template, ctx) {
|
|
|
68
68
|
*/
|
|
69
69
|
export function resolveMacro(macro, ctx) {
|
|
70
70
|
if (macro.requiresWorkflow && !ctx.workflow) {
|
|
71
|
-
throw new MacroValidationError(`Macro '${macro.id}' requires a selected
|
|
71
|
+
throw new MacroValidationError(`Macro '${macro.id}' requires a selected agent.`);
|
|
72
72
|
}
|
|
73
73
|
if (macro.action.kind === "open-url") {
|
|
74
74
|
return { kind: "open-url", url: substitute(macro.action.url, ctx) };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"macro-runner.js","sourceRoot":"","sources":["../../src/core/macro-runner.ts"],"names":[],"mappings":"AAuBA,MAAM,OAAO,oBAAqB,SAAQ,KAAK;IAC7C,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,sBAAsB,CAAC;IACrC,CAAC;CACF;AAED,MAAM,mBAAmB,GAAG,qBAAqB,CAAC;AAElD;;;;;;;;;;GAUG;AACH,SAAS,UAAU,CAAC,CAAS;IAC3B,OAAO,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,GAAG,CAAC;AAC9C,CAAC;AAUD,SAAS,gBAAgB,CAAC,GAAiB;IACzC,OAAO;QACL,sEAAsE;QACtE,0EAA0E;QAC1E,mBAAmB,EAAE;YACnB,SAAS,EAAE,GAAG,CAAC,QAAQ,IAAI,IAAI;YAC/B,KAAK,EAAE,GAAG,CAAC,QAAQ,IAAI,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE;SACjE;QACD,mBAAmB,EAAE,EAAE,SAAS,EAAE,GAAG,CAAC,QAAQ,IAAI,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,QAAQ,EAAE,IAAI,IAAI,EAAE,EAAE;QACzF,2BAA2B,EAAE;YAC3B,SAAS,EAAE,GAAG,CAAC,QAAQ,EAAE,YAAY,IAAI,IAAI;YAC7C,KAAK,EAAE,GAAG,CAAC,QAAQ,EAAE,YAAY,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE;SACnF;QACD,iBAAiB,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,UAAU,EAAE;QAC7D,iBAAiB,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,UAAU,EAAE;QAC7D,aAAa,EAAE,EAAE,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,OAAO,IAAI,EAAE,EAAE;KAC7E,CAAC;AACJ,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,UAAU,CAAC,QAAgB,EAAE,GAAiB;IACrD,MAAM,KAAK,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC;IACpC,MAAM,OAAO,GAAa,EAAE,CAAC;IAE7B,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,mBAAmB,EAAE,CAAC,KAAK,EAAE,EAAE;QAC7D,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;QAC3B,IAAI,CAAC,KAAK;YAAE,OAAO,KAAK,CAAC;QACzB,IAAI,CAAC,KAAK,CAAC,SAAS;YAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC1C,OAAO,KAAK,CAAC,KAAK,CAAC;IACrB,CAAC,CAAC,CAAC;IAEH,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,oBAAoB,CAAC,uBAAuB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC9E,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAAC,KAAe,EAAE,GAAiB;IAC7D,IAAI,KAAK,CAAC,gBAAgB,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;QAC5C,MAAM,IAAI,oBAAoB,CAAC,UAAU,KAAK,CAAC,EAAE,
|
|
1
|
+
{"version":3,"file":"macro-runner.js","sourceRoot":"","sources":["../../src/core/macro-runner.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"macros.d.ts","sourceRoot":"","sources":["../../src/core/macros.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAEnD,eAAO,MAAM,cAAc,EAAE,QAAQ,
|
|
1
|
+
{"version":3,"file":"macros.d.ts","sourceRoot":"","sources":["../../src/core/macros.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAEnD,eAAO,MAAM,cAAc,EAAE,QAAQ,EA0EpC,CAAC"}
|
package/dist/core/macros.js
CHANGED
|
@@ -42,7 +42,7 @@ export const DEFAULT_MACROS = [
|
|
|
42
42
|
requiresWorkflow: true,
|
|
43
43
|
action: {
|
|
44
44
|
kind: "open-url",
|
|
45
|
-
url: "https://app.sapiom.ai/
|
|
45
|
+
url: "https://app.sapiom.ai/agents/{{workflow.definitionId}}",
|
|
46
46
|
},
|
|
47
47
|
},
|
|
48
48
|
{
|
|
@@ -57,5 +57,20 @@ export const DEFAULT_MACROS = [
|
|
|
57
57
|
requiresWorkflow: false,
|
|
58
58
|
action: { kind: "render-canvas" },
|
|
59
59
|
},
|
|
60
|
+
{
|
|
61
|
+
// "Describe with AI": runs the bound agent HEADLESS (claude -p, no pty, no
|
|
62
|
+
// board takeover) to author the `description` fields in the workflow
|
|
63
|
+
// source. execution:"background" routes it to the TaskManager instead of
|
|
64
|
+
// the interactive terminal; the prompt is passed as {{subject}} (the SPA
|
|
65
|
+
// builds it, web/src/lib/describe-prompt.ts). The source watcher re-renders
|
|
66
|
+
// the canvas on save. Invoked programmatically (the canvas overview button),
|
|
67
|
+
// never rendered in the action rail.
|
|
68
|
+
id: "describe",
|
|
69
|
+
label: "Describe with AI",
|
|
70
|
+
icon: "Sparkles",
|
|
71
|
+
requiresWorkflow: true,
|
|
72
|
+
action: { kind: "inject", submit: true, text: "{{subject}}" },
|
|
73
|
+
execution: "background",
|
|
74
|
+
},
|
|
60
75
|
];
|
|
61
76
|
//# sourceMappingURL=macros.js.map
|
package/dist/core/macros.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"macros.js","sourceRoot":"","sources":["../../src/core/macros.ts"],"names":[],"mappings":"AASA,MAAM,CAAC,MAAM,cAAc,GAAe;IACxC;QACE,EAAE,EAAE,WAAW;QACf,KAAK,EAAE,WAAW;QAClB,IAAI,EAAE,MAAM;QACZ,gBAAgB,EAAE,IAAI;QACtB,MAAM,EAAE;YACN,IAAI,EAAE,QAAQ;YACd,MAAM,EAAE,IAAI;YACZ,+EAA+E;YAC/E,yEAAyE;YACzE,qDAAqD;YACrD,IAAI,EAAE,0DAA0D;SACjE;KACF;IACD;QACE,EAAE,EAAE,QAAQ;QACZ,KAAK,EAAE,QAAQ;QACf,IAAI,EAAE,OAAO;QACb,gBAAgB,EAAE,IAAI;QACtB,MAAM,EAAE;YACN,IAAI,EAAE,QAAQ;YACd,MAAM,EAAE,IAAI;YACZ,IAAI,EAAE,8CAA8C;SACrD;KACF;IACD;QACE,EAAE,EAAE,UAAU;QACd,KAAK,EAAE,UAAU;QACjB,IAAI,EAAE,KAAK;QACX,gBAAgB,EAAE,IAAI;QACtB,MAAM,EAAE;YACN,IAAI,EAAE,QAAQ;YACd,MAAM,EAAE,IAAI;YACZ,IAAI,EAAE,yDAAyD;SAChE;KACF;IACD;QACE,EAAE,EAAE,WAAW;QACf,KAAK,EAAE,WAAW;QAClB,IAAI,EAAE,cAAc;QACpB,gBAAgB,EAAE,IAAI;QACtB,MAAM,EAAE;YACN,IAAI,EAAE,UAAU;YAChB,GAAG,EAAE,
|
|
1
|
+
{"version":3,"file":"macros.js","sourceRoot":"","sources":["../../src/core/macros.ts"],"names":[],"mappings":"AASA,MAAM,CAAC,MAAM,cAAc,GAAe;IACxC;QACE,EAAE,EAAE,WAAW;QACf,KAAK,EAAE,WAAW;QAClB,IAAI,EAAE,MAAM;QACZ,gBAAgB,EAAE,IAAI;QACtB,MAAM,EAAE;YACN,IAAI,EAAE,QAAQ;YACd,MAAM,EAAE,IAAI;YACZ,+EAA+E;YAC/E,yEAAyE;YACzE,qDAAqD;YACrD,IAAI,EAAE,0DAA0D;SACjE;KACF;IACD;QACE,EAAE,EAAE,QAAQ;QACZ,KAAK,EAAE,QAAQ;QACf,IAAI,EAAE,OAAO;QACb,gBAAgB,EAAE,IAAI;QACtB,MAAM,EAAE;YACN,IAAI,EAAE,QAAQ;YACd,MAAM,EAAE,IAAI;YACZ,IAAI,EAAE,8CAA8C;SACrD;KACF;IACD;QACE,EAAE,EAAE,UAAU;QACd,KAAK,EAAE,UAAU;QACjB,IAAI,EAAE,KAAK;QACX,gBAAgB,EAAE,IAAI;QACtB,MAAM,EAAE;YACN,IAAI,EAAE,QAAQ;YACd,MAAM,EAAE,IAAI;YACZ,IAAI,EAAE,yDAAyD;SAChE;KACF;IACD;QACE,EAAE,EAAE,WAAW;QACf,KAAK,EAAE,WAAW;QAClB,IAAI,EAAE,cAAc;QACpB,gBAAgB,EAAE,IAAI;QACtB,MAAM,EAAE;YACN,IAAI,EAAE,UAAU;YAChB,GAAG,EAAE,wDAAwD;SAC9D;KACF;IACD;QACE,yEAAyE;QACzE,0EAA0E;QAC1E,iEAAiE;QACjE,yEAAyE;QACzE,sBAAsB;QACtB,EAAE,EAAE,WAAW;QACf,KAAK,EAAE,WAAW;QAClB,IAAI,EAAE,UAAU;QAChB,gBAAgB,EAAE,KAAK;QACvB,MAAM,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE;KAClC;IACD;QACE,2EAA2E;QAC3E,qEAAqE;QACrE,yEAAyE;QACzE,yEAAyE;QACzE,4EAA4E;QAC5E,6EAA6E;QAC7E,qCAAqC;QACrC,EAAE,EAAE,UAAU;QACd,KAAK,EAAE,kBAAkB;QACzB,IAAI,EAAE,UAAU;QAChB,gBAAgB,EAAE,IAAI;QACtB,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,aAAa,EAAE;QAC7D,SAAS,EAAE,YAAY;KACxB;CACF,CAAC"}
|
|
@@ -230,7 +230,7 @@ function renderTurn(turn, cwd) {
|
|
|
230
230
|
lines.push("", "**Prompt:**", "", blockquote(clamp(turn.prompt, MAX_PROMPT_CHARS)));
|
|
231
231
|
}
|
|
232
232
|
else {
|
|
233
|
-
lines.push("", "**Prompt:** _not recorded — our recording started mid-turn, or the agent started this turn itself._");
|
|
233
|
+
lines.push("", "**Prompt:** _not recorded — our recording started mid-turn, or the coding agent started this turn itself._");
|
|
234
234
|
}
|
|
235
235
|
if (turn.toolCalls.length > 0) {
|
|
236
236
|
const shown = turn.toolCalls.slice(0, MAX_TOOLS_PER_TURN).map((call) => {
|
|
@@ -260,9 +260,9 @@ function blockquote(text) {
|
|
|
260
260
|
*/
|
|
261
261
|
const HONESTY_HEADER = `# Continuing a prior session — reconstruction, not restored context
|
|
262
262
|
|
|
263
|
-
You are a **fresh session**. The agent that ran the session described below is
|
|
263
|
+
You are a **fresh session**. The coding agent that ran the session described below is
|
|
264
264
|
gone and none of its context is loaded. What follows was assembled by the
|
|
265
|
-
|
|
265
|
+
Agent Studio from its own recorded events — it is a briefing about that
|
|
266
266
|
session, not a replay of it, and it is partial by construction.
|
|
267
267
|
|
|
268
268
|
Treat every claim here as something a colleague told you, not as something you
|
|
@@ -353,17 +353,17 @@ function renderIdentity(record, options) {
|
|
|
353
353
|
lines.push(`- **Directory:** ${record.cwd ?? "not recorded"}`);
|
|
354
354
|
if (options.gitBranch)
|
|
355
355
|
lines.push(`- **Git branch:** ${options.gitBranch}`);
|
|
356
|
-
lines.push(`- **
|
|
356
|
+
lines.push(`- **Coding agent:** ${record.harness}`);
|
|
357
357
|
if (options.workflow) {
|
|
358
358
|
const { name, path: workflowPath, definitionId } = options.workflow;
|
|
359
|
-
lines.push(`- **Bound
|
|
359
|
+
lines.push(`- **Bound agent:** ${name} (\`${workflowPath}\`)${definitionId !== null ? ` — definition ${definitionId}` : " — not yet linked to a deployed definition"}`);
|
|
360
360
|
}
|
|
361
361
|
else {
|
|
362
|
-
lines.push("- **Bound
|
|
362
|
+
lines.push("- **Bound agent:** none");
|
|
363
363
|
}
|
|
364
364
|
const span = [record.startedAt, record.endedAt].filter(Boolean).join(" → ");
|
|
365
365
|
if (span)
|
|
366
|
-
lines.push(`- **
|
|
366
|
+
lines.push(`- **Session span:** ${span}`);
|
|
367
367
|
lines.push(`- **Recorded turns:** ${record.turnCount}`);
|
|
368
368
|
if (record.limitations.length > 0) {
|
|
369
369
|
lines.push("", "**Known gaps in this reconstruction:**", "");
|