@sapiom/harness 0.1.5 → 0.2.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.
- package/CHANGELOG.md +151 -0
- package/dist/cli/args.d.ts +16 -0
- package/dist/cli/args.d.ts.map +1 -0
- package/dist/cli/args.js +80 -0
- package/dist/cli/args.js.map +1 -0
- package/dist/cli/bin.js +30 -66
- package/dist/cli/bin.js.map +1 -1
- package/dist/cli/consent.js +1 -1
- package/dist/cli/settings.d.ts.map +1 -1
- package/dist/cli/settings.js +33 -1
- package/dist/cli/settings.js.map +1 -1
- package/dist/core/adapters/adapter.d.ts +2 -2
- package/dist/core/adapters/claude-code.d.ts +60 -2
- package/dist/core/adapters/claude-code.d.ts.map +1 -1
- package/dist/core/adapters/claude-code.js +119 -32
- package/dist/core/adapters/claude-code.js.map +1 -1
- package/dist/core/adapters/codex.d.ts +21 -2
- package/dist/core/adapters/codex.d.ts.map +1 -1
- package/dist/core/adapters/codex.js +53 -2
- package/dist/core/adapters/codex.js.map +1 -1
- package/dist/core/adapters/detect.d.ts +9 -0
- package/dist/core/adapters/detect.d.ts.map +1 -1
- package/dist/core/adapters/detect.js +9 -0
- package/dist/core/adapters/detect.js.map +1 -1
- package/dist/core/api-key-provider.d.ts +79 -0
- package/dist/core/api-key-provider.d.ts.map +1 -0
- package/dist/core/api-key-provider.js +91 -0
- package/dist/core/api-key-provider.js.map +1 -0
- package/dist/core/canvas-body.d.ts +28 -28
- package/dist/core/canvas-body.d.ts.map +1 -1
- package/dist/core/canvas-body.js +117 -55
- package/dist/core/canvas-body.js.map +1 -1
- package/dist/core/canvas-derive.d.ts +43 -0
- package/dist/core/canvas-derive.d.ts.map +1 -0
- package/dist/core/canvas-derive.js +95 -0
- package/dist/core/canvas-derive.js.map +1 -0
- package/dist/core/canvas-enrichment.d.ts +52 -127
- package/dist/core/canvas-enrichment.d.ts.map +1 -1
- package/dist/core/canvas-enrichment.js +17 -178
- package/dist/core/canvas-enrichment.js.map +1 -1
- package/dist/core/canvas-graph.d.ts +40 -1
- package/dist/core/canvas-graph.d.ts.map +1 -1
- package/dist/core/canvas-graph.js +71 -9
- package/dist/core/canvas-graph.js.map +1 -1
- package/dist/core/canvas-interconnections.d.ts +26 -8
- package/dist/core/canvas-interconnections.d.ts.map +1 -1
- package/dist/core/canvas-interconnections.js +132 -24
- package/dist/core/canvas-interconnections.js.map +1 -1
- package/dist/core/canvas-manifest-check.d.ts.map +1 -1
- package/dist/core/canvas-manifest-check.js +15 -2
- package/dist/core/canvas-manifest-check.js.map +1 -1
- package/dist/core/canvas-render.d.ts +8 -15
- package/dist/core/canvas-render.d.ts.map +1 -1
- package/dist/core/canvas-render.js +29 -41
- package/dist/core/canvas-render.js.map +1 -1
- package/dist/core/canvas-run-state.d.ts +50 -5
- package/dist/core/canvas-run-state.d.ts.map +1 -1
- package/dist/core/canvas-run-state.js +176 -11
- package/dist/core/canvas-run-state.js.map +1 -1
- package/dist/core/canvas-svg.d.ts +9 -4
- package/dist/core/canvas-svg.d.ts.map +1 -1
- package/dist/core/canvas-svg.js +84 -13
- package/dist/core/canvas-svg.js.map +1 -1
- package/dist/core/canvas-template.d.ts +9 -10
- package/dist/core/canvas-template.d.ts.map +1 -1
- package/dist/core/canvas-template.js +57 -20
- package/dist/core/canvas-template.js.map +1 -1
- package/dist/core/canvas-watcher.d.ts +22 -1
- package/dist/core/canvas-watcher.d.ts.map +1 -1
- package/dist/core/canvas-watcher.js +111 -30
- package/dist/core/canvas-watcher.js.map +1 -1
- package/dist/core/collector/normalizer.d.ts +8 -0
- package/dist/core/collector/normalizer.d.ts.map +1 -1
- package/dist/core/collector/normalizer.js +8 -0
- package/dist/core/collector/normalizer.js.map +1 -1
- package/dist/core/collector/store.d.ts +75 -1
- package/dist/core/collector/store.d.ts.map +1 -1
- package/dist/core/collector/store.js +334 -2
- package/dist/core/collector/store.js.map +1 -1
- package/dist/core/definition-slug-resolver.d.ts +13 -0
- package/dist/core/definition-slug-resolver.d.ts.map +1 -1
- package/dist/core/definition-slug-resolver.js +29 -0
- package/dist/core/definition-slug-resolver.js.map +1 -1
- package/dist/core/errors.d.ts +10 -4
- package/dist/core/errors.d.ts.map +1 -1
- package/dist/core/errors.js +11 -5
- package/dist/core/errors.js.map +1 -1
- package/dist/core/example-seed.d.ts +8 -0
- package/dist/core/example-seed.d.ts.map +1 -1
- package/dist/core/example-seed.js +47 -10
- package/dist/core/example-seed.js.map +1 -1
- package/dist/core/inject/system-prompt.d.ts +8 -0
- package/dist/core/inject/system-prompt.d.ts.map +1 -1
- package/dist/core/inject/system-prompt.js +3 -1
- package/dist/core/inject/system-prompt.js.map +1 -1
- package/dist/core/macros.d.ts.map +1 -1
- package/dist/core/macros.js +5 -6
- package/dist/core/macros.js.map +1 -1
- package/dist/core/paths.d.ts +1 -0
- package/dist/core/paths.d.ts.map +1 -1
- package/dist/core/paths.js +1 -0
- package/dist/core/paths.js.map +1 -1
- package/dist/core/record-archive.d.ts +187 -0
- package/dist/core/record-archive.d.ts.map +1 -0
- package/dist/core/record-archive.js +465 -0
- package/dist/core/record-archive.js.map +1 -0
- package/dist/core/rehydration.d.ts +72 -0
- package/dist/core/rehydration.d.ts.map +1 -0
- package/dist/core/rehydration.js +72 -0
- package/dist/core/rehydration.js.map +1 -0
- package/dist/core/render-local-run.d.ts +82 -0
- package/dist/core/render-local-run.d.ts.map +1 -0
- package/dist/core/render-local-run.js +105 -0
- package/dist/core/render-local-run.js.map +1 -0
- package/dist/core/render-log-slice.d.ts +30 -0
- package/dist/core/render-log-slice.d.ts.map +1 -0
- package/dist/core/render-log-slice.js +49 -0
- package/dist/core/render-log-slice.js.map +1 -0
- package/dist/core/render-run-state.d.ts.map +1 -1
- package/dist/core/render-run-state.js +30 -49
- package/dist/core/render-run-state.js.map +1 -1
- package/dist/core/resume-brief.d.ts +130 -0
- package/dist/core/resume-brief.d.ts.map +1 -0
- package/dist/core/resume-brief.js +404 -0
- package/dist/core/resume-brief.js.map +1 -0
- package/dist/core/rolling-summary.d.ts +130 -0
- package/dist/core/rolling-summary.d.ts.map +1 -0
- package/dist/core/rolling-summary.js +227 -0
- package/dist/core/rolling-summary.js.map +1 -0
- package/dist/core/run-local-bootstrap.d.ts +93 -0
- package/dist/core/run-local-bootstrap.d.ts.map +1 -0
- package/dist/core/run-local-bootstrap.js +155 -0
- package/dist/core/run-local-bootstrap.js.map +1 -0
- package/dist/core/run-state.d.ts +16 -1
- package/dist/core/run-state.d.ts.map +1 -1
- package/dist/core/run-state.js +75 -25
- package/dist/core/run-state.js.map +1 -1
- package/dist/core/session-manager.d.ts +11 -3
- package/dist/core/session-manager.d.ts.map +1 -1
- package/dist/core/session-manager.js +56 -7
- package/dist/core/session-manager.js.map +1 -1
- package/dist/core/session-record.d.ts +165 -0
- package/dist/core/session-record.d.ts.map +1 -0
- package/dist/core/session-record.js +470 -0
- package/dist/core/session-record.js.map +1 -0
- package/dist/core/spawn-target.d.ts +12 -0
- package/dist/core/spawn-target.d.ts.map +1 -0
- package/dist/core/spawn-target.js +187 -0
- package/dist/core/spawn-target.js.map +1 -0
- package/dist/core/stub-feedback.d.ts +52 -0
- package/dist/core/stub-feedback.d.ts.map +1 -0
- package/dist/core/stub-feedback.js +33 -0
- package/dist/core/stub-feedback.js.map +1 -0
- package/dist/core/task-manager.d.ts.map +1 -1
- package/dist/core/task-manager.js +9 -1
- package/dist/core/task-manager.js.map +1 -1
- package/dist/core/template-catalog.d.ts +48 -0
- package/dist/core/template-catalog.d.ts.map +1 -0
- package/dist/core/template-catalog.js +338 -0
- package/dist/core/template-catalog.js.map +1 -0
- package/dist/core/workflow-registry.d.ts.map +1 -1
- package/dist/core/workflow-registry.js +2 -2
- package/dist/core/workflow-registry.js.map +1 -1
- package/dist/core/workspace-watcher.d.ts.map +1 -1
- package/dist/core/workspace-watcher.js +4 -3
- package/dist/core/workspace-watcher.js.map +1 -1
- package/dist/index.d.ts +12 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +21 -0
- package/dist/index.js.map +1 -1
- package/dist/profiles/default.d.ts.map +1 -1
- package/dist/profiles/default.js +9 -14
- package/dist/profiles/default.js.map +1 -1
- package/dist/server/actions.d.ts +139 -0
- package/dist/server/actions.d.ts.map +1 -0
- package/dist/server/actions.js +430 -0
- package/dist/server/actions.js.map +1 -0
- package/dist/server/auth-routes.d.ts +92 -0
- package/dist/server/auth-routes.d.ts.map +1 -0
- package/dist/server/auth-routes.js +151 -0
- package/dist/server/auth-routes.js.map +1 -0
- package/dist/server/canvas.d.ts.map +1 -1
- package/dist/server/canvas.js +7 -7
- package/dist/server/canvas.js.map +1 -1
- package/dist/server/fs.d.ts.map +1 -1
- package/dist/server/fs.js +17 -1
- package/dist/server/fs.js.map +1 -1
- package/dist/server/index.d.ts +12 -3
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +0 -0
- package/dist/server/index.js.map +1 -1
- package/dist/server/ingest.d.ts +11 -0
- package/dist/server/ingest.d.ts.map +1 -1
- package/dist/server/ingest.js +1 -0
- package/dist/server/ingest.js.map +1 -1
- package/dist/server/macros.d.ts +4 -6
- package/dist/server/macros.d.ts.map +1 -1
- package/dist/server/macros.js.map +1 -1
- package/dist/server/rest.d.ts +18 -6
- package/dist/server/rest.d.ts.map +1 -1
- package/dist/server/rest.js +185 -50
- package/dist/server/rest.js.map +1 -1
- package/dist/server/runs.d.ts +16 -15
- package/dist/server/runs.d.ts.map +1 -1
- package/dist/server/runs.js +15 -80
- package/dist/server/runs.js.map +1 -1
- package/dist/server/static.d.ts +15 -1
- package/dist/server/static.d.ts.map +1 -1
- package/dist/server/static.js +54 -4
- package/dist/server/static.js.map +1 -1
- package/dist/server/templates.d.ts +24 -0
- package/dist/server/templates.d.ts.map +1 -0
- package/dist/server/templates.js +54 -0
- package/dist/server/templates.js.map +1 -0
- package/dist/shared/types.d.ts +558 -66
- package/dist/shared/types.d.ts.map +1 -1
- package/dist/shared/types.js +19 -11
- package/dist/shared/types.js.map +1 -1
- package/dist/web/assets/index-DC65cskq.js +446 -0
- package/dist/web/assets/index-xtD-3FFa.css +32 -0
- package/dist/web/canvas/sess-boot/index.html +305 -0
- package/dist/web/index.html +4 -9
- package/package.json +8 -4
- package/dist/core/canvas-enrich.d.ts +0 -115
- package/dist/core/canvas-enrich.d.ts.map +0 -1
- package/dist/core/canvas-enrich.js +0 -186
- package/dist/core/canvas-enrich.js.map +0 -1
- package/dist/core/run-spend.d.ts +0 -55
- package/dist/core/run-spend.d.ts.map +0 -1
- package/dist/core/run-spend.js +0 -109
- package/dist/core/run-spend.js.map +0 -1
- package/dist/core/run-transactions.d.ts +0 -60
- package/dist/core/run-transactions.d.ts.map +0 -1
- package/dist/core/run-transactions.js +0 -129
- package/dist/core/run-transactions.js.map +0 -1
- package/dist/profiles/canvas-guidelines.d.ts +0 -20
- package/dist/profiles/canvas-guidelines.d.ts.map +0 -1
- package/dist/profiles/canvas-guidelines.js +0 -48
- package/dist/profiles/canvas-guidelines.js.map +0 -1
- package/dist/server/skills.d.ts +0 -51
- package/dist/server/skills.d.ts.map +0 -1
- package/dist/server/skills.js +0 -312
- package/dist/server/skills.js.map +0 -1
- package/dist/web/assets/index-DM84J83Y.js +0 -234
- package/dist/web/assets/index-DemtWW4L.css +0 -32
|
@@ -0,0 +1,338 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* template-catalog — the Studio's template gallery, read from the Sapiom CORE
|
|
3
|
+
* surface so it can never disagree with the dashboard's Template library.
|
|
4
|
+
*
|
|
5
|
+
* WHY this replaced a hardcoded list: the Studio used to ship a pinned copy of
|
|
6
|
+
* two registry entries (`web/src/lib/templates.ts`, pinned at harness 0.1.4 /
|
|
7
|
+
* f0e3406) because — as that module's header said — "no listing API, MCP tool,
|
|
8
|
+
* or CLI command exposes the gallery to any client today". That is no longer
|
|
9
|
+
* true: core serves `GET /v1/workflows/templates` (26 templates) and
|
|
10
|
+
* `GET /v1/workflows/templates/:id`, which is exactly what the dashboard's
|
|
11
|
+
* gallery renders. Reading the same endpoint is what keeps the two surfaces from
|
|
12
|
+
* drifting; re-deriving the list from `registry.json` would just recreate the
|
|
13
|
+
* drift with extra steps (core also merges each example's `template.json` and
|
|
14
|
+
* derives the complexity band from the declared shape).
|
|
15
|
+
*
|
|
16
|
+
* Two non-obvious contract details, both verified against a local backend:
|
|
17
|
+
*
|
|
18
|
+
* - **The core surface authenticates with `Authorization: Bearer`, NOT the
|
|
19
|
+
* `x-sapiom-api-key` header the AGENTS surface takes.** The same key sent as
|
|
20
|
+
* `x-sapiom-api-key` to `/v1/workflows/templates` returns 401. Don't copy the
|
|
21
|
+
* header from `run-state.ts` / `definition-slug-resolver.ts` — those talk to
|
|
22
|
+
* `tools.*`, this talks to `api.*`.
|
|
23
|
+
* - **The path is prefixed `/v1`** (the backend's `GLOBAL_API_PREFIX`); a bare
|
|
24
|
+
* `/workflows/templates` 404s.
|
|
25
|
+
*
|
|
26
|
+
* The key stays server-side and is never forwarded to the browser (same rule as
|
|
27
|
+
* the runs router). A 401/403 triggers exactly one credential refresh + retry,
|
|
28
|
+
* mirroring `run-state.ts`, so a rotated key recovers in place.
|
|
29
|
+
*/
|
|
30
|
+
import { staticApiKeyProvider, } from "./api-key-provider.js";
|
|
31
|
+
import { classifyStepKind } from "./canvas-graph.js";
|
|
32
|
+
import { resolveCoreBaseUrl } from "./definition-slug-resolver.js";
|
|
33
|
+
/** Upstream statuses meaning "the key was rejected" — worth one refresh + retry
|
|
34
|
+
* before giving up. Mirrors run-state.ts's `isAuthRejection`. */
|
|
35
|
+
function isAuthRejection(status) {
|
|
36
|
+
return status === 401 || status === 403;
|
|
37
|
+
}
|
|
38
|
+
/** How long a successful list/detail response is reused. The registry is read by
|
|
39
|
+
* core from a pinned ref and changes on the order of releases, so a short TTL
|
|
40
|
+
* removes the per-open round-trip without pinning a stale gallery for a session
|
|
41
|
+
* that stays open for hours. */
|
|
42
|
+
const CACHE_TTL_MS = 5 * 60000;
|
|
43
|
+
function str(value) {
|
|
44
|
+
return typeof value === "string" ? value : "";
|
|
45
|
+
}
|
|
46
|
+
function nullableStr(value) {
|
|
47
|
+
return typeof value === "string" && value !== "" ? value : null;
|
|
48
|
+
}
|
|
49
|
+
function strArray(value) {
|
|
50
|
+
return Array.isArray(value) ? value.filter((v) => typeof v === "string") : [];
|
|
51
|
+
}
|
|
52
|
+
/** A basis count. Absent or nonsense reads as 0 — the basis only ever explains a
|
|
53
|
+
* band, so a missing count should drop out of the explanation, not sink it. */
|
|
54
|
+
function count(value) {
|
|
55
|
+
return typeof value === "number" && Number.isFinite(value) && value > 0 ? Math.floor(value) : 0;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Narrow a complexity band, or null when the payload did not carry a usable one.
|
|
59
|
+
*
|
|
60
|
+
* Core types this field required and can compute it for every template, so
|
|
61
|
+
* against a current backend the null branch is dead. It is not dead against
|
|
62
|
+
* every backend: this is a published package that can be pointed at a stack
|
|
63
|
+
* predating the field (see `TemplateSummary.complexity`). Returning null lets one
|
|
64
|
+
* card render an em dash; dereferencing an absent band would throw inside the row
|
|
65
|
+
* renderer and lose the whole gallery.
|
|
66
|
+
*
|
|
67
|
+
* `label` is the gate because it is what the card actually renders — a band whose
|
|
68
|
+
* label we cannot read is not one we can show, whatever else came with it.
|
|
69
|
+
*/
|
|
70
|
+
function toComplexity(value) {
|
|
71
|
+
if (typeof value !== "object" || value === null)
|
|
72
|
+
return null;
|
|
73
|
+
const raw = value;
|
|
74
|
+
const label = nullableStr(raw.label);
|
|
75
|
+
if (!label)
|
|
76
|
+
return null;
|
|
77
|
+
const basis = typeof raw.basis === "object" && raw.basis !== null ? raw.basis : {};
|
|
78
|
+
return {
|
|
79
|
+
label,
|
|
80
|
+
score: count(raw.score),
|
|
81
|
+
basis: {
|
|
82
|
+
llmSteps: count(basis.llmSteps),
|
|
83
|
+
chainedLlmSteps: count(basis.chainedLlmSteps),
|
|
84
|
+
mediaCapabilities: count(basis.mediaCapabilities),
|
|
85
|
+
capabilityCount: count(basis.capabilityCount),
|
|
86
|
+
stepCount: count(basis.stepCount),
|
|
87
|
+
maxFanOut: count(basis.maxFanOut),
|
|
88
|
+
},
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Narrow one summary. Defensive rather than trusting: the taxonomy and manifest
|
|
93
|
+
* are owned upstream in a public repo, so a template with a field we don't know
|
|
94
|
+
* about must still render as a card instead of throwing the whole list away.
|
|
95
|
+
*/
|
|
96
|
+
function toSummary(raw) {
|
|
97
|
+
return {
|
|
98
|
+
id: str(raw.id),
|
|
99
|
+
name: str(raw.name) || str(raw.id),
|
|
100
|
+
description: str(raw.description),
|
|
101
|
+
tags: strArray(raw.tags),
|
|
102
|
+
category: nullableStr(raw.category),
|
|
103
|
+
cadence: nullableStr(raw.cadence),
|
|
104
|
+
stepCount: typeof raw.stepCount === "number" ? raw.stepCount : 0,
|
|
105
|
+
capabilities: strArray(raw.capabilities),
|
|
106
|
+
complexity: toComplexity(raw.complexity),
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Core relays the ENGINE's graph projection (`DefinitionStepDto` /
|
|
111
|
+
* `DefinitionTransitionDto`), whose shape is not the registry's:
|
|
112
|
+
*
|
|
113
|
+
* - a step is `{ id, stepName, ordinal, kind, capabilityId }` — `stepName`, a
|
|
114
|
+
* SINGULAR nullable `capabilityId`, and **no `terminal` flag**;
|
|
115
|
+
* - an edge is `{ fromStepDefinitionId, toStepDefinitionId, kind, signal }`,
|
|
116
|
+
* referencing steps by their namespaced `id` (`<templateId>::<stepName>`),
|
|
117
|
+
* not by name, and `toStepDefinitionId` is **null** for a `terminate`/`fail`
|
|
118
|
+
* sink.
|
|
119
|
+
*
|
|
120
|
+
* So terminality is an EDGE property here, and ids must be resolved to names
|
|
121
|
+
* before the view can use them. Getting this wrong renders a step list with no
|
|
122
|
+
* connectors and nothing marked as an exit.
|
|
123
|
+
*/
|
|
124
|
+
function toGraph(rawSteps, rawTransitions) {
|
|
125
|
+
const steps = Array.isArray(rawSteps)
|
|
126
|
+
? rawSteps.filter((s) => typeof s === "object" && s !== null)
|
|
127
|
+
: [];
|
|
128
|
+
const edges = Array.isArray(rawTransitions)
|
|
129
|
+
? rawTransitions.filter((t) => typeof t === "object" && t !== null)
|
|
130
|
+
: [];
|
|
131
|
+
// `<templateId>::<stepName>` → `stepName`. Fall back to `name` so a future
|
|
132
|
+
// registry-shaped payload still resolves.
|
|
133
|
+
const nameOf = new Map();
|
|
134
|
+
for (const step of steps) {
|
|
135
|
+
const name = str(step.stepName) || str(step.name);
|
|
136
|
+
if (step.id !== undefined)
|
|
137
|
+
nameOf.set(str(step.id), name);
|
|
138
|
+
if (name)
|
|
139
|
+
nameOf.set(name, name);
|
|
140
|
+
}
|
|
141
|
+
const resolve = (ref) => {
|
|
142
|
+
const key = str(ref);
|
|
143
|
+
return nameOf.get(key) ?? key;
|
|
144
|
+
};
|
|
145
|
+
// Group each step's outgoing transitions so the shared classifier sees exactly
|
|
146
|
+
// what it sees for a local manifest. All FOUR kinds matter — `terminate` and
|
|
147
|
+
// `fail` are sinks with a null target (never drawn edges, but they decide the
|
|
148
|
+
// node's kind), and a step that can `continue` AND terminate is a mid-flow
|
|
149
|
+
// step, not an exit.
|
|
150
|
+
const outgoing = new Map();
|
|
151
|
+
for (const edge of edges) {
|
|
152
|
+
const from = resolve(edge.fromStepDefinitionId ?? edge.from);
|
|
153
|
+
const list = outgoing.get(from) ?? [];
|
|
154
|
+
list.push({ kind: str(edge.kind), signal: nullableStr(edge.signal) });
|
|
155
|
+
outgoing.set(from, list);
|
|
156
|
+
}
|
|
157
|
+
// Entry is the lowest `ordinal` — core documents that on DefinitionStepDto.
|
|
158
|
+
const entry = steps
|
|
159
|
+
.map((step) => ({
|
|
160
|
+
name: str(step.stepName) || str(step.name),
|
|
161
|
+
ordinal: typeof step.ordinal === "number" ? step.ordinal : Number.MAX_SAFE_INTEGER,
|
|
162
|
+
}))
|
|
163
|
+
.sort((a, b) => a.ordinal - b.ordinal)[0]?.name ?? "";
|
|
164
|
+
const DRAWN_KINDS = new Set(["continue", "pause"]);
|
|
165
|
+
return {
|
|
166
|
+
steps: steps.map((step) => {
|
|
167
|
+
const name = str(step.stepName) || str(step.name);
|
|
168
|
+
const capability = nullableStr(step.capabilityId);
|
|
169
|
+
const { kind, sublabel } = classifyStepKind({
|
|
170
|
+
name,
|
|
171
|
+
entry,
|
|
172
|
+
transitions: outgoing.get(name) ?? [],
|
|
173
|
+
});
|
|
174
|
+
return {
|
|
175
|
+
name,
|
|
176
|
+
description: nullableStr(step.description),
|
|
177
|
+
// Singular `capabilityId` upstream; the view carries a list because a
|
|
178
|
+
// future step could bind more than one, and the older registry shape did.
|
|
179
|
+
capabilities: capability ? [capability] : strArray(step.capabilities),
|
|
180
|
+
kind,
|
|
181
|
+
sublabel,
|
|
182
|
+
};
|
|
183
|
+
}),
|
|
184
|
+
// Only `continue` and `pause` have a target, so only they become edges.
|
|
185
|
+
transitions: edges
|
|
186
|
+
.filter((edge) => DRAWN_KINDS.has(str(edge.kind)))
|
|
187
|
+
.map((edge) => ({
|
|
188
|
+
from: resolve(edge.fromStepDefinitionId ?? edge.from),
|
|
189
|
+
to: resolve(edge.toStepDefinitionId ?? edge.to),
|
|
190
|
+
// A pause edge names the signal it waits for; that IS its label. Nothing
|
|
191
|
+
// else in the DTO is a label, so nothing else is invented.
|
|
192
|
+
label: nullableStr(edge.signal),
|
|
193
|
+
kind: str(edge.kind) === "pause" ? "pause" : "continue",
|
|
194
|
+
}))
|
|
195
|
+
.filter((edge) => edge.from !== "" && edge.to !== ""),
|
|
196
|
+
};
|
|
197
|
+
}
|
|
198
|
+
/**
|
|
199
|
+
* The rich fields live under `manifest` in core's detail DTO (the co-located
|
|
200
|
+
* `template.json`), while the graph is expanded at the top level. Read both
|
|
201
|
+
* shapes so the detail pane works whether or not a template ships a manifest.
|
|
202
|
+
*/
|
|
203
|
+
function toDetail(raw) {
|
|
204
|
+
const manifest = typeof raw.manifest === "object" && raw.manifest !== null ? raw.manifest : {};
|
|
205
|
+
const author = typeof manifest.author === "object" && manifest.author !== null ? manifest.author : null;
|
|
206
|
+
const graph = toGraph(raw.steps, raw.transitions);
|
|
207
|
+
return {
|
|
208
|
+
...toSummary(raw),
|
|
209
|
+
whatItDoes: nullableStr(raw.whatItDoes ?? manifest.whatItDoes),
|
|
210
|
+
sourcePath: nullableStr(raw.sourcePath),
|
|
211
|
+
steps: graph.steps,
|
|
212
|
+
transitions: graph.transitions,
|
|
213
|
+
author: author ? { name: str(author.name), url: nullableStr(author.url) } : null,
|
|
214
|
+
useCases: strArray(manifest.useCases),
|
|
215
|
+
notes: nullableStr(manifest.notes),
|
|
216
|
+
examples: Array.isArray(manifest.examples)
|
|
217
|
+
? manifest.examples
|
|
218
|
+
.filter((e) => typeof e === "object" && e !== null)
|
|
219
|
+
.map((example) => ({
|
|
220
|
+
title: nullableStr(example.title),
|
|
221
|
+
input: example.input ?? null,
|
|
222
|
+
output: example.output ?? null,
|
|
223
|
+
}))
|
|
224
|
+
: [],
|
|
225
|
+
requiredSecrets: Array.isArray(manifest.requiredSecrets)
|
|
226
|
+
? manifest.requiredSecrets
|
|
227
|
+
.filter((s) => typeof s === "object" && s !== null)
|
|
228
|
+
.map((secret) => ({
|
|
229
|
+
key: str(secret.key),
|
|
230
|
+
label: str(secret.label) || str(secret.key),
|
|
231
|
+
description: nullableStr(secret.description),
|
|
232
|
+
}))
|
|
233
|
+
: [],
|
|
234
|
+
};
|
|
235
|
+
}
|
|
236
|
+
export function createTemplateCatalog(opts) {
|
|
237
|
+
const provider = opts.apiKey !== null && typeof opts.apiKey === "object"
|
|
238
|
+
? opts.apiKey
|
|
239
|
+
: staticApiKeyProvider(opts.apiKey);
|
|
240
|
+
const baseUrl = opts.baseUrl ?? resolveCoreBaseUrl();
|
|
241
|
+
const fetchImpl = opts.fetchImpl ?? fetch;
|
|
242
|
+
let listCache = null;
|
|
243
|
+
const detailCache = new Map();
|
|
244
|
+
// One line per distinct failure reason, not per poll — the dialog may reopen
|
|
245
|
+
// repeatedly and a persistent misconfiguration shouldn't flood the log.
|
|
246
|
+
const logged = new Set();
|
|
247
|
+
const warnOnce = (reason) => {
|
|
248
|
+
if (logged.has(reason))
|
|
249
|
+
return;
|
|
250
|
+
logged.add(reason);
|
|
251
|
+
console.error(`[harness] template gallery unavailable from ${baseUrl} (${reason}); ` +
|
|
252
|
+
"showing the bundled starters only — check the harness is signed in " +
|
|
253
|
+
"and SAPIOM_CORE_URL points at a reachable Sapiom API");
|
|
254
|
+
};
|
|
255
|
+
/**
|
|
256
|
+
* GET `path` from the core surface with the held key, refreshing + retrying
|
|
257
|
+
* once on an auth rejection. Returns the parsed body, or null on any failure.
|
|
258
|
+
*/
|
|
259
|
+
const getJson = async (path) => {
|
|
260
|
+
let apiKey = provider.getKey();
|
|
261
|
+
if (!apiKey)
|
|
262
|
+
return null;
|
|
263
|
+
const attempt = async (key) => {
|
|
264
|
+
try {
|
|
265
|
+
return await fetchImpl(`${baseUrl}${path}`, {
|
|
266
|
+
// Core (`api.*`) takes a Bearer token; the agents surface (`tools.*`)
|
|
267
|
+
// takes `x-sapiom-api-key`. Sending the latter here 401s — verified.
|
|
268
|
+
headers: { Authorization: `Bearer ${key}` },
|
|
269
|
+
});
|
|
270
|
+
}
|
|
271
|
+
catch (err) {
|
|
272
|
+
warnOnce(err instanceof Error ? err.message : String(err));
|
|
273
|
+
return null;
|
|
274
|
+
}
|
|
275
|
+
};
|
|
276
|
+
let response = await attempt(apiKey);
|
|
277
|
+
if (!response)
|
|
278
|
+
return null;
|
|
279
|
+
if (isAuthRejection(response.status)) {
|
|
280
|
+
const refreshed = await provider.refresh();
|
|
281
|
+
if (refreshed && refreshed !== apiKey) {
|
|
282
|
+
apiKey = refreshed;
|
|
283
|
+
response = await attempt(refreshed);
|
|
284
|
+
if (!response)
|
|
285
|
+
return null;
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
if (!response.ok) {
|
|
289
|
+
warnOnce(`HTTP ${response.status}`);
|
|
290
|
+
return null;
|
|
291
|
+
}
|
|
292
|
+
try {
|
|
293
|
+
return await response.json();
|
|
294
|
+
}
|
|
295
|
+
catch {
|
|
296
|
+
warnOnce("response body was not JSON");
|
|
297
|
+
return null;
|
|
298
|
+
}
|
|
299
|
+
};
|
|
300
|
+
return {
|
|
301
|
+
async list() {
|
|
302
|
+
const fresh = listCache && Date.now() - listCache.at < CACHE_TTL_MS;
|
|
303
|
+
if (fresh && listCache)
|
|
304
|
+
return listCache.value;
|
|
305
|
+
// Signed out is an expected state (a harness launched without auth), not a
|
|
306
|
+
// fault — distinguish it so the dialog can offer sign-in rather than
|
|
307
|
+
// implying the gallery is broken.
|
|
308
|
+
if (!provider.getKey()) {
|
|
309
|
+
return { templates: [], source: "fallback", reason: "signed-out" };
|
|
310
|
+
}
|
|
311
|
+
const body = await getJson("/v1/workflows/templates");
|
|
312
|
+
if (!Array.isArray(body)) {
|
|
313
|
+
return { templates: [], source: "fallback", reason: "unreachable" };
|
|
314
|
+
}
|
|
315
|
+
const templates = body
|
|
316
|
+
.filter((t) => typeof t === "object" && t !== null)
|
|
317
|
+
.map(toSummary)
|
|
318
|
+
.filter((t) => t.id !== "");
|
|
319
|
+
const value = { templates, source: "live" };
|
|
320
|
+
listCache = { at: Date.now(), value };
|
|
321
|
+
return value;
|
|
322
|
+
},
|
|
323
|
+
async detail(id) {
|
|
324
|
+
const cached = detailCache.get(id);
|
|
325
|
+
if (cached && Date.now() - cached.at < CACHE_TTL_MS)
|
|
326
|
+
return cached.value;
|
|
327
|
+
const body = await getJson(`/v1/workflows/templates/${encodeURIComponent(id)}`);
|
|
328
|
+
if (typeof body !== "object" || body === null)
|
|
329
|
+
return null;
|
|
330
|
+
const value = toDetail(body);
|
|
331
|
+
if (value.id === "")
|
|
332
|
+
return null;
|
|
333
|
+
detailCache.set(id, { at: Date.now(), value });
|
|
334
|
+
return value;
|
|
335
|
+
},
|
|
336
|
+
};
|
|
337
|
+
}
|
|
338
|
+
//# sourceMappingURL=template-catalog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"template-catalog.js","sourceRoot":"","sources":["../../src/core/template-catalog.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflow-registry.d.ts","sourceRoot":"","sources":["../../src/core/workflow-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAKH,OAAO,EAAU,KAAK,MAAM,IAAI,aAAa,EAAE,MAAM,SAAS,CAAC;AAE/D,OAAO,
|
|
1
|
+
{"version":3,"file":"workflow-registry.d.ts","sourceRoot":"","sources":["../../src/core/workflow-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAKH,OAAO,EAAU,KAAK,MAAM,IAAI,aAAa,EAAE,MAAM,SAAS,CAAC;AAE/D,OAAO,EAAuC,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAsF5F,qBAAa,gBAAgB;IAQf,OAAO,CAAC,QAAQ,CAAC,YAAY;IAPzC,OAAO,CAAC,SAAS,CAAsB;IACvC,OAAO,CAAC,MAAM,CAAS;IACvB;;6EAEyE;IACzE,OAAO,CAAC,UAAU,CAAoC;gBAEzB,YAAY,GAAE,MAA4C;YAEzE,YAAY;YAWZ,OAAO;IAYrB;8DAC0D;IAC1D,OAAO,CAAC,OAAO;IAST,IAAI,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;IAKrC;;;;;;;OAOG;IACG,KAAK,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;IAuBtC,+EAA+E;IACzE,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAmBjD,8FAA8F;IACxF,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;CAmB5D;AAED;;;;;GAKG;AACH,MAAM,WAAW,oBAAoB;IACnC,IAAI,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;IAChC,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;IAC5C,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;CACvD;AAED,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,oBAAoB,GAAG,aAAa,CAkCnF"}
|
|
@@ -12,7 +12,7 @@ import * as fs from "node:fs/promises";
|
|
|
12
12
|
import * as os from "node:os";
|
|
13
13
|
import * as path from "node:path";
|
|
14
14
|
import { Router } from "express";
|
|
15
|
-
import { HARNESS_PATHS } from "../shared/types.js";
|
|
15
|
+
import { AGENT_PROJECT_MARKER, HARNESS_PATHS } from "../shared/types.js";
|
|
16
16
|
import { hasTraversalSegment, resolveWithinRoot } from "./path-safety.js";
|
|
17
17
|
const MAX_SCAN_DEPTH = 3;
|
|
18
18
|
const SKIP_DIR_NAMES = new Set(["node_modules", ".git"]);
|
|
@@ -32,7 +32,7 @@ async function readMarker(dir) {
|
|
|
32
32
|
if (hasTraversalSegment(dir))
|
|
33
33
|
return null;
|
|
34
34
|
try {
|
|
35
|
-
const raw = await fs.readFile(path.join(dir,
|
|
35
|
+
const raw = await fs.readFile(path.join(dir, AGENT_PROJECT_MARKER), "utf8");
|
|
36
36
|
return JSON.parse(raw);
|
|
37
37
|
}
|
|
38
38
|
catch {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflow-registry.js","sourceRoot":"","sources":["../../src/core/workflow-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,MAAM,EAAgC,MAAM,SAAS,CAAC;AAE/D,OAAO,EAAE,aAAa,EAAqB,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"workflow-registry.js","sourceRoot":"","sources":["../../src/core/workflow-registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workspace-watcher.d.ts","sourceRoot":"","sources":["../../src/core/workspace-watcher.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"workspace-watcher.d.ts","sourceRoot":"","sources":["../../src/core/workspace-watcher.ts"],"names":[],"mappings":"AAyDA;;;;;;;;;;GAUG;AACH,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAyB/D;AAED;;;;;GAKG;AACH,wBAAsB,+BAA+B,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAuBnF;AAmGD,MAAM,WAAW,2BAA2B;IAC1C;;4DAEwD;IACxD,QAAQ,CAAC,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1C;AAED,0EAA0E;AAC1E,qBAAa,uBAAuB;IAGtB,OAAO,CAAC,QAAQ,CAAC,IAAI;IAFjC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA8C;gBAE1C,IAAI,EAAE,2BAA2B;IAE9D,kEAAkE;IAClE,KAAK,CAAC,gBAAgB,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI;IAQlD,IAAI,CAAC,gBAAgB,EAAE,MAAM,GAAG,IAAI;IAKpC,OAAO,IAAI,IAAI;IAIf,8EAA8E;IAC9E,IAAI,IAAI,IAAI,MAAM,CAEjB;CACF"}
|
|
@@ -31,13 +31,14 @@
|
|
|
31
31
|
import * as fs from "node:fs";
|
|
32
32
|
import * as fsp from "node:fs/promises";
|
|
33
33
|
import * as path from "node:path";
|
|
34
|
+
import { AGENT_PROJECT_MARKER } from "../shared/types.js";
|
|
34
35
|
const DEBOUNCE_MS = 250;
|
|
35
36
|
/** Longer than the watch debounce — the watcher path is the fast signal;
|
|
36
37
|
* the poll is just a backstop for platforms without recursive fs.watch. */
|
|
37
38
|
const POLL_INTERVAL_MS = 2000;
|
|
38
|
-
/**
|
|
39
|
-
*
|
|
40
|
-
const WORKFLOW_MARKER =
|
|
39
|
+
/** Shared with core/workflow-registry.ts and server/fs.ts via
|
|
40
|
+
* AGENT_PROJECT_MARKER; this is only how deep the scan looks for it. */
|
|
41
|
+
const WORKFLOW_MARKER = AGENT_PROJECT_MARKER;
|
|
41
42
|
const MAX_SCAN_DEPTH = 3;
|
|
42
43
|
/** Directories a workflow marker never lives in — skipped both when
|
|
43
44
|
* fingerprinting and when deciding whether a watch event is relevant.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workspace-watcher.js","sourceRoot":"","sources":["../../src/core/workspace-watcher.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,GAAG,MAAM,kBAAkB,CAAC;AACxC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"workspace-watcher.js","sourceRoot":"","sources":["../../src/core/workspace-watcher.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -6,4 +6,16 @@ export * from "./shared/types.js";
|
|
|
6
6
|
export { HarnessError, UnknownSessionError, SessionNotReadyError, SessionNotResumeableError, SessionAlreadyLiveError, AdapterNotFoundError, ExternalHarnessError, } from "./core/errors.js";
|
|
7
7
|
export { listHarnessAdapters, getHarnessAdapter, createHarnessAdapterRegistry, UnknownHarnessAdapterError, } from "./core/adapters/registry.js";
|
|
8
8
|
export type { HarnessAdapterInfo, HarnessAdapterId, HarnessAdapterMode, EmbeddedHarnessAdapterInfo, ExternalHarnessAdapterInfo, } from "./core/adapters/adapter.js";
|
|
9
|
+
export { startServer } from "./server/index.js";
|
|
10
|
+
export type { HarnessServer, HarnessServerOptions } from "./server/index.js";
|
|
11
|
+
export { runDoctor, pickDefaultHarness, CLAUDE_INSTALL_COMMAND, CODEX_INSTALL_COMMAND, } from "./cli/doctor.js";
|
|
12
|
+
export type { DoctorReport } from "./cli/doctor.js";
|
|
13
|
+
export { ensureAuthenticated } from "./cli/auth.js";
|
|
14
|
+
export type { HarnessIdentity } from "./cli/auth.js";
|
|
15
|
+
export { getOrCreateMachineId } from "./cli/machine-id.js";
|
|
16
|
+
export { ensureSpawnHelperExecutable } from "./core/session-manager.js";
|
|
17
|
+
export { resolveSpawnTarget } from "./core/spawn-target.js";
|
|
18
|
+
export type { SpawnTarget } from "./core/spawn-target.js";
|
|
19
|
+
export { createClaudeCodeAdapter } from "./core/adapters/claude-code.js";
|
|
20
|
+
export { loadSettings, saveSettings, recordRecentDir, hasStoredSettings } from "./cli/settings.js";
|
|
9
21
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,cAAc,mBAAmB,CAAC;AAClC,OAAO,EACL,YAAY,EACZ,mBAAmB,EACnB,oBAAoB,EACpB,yBAAyB,EACzB,uBAAuB,EACvB,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,mBAAmB,EACnB,iBAAiB,EACjB,4BAA4B,EAC5B,0BAA0B,GAC3B,MAAM,6BAA6B,CAAC;AACrC,YAAY,EACV,kBAAkB,EAClB,gBAAgB,EAChB,kBAAkB,EAClB,0BAA0B,EAC1B,0BAA0B,GAC3B,MAAM,4BAA4B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,cAAc,mBAAmB,CAAC;AAClC,OAAO,EACL,YAAY,EACZ,mBAAmB,EACnB,oBAAoB,EACpB,yBAAyB,EACzB,uBAAuB,EACvB,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,mBAAmB,EACnB,iBAAiB,EACjB,4BAA4B,EAC5B,0BAA0B,GAC3B,MAAM,6BAA6B,CAAC;AACrC,YAAY,EACV,kBAAkB,EAClB,gBAAgB,EAChB,kBAAkB,EAClB,0BAA0B,EAC1B,0BAA0B,GAC3B,MAAM,4BAA4B,CAAC;AAUpC,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,YAAY,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAC7E,OAAO,EACL,SAAS,EACT,kBAAkB,EAClB,sBAAsB,EACtB,qBAAqB,GACtB,MAAM,iBAAiB,CAAC;AACzB,YAAY,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACpD,YAAY,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,2BAA2B,EAAE,MAAM,2BAA2B,CAAC;AAGxE,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,YAAY,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAI1D,OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AACzE,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -5,4 +5,25 @@
|
|
|
5
5
|
export * from "./shared/types.js";
|
|
6
6
|
export { HarnessError, UnknownSessionError, SessionNotReadyError, SessionNotResumeableError, SessionAlreadyLiveError, AdapterNotFoundError, ExternalHarnessError, } from "./core/errors.js";
|
|
7
7
|
export { listHarnessAdapters, getHarnessAdapter, createHarnessAdapterRegistry, UnknownHarnessAdapterError, } from "./core/adapters/registry.js";
|
|
8
|
+
// Embedding surface (SAP: harness-desktop) — lets a second host (the Electron
|
|
9
|
+
// app) reuse the exact server + setup flow the CLI (`bin.ts`) runs, instead of
|
|
10
|
+
// forking it. `ensureConsent`/`printDoctorReport` are intentionally NOT exported:
|
|
11
|
+
// they are TTY-shaped, and a native host supplies `telemetryOptIn`/`consentSource`
|
|
12
|
+
// to `startServer` directly — which is why `saveSettings` is exported too: a
|
|
13
|
+
// native host that prompts for consent itself must persist the answer the way
|
|
14
|
+
// `ensureConsent` does, or the settings file (the source of truth for the UI's
|
|
15
|
+
// analytics chip and for the next launch) never learns about it.
|
|
16
|
+
export { startServer } from "./server/index.js";
|
|
17
|
+
export { runDoctor, pickDefaultHarness, CLAUDE_INSTALL_COMMAND, CODEX_INSTALL_COMMAND, } from "./cli/doctor.js";
|
|
18
|
+
export { ensureAuthenticated } from "./cli/auth.js";
|
|
19
|
+
export { getOrCreateMachineId } from "./cli/machine-id.js";
|
|
20
|
+
export { ensureSpawnHelperExecutable } from "./core/session-manager.js";
|
|
21
|
+
// Exported so a host can spawn a pty the same way the harness does — Windows
|
|
22
|
+
// cannot launch a bare command name or a .cmd shim directly (see the module).
|
|
23
|
+
export { resolveSpawnTarget } from "./core/spawn-target.js";
|
|
24
|
+
// Lets a host point the claude-code adapter at a different binary. Used by the
|
|
25
|
+
// desktop app's --smoke mode to create a REAL session against a stub agent, so
|
|
26
|
+
// per-OS session coverage doesn't require Claude Code installed on a CI runner.
|
|
27
|
+
export { createClaudeCodeAdapter } from "./core/adapters/claude-code.js";
|
|
28
|
+
export { loadSettings, saveSettings, recordRecentDir, hasStoredSettings } from "./cli/settings.js";
|
|
8
29
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,cAAc,mBAAmB,CAAC;AAClC,OAAO,EACL,YAAY,EACZ,mBAAmB,EACnB,oBAAoB,EACpB,yBAAyB,EACzB,uBAAuB,EACvB,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,mBAAmB,EACnB,iBAAiB,EACjB,4BAA4B,EAC5B,0BAA0B,GAC3B,MAAM,6BAA6B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,cAAc,mBAAmB,CAAC;AAClC,OAAO,EACL,YAAY,EACZ,mBAAmB,EACnB,oBAAoB,EACpB,yBAAyB,EACzB,uBAAuB,EACvB,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,mBAAmB,EACnB,iBAAiB,EACjB,4BAA4B,EAC5B,0BAA0B,GAC3B,MAAM,6BAA6B,CAAC;AASrC,8EAA8E;AAC9E,+EAA+E;AAC/E,kFAAkF;AAClF,mFAAmF;AACnF,6EAA6E;AAC7E,8EAA8E;AAC9E,+EAA+E;AAC/E,iEAAiE;AACjE,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,EACL,SAAS,EACT,kBAAkB,EAClB,sBAAsB,EACtB,qBAAqB,GACtB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAEpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,2BAA2B,EAAE,MAAM,2BAA2B,CAAC;AACxE,6EAA6E;AAC7E,8EAA8E;AAC9E,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAE5D,+EAA+E;AAC/E,+EAA+E;AAC/E,gFAAgF;AAChF,OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AACzE,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"default.d.ts","sourceRoot":"","sources":["../../src/profiles/default.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"default.d.ts","sourceRoot":"","sources":["../../src/profiles/default.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,eAAO,MAAM,qBAAqB,QAuD1B,CAAC"}
|
package/dist/profiles/default.js
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { CANVAS_STYLE_GUIDELINES } from "./canvas-guidelines.js";
|
|
2
1
|
/**
|
|
3
2
|
* Default system prompt, appended to the coding agent's own instructions via
|
|
4
3
|
* `--append-system-prompt`. Orients a fresh session to the Sapiom-specific
|
|
@@ -27,19 +26,15 @@ step code against stub capabilities, no cost) → link (associate the project
|
|
|
27
26
|
with a hosted agent) → deploy (push, build, go live). Read a project's
|
|
28
27
|
AGENTS.md before touching its steps — it documents that project's specifics.
|
|
29
28
|
|
|
30
|
-
**Canvas convention:**
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
write a full replacement file from scratch, ignoring the template, when
|
|
40
|
-
someone asks for a genuinely custom canvas its patterns can't represent; in
|
|
41
|
-
that case follow this style contract so it still looks Sapiom-native:
|
|
42
|
-
${CANVAS_STYLE_GUIDELINES}
|
|
29
|
+
**Canvas convention:** the canvas pane renders the selected workflow's step
|
|
30
|
+
graph automatically and deterministically — the harness extracts it from the
|
|
31
|
+
workflow's manifest and draws the diagram (nodes, edges, a summary and
|
|
32
|
+
annotations) server-side: no LLM, no tokens, identical every time. You do NOT
|
|
33
|
+
author or edit any canvas HTML, and there is nothing to write under
|
|
34
|
+
\`.sapiom/canvas/\`. When someone asks to "visualize this workflow" or "how
|
|
35
|
+
does everything connect", just make sure the workflow is selected in the rail
|
|
36
|
+
(the Visualize button and the ⌘K action only force a re-render) — it draws
|
|
37
|
+
itself.
|
|
43
38
|
|
|
44
39
|
**Your current workspace state:** the harness mirrors what it knows about
|
|
45
40
|
this workspace at \`.sapiom/harness-context.json\`, relative to your working
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"default.js","sourceRoot":"","sources":["../../src/profiles/default.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"default.js","sourceRoot":"","sources":["../../src/profiles/default.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuDpC,CAAC,IAAI,EAAE,CAAC"}
|