@rubytech/create-maxy-code 0.1.559 → 0.1.560
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/package.json +1 -1
- package/payload/platform/plugins/admin/mcp/dist/index.js +15 -1
- package/payload/platform/plugins/admin/mcp/dist/index.js.map +1 -1
- package/payload/platform/plugins/admin/mcp/dist/lib/roster-census.d.ts +25 -0
- package/payload/platform/plugins/admin/mcp/dist/lib/roster-census.d.ts.map +1 -1
- package/payload/platform/plugins/admin/mcp/dist/lib/roster-census.js +50 -1
- package/payload/platform/plugins/admin/mcp/dist/lib/roster-census.js.map +1 -1
- package/payload/platform/plugins/admin/skills/agent-builder/SKILL.md +15 -10
- package/payload/platform/plugins/admin/skills/agent-builder/references/agent-pattern.md +6 -3
- package/payload/platform/plugins/admin/skills/specialist-management/SKILL.md +26 -0
- package/payload/platform/scripts/__tests__/authored-agent-durable-copy.test.sh +78 -0
- package/payload/platform/scripts/__tests__/provision-bundle-orphan.test.sh +132 -0
- package/payload/platform/scripts/lib/provision-account-dir.sh +47 -0
- package/payload/platform/services/claude-session-manager/dist/pty-spawner.d.ts.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/pty-spawner.js +26 -5
- package/payload/platform/services/claude-session-manager/dist/pty-spawner.js.map +1 -1
|
@@ -3,12 +3,37 @@ export interface RosterCensusInput {
|
|
|
3
3
|
agentsMdPath: string;
|
|
4
4
|
/** `<accountDir>/specialists/agents` — the directory spawn-context reads. */
|
|
5
5
|
specialistsAgentsDir: string;
|
|
6
|
+
/** Directories whose own `*.md` files are durable copies. Today just
|
|
7
|
+
* `$PLATFORM_ROOT/templates/specialists/agents`. Required, not optional:
|
|
8
|
+
* a caller that omitted them would report every live specialist as
|
|
9
|
+
* undurable. */
|
|
10
|
+
durableDirs: string[];
|
|
11
|
+
/** Plugin-tree roots. For each, every `<root>/<plugin>/agents/*.md` is a
|
|
12
|
+
* durable copy: the account tree (`store-skill`'s home for authored
|
|
13
|
+
* agents), the platform tree, and premium-plugins. A premium agent's only
|
|
14
|
+
* copy lives in its bundle and a reinstall re-delivers it, so omitting that
|
|
15
|
+
* root would report five standing false positives on beacons alone. */
|
|
16
|
+
durablePluginRoots: string[];
|
|
17
|
+
/** `<installRoot>/premium-plugins`. Omitted, missing, or holding no bundle
|
|
18
|
+
* directory yields an empty `bundleOrphans`: none of those states is
|
|
19
|
+
* evidence that the account's whole premium set is orphaned. */
|
|
20
|
+
premiumPluginsDir?: string;
|
|
6
21
|
}
|
|
7
22
|
export interface RosterCensusResult {
|
|
8
23
|
declared: number;
|
|
9
24
|
dispatchable: number;
|
|
10
25
|
/** Declared names with no `<name>.md` in the dispatch directory. */
|
|
11
26
|
orphaned: string[];
|
|
27
|
+
/** Live specialist filenames, `.md` included, absent from every durable
|
|
28
|
+
* root. Filenames rather than roster names because the durable copy is
|
|
29
|
+
* stored under the filename, and a `--` agent's two differ. */
|
|
30
|
+
undurable: string[];
|
|
31
|
+
/** Task 2418 — basenames of `*--*.md` in the dispatch directory with no file
|
|
32
|
+
* of that name under `<premiumPluginsDir>/<bundle>/agents/`. Dispatchable
|
|
33
|
+
* today, with no bundle behind them. Walks the directory rather than the
|
|
34
|
+
* roster, because dispatchability is a property of the directory
|
|
35
|
+
* `spawn-context.ts` reads, not of what AGENTS.md advertises. */
|
|
36
|
+
bundleOrphans: string[];
|
|
12
37
|
}
|
|
13
38
|
export declare function runRosterCensus(input: RosterCensusInput): RosterCensusResult;
|
|
14
39
|
//# sourceMappingURL=roster-census.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"roster-census.d.ts","sourceRoot":"","sources":["../../src/lib/roster-census.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"roster-census.d.ts","sourceRoot":"","sources":["../../src/lib/roster-census.ts"],"names":[],"mappings":"AAgCA,MAAM,WAAW,iBAAiB;IAChC,yEAAyE;IACzE,YAAY,EAAE,MAAM,CAAC;IACrB,6EAA6E;IAC7E,oBAAoB,EAAE,MAAM,CAAC;IAC7B;;;qBAGiB;IACjB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB;;;;4EAIwE;IACxE,kBAAkB,EAAE,MAAM,EAAE,CAAC;IAC7B;;qEAEiE;IACjE,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,oEAAoE;IACpE,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB;;oEAEgE;IAChE,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB;;;;sEAIkE;IAClE,aAAa,EAAE,MAAM,EAAE,CAAC;CACzB;AAyCD,wBAAgB,eAAe,CAAC,KAAK,EAAE,iBAAiB,GAAG,kBAAkB,CAgC5E"}
|
|
@@ -1,5 +1,40 @@
|
|
|
1
|
-
import { existsSync, readFileSync } from "node:fs";
|
|
1
|
+
import { existsSync, readFileSync, readdirSync } from "node:fs";
|
|
2
2
|
import { join } from "node:path";
|
|
3
|
+
/** `*.md` entries directly in `dir`. A missing directory is normal — not every
|
|
4
|
+
* install carries premium-plugins — and contributes nothing. An unreadable one
|
|
5
|
+
* is not: the throw propagates to the emit point, which reports
|
|
6
|
+
* `[roster-census] error` rather than a short durable set, because a partial
|
|
7
|
+
* set would name durable specialists as undurable. */
|
|
8
|
+
function markdownIn(dir) {
|
|
9
|
+
if (!existsSync(dir))
|
|
10
|
+
return [];
|
|
11
|
+
return readdirSync(dir).filter((entry) => entry.endsWith(".md"));
|
|
12
|
+
}
|
|
13
|
+
function subdirs(dir) {
|
|
14
|
+
if (!existsSync(dir))
|
|
15
|
+
return [];
|
|
16
|
+
return readdirSync(dir, { withFileTypes: true })
|
|
17
|
+
.filter((entry) => entry.isDirectory())
|
|
18
|
+
.map((entry) => entry.name);
|
|
19
|
+
}
|
|
20
|
+
function findBundleOrphans(specialistsAgentsDir, premiumPluginsDir) {
|
|
21
|
+
if (!premiumPluginsDir)
|
|
22
|
+
return [];
|
|
23
|
+
const bundles = subdirs(premiumPluginsDir);
|
|
24
|
+
// No bundle resolvable, whether the root is missing or merely empty, is not
|
|
25
|
+
// evidence of a fleet of orphans: both are indistinguishable from a brand
|
|
26
|
+
// that legitimately ships none (paths.ts bundleMode defaults to 'none').
|
|
27
|
+
// Provisioning applies the identical guard, so the two surfaces never
|
|
28
|
+
// disagree. An unreadable root throws, the same doctrine as markdownIn.
|
|
29
|
+
if (bundles.length === 0)
|
|
30
|
+
return [];
|
|
31
|
+
// Any bundle's agents/ dir: `--` names are already bundle-unique, so this
|
|
32
|
+
// asks the same question as parsing the prefix without deriving meaning from
|
|
33
|
+
// a filename.
|
|
34
|
+
return markdownIn(specialistsAgentsDir)
|
|
35
|
+
.filter((file) => file.includes("--"))
|
|
36
|
+
.filter((file) => !bundles.some((b) => existsSync(join(premiumPluginsDir, b, "agents", file))));
|
|
37
|
+
}
|
|
3
38
|
export function runRosterCensus(input) {
|
|
4
39
|
const body = existsSync(input.agentsMdPath)
|
|
5
40
|
? readFileSync(input.agentsMdPath, "utf8")
|
|
@@ -9,10 +44,24 @@ export function runRosterCensus(input) {
|
|
|
9
44
|
declared.push(match[1]);
|
|
10
45
|
}
|
|
11
46
|
const orphaned = declared.filter((name) => !existsSync(join(input.specialistsAgentsDir, `${name}.md`)));
|
|
47
|
+
const durable = new Set();
|
|
48
|
+
for (const dir of input.durableDirs) {
|
|
49
|
+
for (const filename of markdownIn(dir))
|
|
50
|
+
durable.add(filename);
|
|
51
|
+
}
|
|
52
|
+
for (const root of input.durablePluginRoots) {
|
|
53
|
+
for (const plugin of subdirs(root)) {
|
|
54
|
+
for (const filename of markdownIn(join(root, plugin, "agents")))
|
|
55
|
+
durable.add(filename);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
const undurable = markdownIn(input.specialistsAgentsDir).filter((filename) => !durable.has(filename));
|
|
12
59
|
return {
|
|
13
60
|
declared: declared.length,
|
|
14
61
|
dispatchable: declared.length - orphaned.length,
|
|
15
62
|
orphaned,
|
|
63
|
+
undurable,
|
|
64
|
+
bundleOrphans: findBundleOrphans(input.specialistsAgentsDir, input.premiumPluginsDir),
|
|
16
65
|
};
|
|
17
66
|
}
|
|
18
67
|
//# sourceMappingURL=roster-census.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"roster-census.js","sourceRoot":"","sources":["../../src/lib/roster-census.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"roster-census.js","sourceRoot":"","sources":["../../src/lib/roster-census.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAChE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAsEjC;;;;uDAIuD;AACvD,SAAS,UAAU,CAAC,GAAW;IAC7B,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO,EAAE,CAAC;IAChC,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;AACnE,CAAC;AAED,SAAS,OAAO,CAAC,GAAW;IAC1B,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO,EAAE,CAAC;IAChC,OAAO,WAAW,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;SAC7C,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;SACtC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAChC,CAAC;AAED,SAAS,iBAAiB,CACxB,oBAA4B,EAC5B,iBAA0B;IAE1B,IAAI,CAAC,iBAAiB;QAAE,OAAO,EAAE,CAAC;IAClC,MAAM,OAAO,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAC3C,4EAA4E;IAC5E,0EAA0E;IAC1E,yEAAyE;IACzE,sEAAsE;IACtE,wEAAwE;IACxE,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IACpC,0EAA0E;IAC1E,6EAA6E;IAC7E,cAAc;IACd,OAAO,UAAU,CAAC,oBAAoB,CAAC;SACpC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;SACrC,MAAM,CACL,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,CACvF,CAAC;AACN,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,KAAwB;IACtD,MAAM,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC,YAAY,CAAC;QACzC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,YAAY,EAAE,MAAM,CAAC;QAC1C,CAAC,CAAC,EAAE,CAAC;IACP,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,mCAAmC,CAAC,EAAE,CAAC;QACvE,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1B,CAAC;IACD,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAC9B,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,oBAAoB,EAAE,GAAG,IAAI,KAAK,CAAC,CAAC,CACtE,CAAC;IAEF,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAClC,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;QACpC,KAAK,MAAM,QAAQ,IAAI,UAAU,CAAC,GAAG,CAAC;YAAE,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAChE,CAAC;IACD,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,kBAAkB,EAAE,CAAC;QAC5C,KAAK,MAAM,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YACnC,KAAK,MAAM,QAAQ,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;gBAAE,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACzF,CAAC;IACH,CAAC;IACD,MAAM,SAAS,GAAG,UAAU,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC,MAAM,CAC7D,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CACrC,CAAC;IAEF,OAAO;QACL,QAAQ,EAAE,QAAQ,CAAC,MAAM;QACzB,YAAY,EAAE,QAAQ,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM;QAC/C,QAAQ;QACR,SAAS;QACT,aAAa,EAAE,iBAAiB,CAAC,KAAK,CAAC,oBAAoB,EAAE,KAAK,CAAC,iBAAiB,CAAC;KACtF,CAAC;AACJ,CAAC"}
|
|
@@ -96,18 +96,23 @@ Show the operator the complete file and ask them to review.
|
|
|
96
96
|
## Step 6: Install through specialist-management
|
|
97
97
|
|
|
98
98
|
The agent persists as part of an admin-managed plugin: the same durable home `store-skill` uses,
|
|
99
|
-
so it survives a reinstall and the agent and its skills stay together.
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
(a `PLUGIN.md` and the `.user-mirror` marker in both the account and mirror trees) before
|
|
99
|
+
so it survives a reinstall and the agent and its skills stay together. That home is the account's
|
|
100
|
+
own plugin tree, and it is the only one: operator plugins never live under
|
|
101
|
+
`$PLATFORM_ROOT/plugins`, which is immutable.
|
|
102
|
+
|
|
103
|
+
Write the composed file to `plugins/{plugin}/agents/{plugin}--{name}.md`. That copy is the
|
|
104
|
+
durable one, and the live copy is only ever made by copying it, so no order of operations leaves
|
|
105
|
+
a dispatchable agent that nothing can restore. `store-skill` already created the plugin when you
|
|
106
|
+
built the agent's skills; if the agent bundles only existing skills, so no plugin was created,
|
|
107
|
+
scaffold it first the way `store-skill` does — a `PLUGIN.md` under `plugins/{plugin}/` — before
|
|
109
108
|
writing the agent file.
|
|
110
109
|
|
|
110
|
+
Then follow `specialist-management`'s "Install an account-authored agent" path, which copies the
|
|
111
|
+
durable file into `specialists/agents/` and appends the `- **specialists:{name}**: {description}`
|
|
112
|
+
line to the admin `AGENTS.md`. Do not invent install logic, and never write an agent file
|
|
113
|
+
straight into `specialists/agents/`: a live file with no durable copy behind it is exactly what
|
|
114
|
+
this step exists to prevent.
|
|
115
|
+
|
|
111
116
|
## Step 7: Confirm
|
|
112
117
|
|
|
113
118
|
Tell the operator:
|
|
@@ -16,9 +16,12 @@ The roster splits along one line: what an agent is *for*.
|
|
|
16
16
|
writing, data, coding. It owns a capability surface, not a single artefact. These ship in
|
|
17
17
|
`platform/templates/specialists/agents/` and resolve as `specialists:<name>`.
|
|
18
18
|
- **Vertical bundle agent.** A job title that owns one deliverable and the skills that produce
|
|
19
|
-
it: a negotiator owns the buyer-pipeline package, a quoter owns the priced quote.
|
|
20
|
-
|
|
21
|
-
`
|
|
19
|
+
it: a negotiator owns the buyer-pipeline package, a quoter owns the priced quote. Named
|
|
20
|
+
`{plugin}--{agent}.md` and resolving as `specialists:<name>`, these have two homes. A
|
|
21
|
+
bundle-shipped one lives in its premium plugin's `agents/` directory. An operator-authored one
|
|
22
|
+
lives in the account's own `plugins/{plugin}/agents/`, the durable home `store-skill` uses;
|
|
23
|
+
that copy is what a reinstall preserves and what the live copy in `specialists/agents/` is
|
|
24
|
+
made from.
|
|
22
25
|
|
|
23
26
|
`agent-builder` authors vertical bundle agents. The forcing question is "what one thing does
|
|
24
27
|
this agent hand back?" If the honest answer is "several unrelated things", that is several
|
|
@@ -9,6 +9,11 @@ Invoked by the admin agent directly.
|
|
|
9
9
|
|
|
10
10
|
Manage specialist subagents at any time via conversation.
|
|
11
11
|
|
|
12
|
+
Authoring a *new* agent from scratch is `agent-builder`, not this skill. That skill decides the
|
|
13
|
+
deliverable, the model, the skills it owns and its tool allowlist, composes the file, and writes
|
|
14
|
+
the durable copy; it then hands the finished agent back here to install. This skill installs,
|
|
15
|
+
removes, and activates agents whose files already exist.
|
|
16
|
+
|
|
12
17
|
## Install a specialist
|
|
13
18
|
|
|
14
19
|
1. Use Bash: `cp $PLATFORM_ROOT/templates/specialists/agents/{name}.md specialists/agents/{name}.md`
|
|
@@ -45,3 +50,24 @@ For each `.md` file in `$PLATFORM_ROOT/plugins/{plugin-name}/agents/`:
|
|
|
45
50
|
4. Confirm removal to the user.
|
|
46
51
|
|
|
47
52
|
Core specialists (files without `--` in the name) are never affected by premium plugin operations.
|
|
53
|
+
|
|
54
|
+
## Account-authored plugin agents
|
|
55
|
+
|
|
56
|
+
An agent authored through `agent-builder` lives in the account's own plugin tree at
|
|
57
|
+
`plugins/{plugin-name}/agents/{plugin-name}--{agent-name}.md`. That copy is the durable one: it
|
|
58
|
+
is what survives a reinstall, and it is the only source the live copy is made from. A file in
|
|
59
|
+
`specialists/agents/` with nothing behind it in a durable tree cannot be restored by anything —
|
|
60
|
+
the boot-time `[roster-census]` line names those in its `undurable=` field.
|
|
61
|
+
|
|
62
|
+
### Install an account-authored agent
|
|
63
|
+
|
|
64
|
+
For each `.md` file in `plugins/{plugin-name}/agents/`:
|
|
65
|
+
|
|
66
|
+
1. Check whether `specialists/agents/{filename}` already exists — skip if so (idempotent).
|
|
67
|
+
2. Use Bash: `cp plugins/{plugin-name}/agents/{filename} specialists/agents/{filename}`
|
|
68
|
+
3. Extract the `name` and `description` fields from the copied file's YAML frontmatter.
|
|
69
|
+
4. Read `agents/admin/AGENTS.md`. If it already contains `specialists:{name}`, skip. Otherwise append: `- **specialists:{name}**: {description}` using Edit.
|
|
70
|
+
5. Confirm each installed specialist to the user — active from next session start.
|
|
71
|
+
|
|
72
|
+
The copy source is always the durable file. Never compose an agent directly into
|
|
73
|
+
`specialists/agents/`: that produces a dispatchable agent nothing can restore.
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# Task 2417 — the two admin skills that document specialist authoring must
|
|
3
|
+
# never document a live copy that is not made from a durable one.
|
|
4
|
+
#
|
|
5
|
+
# Task 1962 (ba626832b) dropped the platform mirror. agent-builder was never
|
|
6
|
+
# updated: it kept telling the agent to write the composed file "in both
|
|
7
|
+
# places" and to scaffold a `.user-mirror` marker in a mirror tree that no
|
|
8
|
+
# longer exists, then handed install to a specialist-management flow sourcing
|
|
9
|
+
# from $PLATFORM_ROOT/plugins/{plugin}/agents/ — a root an account-authored
|
|
10
|
+
# plugin never occupies. Every documented step after "compose the file" named a
|
|
11
|
+
# directory that was not there, so the agent improvised a bare Write into
|
|
12
|
+
# specialists/agents/ and the durable copy was never made. These are the four
|
|
13
|
+
# checkable shapes of that regression.
|
|
14
|
+
set -u
|
|
15
|
+
ROOT="$(cd "$(dirname "$0")/../../.." && pwd)"
|
|
16
|
+
AB="$ROOT/platform/plugins/admin/skills/agent-builder/SKILL.md"
|
|
17
|
+
SM="$ROOT/platform/plugins/admin/skills/specialist-management/SKILL.md"
|
|
18
|
+
# agent-builder Step 0 declares this reference authoritative and forbids
|
|
19
|
+
# paraphrasing it, so a wrong home here overrides Step 6 rather than merely
|
|
20
|
+
# duplicating it.
|
|
21
|
+
AP="$ROOT/platform/plugins/admin/skills/agent-builder/references/agent-pattern.md"
|
|
22
|
+
PASS=0; FAIL=0
|
|
23
|
+
|
|
24
|
+
for f in "$AB" "$SM" "$AP"; do
|
|
25
|
+
[[ -f "$f" ]] || { echo "FAIL: missing $f" >&2; exit 1; }
|
|
26
|
+
done
|
|
27
|
+
|
|
28
|
+
# 1. Every documented `cp` into specialists/agents/ sources from a durable root.
|
|
29
|
+
bad=$(grep -hoE 'cp [^`]*specialists/agents/[^`]*' "$AB" "$SM" "$AP" \
|
|
30
|
+
| grep -vE 'cp \$PLATFORM_ROOT/templates/specialists/agents/' \
|
|
31
|
+
| grep -vE 'cp \$PLATFORM_ROOT/plugins/\{plugin-name\}/agents/' \
|
|
32
|
+
| grep -vE 'cp plugins/\{plugin-name\}/agents/' || true)
|
|
33
|
+
if [[ -z "$bad" ]]; then
|
|
34
|
+
echo "PASS: every documented cp into specialists/agents/ sources from a durable root"; PASS=$((PASS+1))
|
|
35
|
+
else
|
|
36
|
+
echo "FAIL: cp into specialists/agents/ from a non-durable source:" >&2
|
|
37
|
+
printf ' %s\n' "$bad" >&2; FAIL=$((FAIL+1))
|
|
38
|
+
fi
|
|
39
|
+
|
|
40
|
+
# 2. The account-authored install flow exists. Without this, check 1 passes
|
|
41
|
+
# vacuously once the flow is deleted.
|
|
42
|
+
if grep -qE 'cp plugins/\{plugin-name\}/agents/' "$SM"; then
|
|
43
|
+
echo "PASS: specialist-management documents the account-authored install flow"; PASS=$((PASS+1))
|
|
44
|
+
else
|
|
45
|
+
echo "FAIL: specialist-management has no cp from plugins/{plugin-name}/agents/" >&2; FAIL=$((FAIL+1))
|
|
46
|
+
fi
|
|
47
|
+
|
|
48
|
+
# 3. No platform mirror. 1962 removed it; a reference to it here is stale by
|
|
49
|
+
# construction and sends the agent to a tree that is not there. Matched by
|
|
50
|
+
# the three shapes the stale text actually used, not by the bare word:
|
|
51
|
+
# "mirrors the reference agent.yaml" is ordinary English and must pass.
|
|
52
|
+
MIRROR='\.user-mirror|platform mirror|mirror tree|mirrored under'
|
|
53
|
+
if ! grep -qiE "$MIRROR" "$AB" "$SM" "$AP"; then
|
|
54
|
+
echo "PASS: no skill in the authoring path references a platform mirror"; PASS=$((PASS+1))
|
|
55
|
+
else
|
|
56
|
+
echo "FAIL: a platform-mirror reference survives (1962 removed the mirror):" >&2
|
|
57
|
+
grep -inE "$MIRROR" "$AB" "$SM" "$AP" >&2; FAIL=$((FAIL+1))
|
|
58
|
+
fi
|
|
59
|
+
|
|
60
|
+
# 4. agent-builder names the account plugin tree as the durable home.
|
|
61
|
+
if grep -qE 'plugins/\{plugin\}/agents/' "$AB"; then
|
|
62
|
+
echo "PASS: agent-builder names the account plugin tree as the durable home"; PASS=$((PASS+1))
|
|
63
|
+
else
|
|
64
|
+
echo "FAIL: agent-builder does not name plugins/{plugin}/agents/ as the durable home" >&2; FAIL=$((FAIL+1))
|
|
65
|
+
fi
|
|
66
|
+
|
|
67
|
+
# 5. So does the reference Step 0 defers to. Without this, agent-pattern.md can
|
|
68
|
+
# say an authored agent lives in a premium bundle — a tree the account cannot
|
|
69
|
+
# write — and that overrides Step 6, because Step 0 forbids paraphrasing it.
|
|
70
|
+
if grep -qE 'plugins/\{plugin\}/agents/' "$AP"; then
|
|
71
|
+
echo "PASS: agent-pattern names the account plugin tree for an authored agent"; PASS=$((PASS+1))
|
|
72
|
+
else
|
|
73
|
+
echo "FAIL: agent-pattern does not name plugins/{plugin}/agents/ as an authored agent's home" >&2; FAIL=$((FAIL+1))
|
|
74
|
+
fi
|
|
75
|
+
|
|
76
|
+
echo "---"
|
|
77
|
+
echo "authored-agent-durable-copy: $PASS passed, $FAIL failed"
|
|
78
|
+
[[ $FAIL -eq 0 ]]
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# Task 2418 — a `--` agent whose premium bundle is no longer on the install tree
|
|
3
|
+
# stays dispatchable forever.
|
|
4
|
+
#
|
|
5
|
+
# 2415's retirement loop deletes only what its manifest claims, and the manifest
|
|
6
|
+
# names only files copied from $TEMPLATES_DIR, so a premium `--` file is never in
|
|
7
|
+
# it. Nothing noticed when the bundle behind it left the tree: on beacons,
|
|
8
|
+
# writer-craft--manuscript-reviewer.md was dispatchable from May 13 onward with
|
|
9
|
+
# no writer-craft bundle under premium-plugins/.
|
|
10
|
+
set -uo pipefail
|
|
11
|
+
SCRIPT_DIR_T="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
12
|
+
PLAT_SCRIPTS="$SCRIPT_DIR_T/.."
|
|
13
|
+
REAL_PROJECT="$(cd "$PLAT_SCRIPTS/.." && pwd)"
|
|
14
|
+
PASS=0; FAIL=0; FAILED=()
|
|
15
|
+
assert_absent() { if [ ! -e "$1" ]; then PASS=$((PASS+1)); else FAIL=$((FAIL+1)); FAILED+=("$2: expected absent [$1]"); fi; }
|
|
16
|
+
assert_present() { if [ -e "$1" ]; then PASS=$((PASS+1)); else FAIL=$((FAIL+1)); FAILED+=("$2: expected present [$1]"); fi; }
|
|
17
|
+
assert_eq() { if [ "$1" = "$2" ]; then PASS=$((PASS+1)); else FAIL=$((FAIL+1)); FAILED+=("$3: expected [$2] got [$1]"); fi; }
|
|
18
|
+
|
|
19
|
+
. "$PLAT_SCRIPTS/lib/provision-account-dir.sh"
|
|
20
|
+
export SCRIPT_DIR="$PLAT_SCRIPTS"
|
|
21
|
+
export USERS_FILE="/nonexistent/users.json"
|
|
22
|
+
|
|
23
|
+
# A temp platform/ whose sibling premium-plugins/ this test controls. plugins and
|
|
24
|
+
# config are symlinked: provisioning reads both, and neither is under test here.
|
|
25
|
+
T=$(mktemp -d)
|
|
26
|
+
mkdir -p "$T/platform" "$T/premium-plugins/present-bundle/agents"
|
|
27
|
+
cp -R "$REAL_PROJECT/templates" "$T/platform/templates"
|
|
28
|
+
ln -s "$REAL_PROJECT/plugins" "$T/platform/plugins"
|
|
29
|
+
ln -s "$REAL_PROJECT/config" "$T/platform/config"
|
|
30
|
+
export PROJECT_DIR="$T/platform"
|
|
31
|
+
export TEMPLATES_DIR="$T/platform/templates"
|
|
32
|
+
|
|
33
|
+
ACCT="$T/acct"
|
|
34
|
+
ACCT_ID="24182418-2418-2418-2418-241824182418"
|
|
35
|
+
ORPHANED="$ACCT/specialists/agents-orphaned"
|
|
36
|
+
|
|
37
|
+
# One `--` agent whose bundle ships it, one whose bundle is gone.
|
|
38
|
+
mkdir -p "$ACCT/specialists/agents"
|
|
39
|
+
printf -- '---\nname: keeper\n---\nShipped by a bundle that is still installed.\n' \
|
|
40
|
+
> "$T/premium-plugins/present-bundle/agents/present-bundle--keeper.md"
|
|
41
|
+
cp "$T/premium-plugins/present-bundle/agents/present-bundle--keeper.md" \
|
|
42
|
+
"$ACCT/specialists/agents/present-bundle--keeper.md"
|
|
43
|
+
printf -- '---\nname: orphan\n---\nIts bundle is no longer on the tree.\n' \
|
|
44
|
+
> "$ACCT/specialists/agents/gone-bundle--orphan.md"
|
|
45
|
+
|
|
46
|
+
# --- Run 1 — the orphan is reconciled, the keeper is not. --------------------
|
|
47
|
+
OUT1="$(provision_account_dir "$ACCT" "$ACCT_ID" "house" 2>&1)"
|
|
48
|
+
|
|
49
|
+
assert_present "$ACCT/specialists/agents/present-bundle--keeper.md" "run1:bundle-present-survives"
|
|
50
|
+
assert_absent "$ACCT/specialists/agents/gone-bundle--orphan.md" "run1:orphan-undispatchable"
|
|
51
|
+
assert_present "$ORPHANED/gone-bundle--orphan.md" "run1:orphan-preserved"
|
|
52
|
+
assert_absent "$ACCT/specialists/agents-disabled/gone-bundle--orphan.md" "run1:not-in-disable-quarantine"
|
|
53
|
+
assert_eq "$(printf '%s' "$OUT1" | grep -c 'op=specialist-orphaned name=gone-bundle--orphan.md reason=bundle-absent')" "1" "run1:orphan-named"
|
|
54
|
+
assert_eq "$(printf '%s' "$OUT1" | grep -c 'op=specialist-orphan-reconcile orphaned=1')" "1" "run1:count-one"
|
|
55
|
+
|
|
56
|
+
# --- Run 2 — nothing left to reconcile: zero is still logged. ----------------
|
|
57
|
+
OUT2="$(provision_account_dir "$ACCT" "$ACCT_ID" "house" 2>&1)"
|
|
58
|
+
assert_eq "$(printf '%s' "$OUT2" | grep -c 'op=specialist-orphan-reconcile orphaned=0')" "1" "run2:zero-count-logged"
|
|
59
|
+
assert_eq "$(printf '%s' "$OUT2" | grep -c 'op=specialist-orphaned name=')" "0" "run2:nothing-reconciled"
|
|
60
|
+
assert_present "$ACCT/specialists/agents/present-bundle--keeper.md" "run2:keeper-still-dispatchable"
|
|
61
|
+
|
|
62
|
+
# --- An orphan of a name already quarantined replaces it. -------------------
|
|
63
|
+
# The copy leaving the dispatch directory is the one that was live, so it is the
|
|
64
|
+
# copy worth keeping. Pinned because a later change to `mv -n` would silently
|
|
65
|
+
# keep the stale one and contradict the contract doc.
|
|
66
|
+
printf -- '---\nname: orphan\n---\nSTALE QUARANTINED COPY\n' > "$ORPHANED/gone-bundle--orphan.md"
|
|
67
|
+
printf -- '---\nname: orphan\n---\nLIVE COPY\n' \
|
|
68
|
+
> "$ACCT/specialists/agents/gone-bundle--orphan.md"
|
|
69
|
+
provision_account_dir "$ACCT" "$ACCT_ID" "house" >/dev/null 2>&1
|
|
70
|
+
assert_eq "$(grep -c 'LIVE COPY' "$ORPHANED/gone-bundle--orphan.md")" "1" "requarantine:live-copy-kept"
|
|
71
|
+
assert_eq "$(grep -c 'STALE' "$ORPHANED/gone-bundle--orphan.md")" "0" "requarantine:stale-copy-replaced"
|
|
72
|
+
|
|
73
|
+
# --- Run 3 — premium root present but holding no bundles. -------------------
|
|
74
|
+
# Indistinguishable from a brand that ships none (paths.ts bundleMode defaults
|
|
75
|
+
# to 'none') and from a partial install. Reconciling here would strip the whole
|
|
76
|
+
# premium set off the account, so it reconciles nothing, exactly as 2415 refuses
|
|
77
|
+
# to read zero templates as twelve simultaneous retirements.
|
|
78
|
+
rm -rf "$T/premium-plugins/present-bundle"
|
|
79
|
+
OUT3="$(provision_account_dir "$ACCT" "$ACCT_ID" "house" 2>&1)"
|
|
80
|
+
assert_present "$ACCT/specialists/agents/present-bundle--keeper.md" "run3:empty-premium-root-moves-nothing"
|
|
81
|
+
assert_eq "$(printf '%s' "$OUT3" | grep -c 'op=specialist-orphan-reconcile orphaned=0 reason=no-premium-bundles')" "1" "run3:loud-line"
|
|
82
|
+
assert_eq "$(printf '%s' "$OUT3" | grep -c 'op=specialist-orphaned name=')" "0" "run3:no-reconciliations"
|
|
83
|
+
|
|
84
|
+
# --- Run 4 — premium root missing entirely. Same answer, same reason. --------
|
|
85
|
+
rm -rf "$T/premium-plugins"
|
|
86
|
+
OUT4="$(provision_account_dir "$ACCT" "$ACCT_ID" "house" 2>&1)"
|
|
87
|
+
assert_present "$ACCT/specialists/agents/present-bundle--keeper.md" "run4:no-premium-root-moves-nothing"
|
|
88
|
+
assert_eq "$(printf '%s' "$OUT4" | grep -c 'op=specialist-orphan-reconcile orphaned=0 reason=no-premium-bundles')" "1" "run4:loud-line"
|
|
89
|
+
assert_eq "$(printf '%s' "$OUT4" | grep -c 'op=specialist-orphaned name=')" "0" "run4:no-reconciliations"
|
|
90
|
+
|
|
91
|
+
rm -rf "$T"
|
|
92
|
+
|
|
93
|
+
# --- The install path runs under `set -euo pipefail`; this suite does not. ---
|
|
94
|
+
# setup-account.sh:17 sets all three and calls provision_account_dir at :63, so
|
|
95
|
+
# an `&&` list whose test fails could abort a real install where it cannot abort
|
|
96
|
+
# here. Both new branches end in one: the `[ -d "$_b" ]` bundle count and the
|
|
97
|
+
# `[ "$_found" = 1 ] && continue` miss. A subshell running the real options is
|
|
98
|
+
# the only place that difference is visible.
|
|
99
|
+
set_e_case() {
|
|
100
|
+
local premium_state="$1" expect_moved="$2" label="$3"
|
|
101
|
+
local out rc
|
|
102
|
+
out="$(
|
|
103
|
+
set -euo pipefail
|
|
104
|
+
. "$PLAT_SCRIPTS/lib/provision-account-dir.sh"
|
|
105
|
+
export SCRIPT_DIR="$PLAT_SCRIPTS" USERS_FILE="/nonexistent/users.json"
|
|
106
|
+
S=$(mktemp -d)
|
|
107
|
+
mkdir -p "$S/platform"
|
|
108
|
+
cp -R "$REAL_PROJECT/templates" "$S/platform/templates"
|
|
109
|
+
ln -s "$REAL_PROJECT/plugins" "$S/platform/plugins"
|
|
110
|
+
ln -s "$REAL_PROJECT/config" "$S/platform/config"
|
|
111
|
+
export PROJECT_DIR="$S/platform" TEMPLATES_DIR="$S/platform/templates"
|
|
112
|
+
[ "$premium_state" = "with-bundle" ] && {
|
|
113
|
+
mkdir -p "$S/premium-plugins/present-bundle/agents"
|
|
114
|
+
printf -- '---\n' > "$S/premium-plugins/present-bundle/agents/present-bundle--keeper.md"
|
|
115
|
+
}
|
|
116
|
+
A="$S/acct"; mkdir -p "$A/specialists/agents"
|
|
117
|
+
printf -- '---\nname: orphan\n---\n' > "$A/specialists/agents/gone-bundle--orphan.md"
|
|
118
|
+
provision_account_dir "$A" "24182418-2418-2418-2418-241824182418" "house" >/dev/null 2>&1
|
|
119
|
+
[ -f "$A/specialists/agents-orphaned/gone-bundle--orphan.md" ] && printf 'moved' || printf 'kept'
|
|
120
|
+
rm -rf "$S"
|
|
121
|
+
)"; rc=$?
|
|
122
|
+
assert_eq "$rc" "0" "$label:no-set-e-abort"
|
|
123
|
+
assert_eq "$out" "$expect_moved" "$label:outcome"
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
# No premium root: the guard branch, where the bundle count test never matches.
|
|
127
|
+
set_e_case "bare" "kept" "set-e:no-premium-root"
|
|
128
|
+
# A bundle present but not shipping this file: the `_found=0` reconcile branch.
|
|
129
|
+
set_e_case "with-bundle" "moved" "set-e:orphan-moved"
|
|
130
|
+
|
|
131
|
+
echo "PASS=$PASS FAIL=$FAIL"
|
|
132
|
+
if [ "$FAIL" -gt 0 ]; then printf '%s\n' "${FAILED[@]}"; exit 1; fi
|
|
@@ -373,6 +373,53 @@ for n in names:
|
|
|
373
373
|
fi
|
|
374
374
|
fi
|
|
375
375
|
|
|
376
|
+
# Task 2418 — a `--` agent whose bundle has left the install tree stays
|
|
377
|
+
# dispatchable forever. The retirement loop above deletes only what the
|
|
378
|
+
# manifest claims, and the manifest names only files copied from
|
|
379
|
+
# $TEMPLATES_DIR, so a premium `--` file is never in it and nothing notices
|
|
380
|
+
# when its bundle goes. Measured on beacons: writer-craft--manuscript-reviewer
|
|
381
|
+
# dispatchable since May 13 with no writer-craft bundle under premium-plugins/.
|
|
382
|
+
#
|
|
383
|
+
# MOVE, never delete. The bundle is gone, so unlike a retired template there is
|
|
384
|
+
# nothing to restore from and this may be the only copy on the machine. It does
|
|
385
|
+
# NOT go to agents-disabled/: that directory is paired with agents-disabled.json
|
|
386
|
+
# and a file there with no store entry is exactly the drift described above.
|
|
387
|
+
#
|
|
388
|
+
# Runs AFTER the disabled block so that in the drift state (store names it,
|
|
389
|
+
# file still live) the disable wins and the store and its directory agree.
|
|
390
|
+
local _premium_root="$PROJECT_DIR/../premium-plugins"
|
|
391
|
+
local _bundle_count=0 _b
|
|
392
|
+
for _b in "$_premium_root"/*/; do
|
|
393
|
+
[ -d "$_b" ] && _bundle_count=$((_bundle_count + 1))
|
|
394
|
+
done
|
|
395
|
+
if [ "$_bundle_count" -eq 0 ]; then
|
|
396
|
+
# No bundle resolvable, whether the root is missing or merely empty. Both
|
|
397
|
+
# make every `--` file test as orphaned, and both are indistinguishable from
|
|
398
|
+
# a brand that legitimately ships none (paths.ts bundleMode defaults to
|
|
399
|
+
# 'none'). Acting would strip the account's whole premium set. Same doctrine
|
|
400
|
+
# as no-templates-on-disk above.
|
|
401
|
+
echo " op=specialist-orphan-reconcile orphaned=0 reason=no-premium-bundles"
|
|
402
|
+
else
|
|
403
|
+
local _orphaned=0 _cand _base _twin _found
|
|
404
|
+
for _cand in "$ACCOUNT_DIR/specialists/agents/"*--*.md; do
|
|
405
|
+
[ -f "$_cand" ] || continue
|
|
406
|
+
_base="$(basename "$_cand")"
|
|
407
|
+
# Any bundle's agents/ dir. `--` names are already bundle-unique, so this
|
|
408
|
+
# answers the same question as parsing the prefix, without reintroducing a
|
|
409
|
+
# filename-derived predicate.
|
|
410
|
+
_found=0
|
|
411
|
+
for _twin in "$_premium_root"/*/agents/"$_base"; do
|
|
412
|
+
[ -f "$_twin" ] && { _found=1; break; }
|
|
413
|
+
done
|
|
414
|
+
[ "$_found" = 1 ] && continue
|
|
415
|
+
mkdir -p "$ACCOUNT_DIR/specialists/agents-orphaned"
|
|
416
|
+
mv -f "$_cand" "$ACCOUNT_DIR/specialists/agents-orphaned/$_base"
|
|
417
|
+
echo " op=specialist-orphaned name=$_base reason=bundle-absent"
|
|
418
|
+
_orphaned=$((_orphaned + 1))
|
|
419
|
+
done
|
|
420
|
+
echo " op=specialist-orphan-reconcile orphaned=$_orphaned"
|
|
421
|
+
fi
|
|
422
|
+
|
|
376
423
|
rm -f "$ACCOUNT_DIR/.claude/agents/"*.md 2>/dev/null || true
|
|
377
424
|
|
|
378
425
|
# SOUL.md — user-controlled. Only create if missing. Never overwrite.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pty-spawner.d.ts","sourceRoot":"","sources":["../src/pty-spawner.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"pty-spawner.d.ts","sourceRoot":"","sources":["../src/pty-spawner.ts"],"names":[],"mappings":"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"}
|
|
@@ -1177,8 +1177,27 @@ export async function spawnClaudeSession(deps, args) {
|
|
|
1177
1177
|
// session_<id> RC URL, so the flag is dead weight (one idle outbound
|
|
1178
1178
|
// WebSocket per visitor). Admin interactive sessions now run under the
|
|
1179
1179
|
// per-account `claude rc` daemon, not per-spawn --remote-control.
|
|
1180
|
+
// Task 2420 — a CHANNEL-BOUND public spawn is the exception to Task 500. The
|
|
1181
|
+
// flag is not dead weight there: without it a notifications/claude/channel
|
|
1182
|
+
// message reaches the agent and never becomes a turn, so every public webchat,
|
|
1183
|
+
// WhatsApp and Telegram session received its inbound and answered nothing.
|
|
1184
|
+
// Measured on the laptop 2026-08-04 by driving the real webhook with synthetic
|
|
1185
|
+
// senders — the identical public argv replied with the flag (op=reply bytes=32,
|
|
1186
|
+
// 75,360-byte transcript) and produced no turn at all without it, across three
|
|
1187
|
+
// sessions, against the admin path which carries the flag and has always
|
|
1188
|
+
// worked. A public spawn with NO channel keeps Task 500's saving.
|
|
1180
1189
|
const headless = isSpecialistSpawn && HEADLESS_ROLES.has(args.specialist);
|
|
1181
|
-
const
|
|
1190
|
+
const channelBound = Boolean(args.webchatChannel || args.waChannel || args.telegramChannel);
|
|
1191
|
+
const remoteControl = !headless && (args.role !== 'public' || channelBound);
|
|
1192
|
+
// Task 2420 — the flag widened; the OPERATOR surface did not. Two other things
|
|
1193
|
+
// keyed off the old predicate: `CLAUDE_CODE_REMOTE_ENVIRONMENT_TYPE` below,
|
|
1194
|
+
// which Task 1724 documents as enabling SendUserFile, and URL capture, which
|
|
1195
|
+
// exists to give an operator an iframe URL. Neither belongs to a visitor: the
|
|
1196
|
+
// first would put a file-sending tool inside the Task 615 ringfence, whose
|
|
1197
|
+
// whole premise is that a public spawn's surface is its channel reply tool or
|
|
1198
|
+
// nothing, and the second captures a URL Task 500 established no visitor ever
|
|
1199
|
+
// opens. They keep the narrow predicate.
|
|
1200
|
+
const remoteOperatorSurface = !headless && args.role !== 'public';
|
|
1182
1201
|
const argv = ['--verbose'];
|
|
1183
1202
|
if (remoteControl)
|
|
1184
1203
|
argv.push('--remote-control');
|
|
@@ -1827,7 +1846,7 @@ export async function spawnClaudeSession(deps, args) {
|
|
|
1827
1846
|
// happens on every spawn whose bridge DID bind — this makes it unconditional
|
|
1828
1847
|
// rather than new in kind. An upload failure is recorded on the attachment
|
|
1829
1848
|
// (`upload_error`) and never thrown, so it cannot fail the delivery itself.
|
|
1830
|
-
if (
|
|
1849
|
+
if (remoteOperatorSurface)
|
|
1831
1850
|
spawnEnv.CLAUDE_CODE_REMOTE_ENVIRONMENT_TYPE = 'remote';
|
|
1832
1851
|
// Task 207 — specialist spawns inherit per-account env explicitly so
|
|
1833
1852
|
// plugin-system MCP children get a deterministic context without the
|
|
@@ -2081,8 +2100,10 @@ export async function spawnClaudeSession(deps, args) {
|
|
|
2081
2100
|
// Task 171 — headless spawns never emit the `/remote-control is active`
|
|
2082
2101
|
// banner (the flag is absent), so the handler is not attached and no
|
|
2083
2102
|
// PTY bytes are consumed by a regex that will never match. Task 500 —
|
|
2084
|
-
// same for public spawns
|
|
2085
|
-
//
|
|
2103
|
+
// same for public spawns, so the gate keys off the operator-surface
|
|
2104
|
+
// predicate, not `headless`. Task 2420 — and not off `remoteControl`
|
|
2105
|
+
// either, now that a channel-bound public spawn carries the flag: the
|
|
2106
|
+
// banner it emits names a URL no visitor opens.
|
|
2086
2107
|
//
|
|
2087
2108
|
// Task 260 — `capturedUrl` is the value SpawnedSession returns to the
|
|
2088
2109
|
// caller (the route includes it in the immediate /spawn response when
|
|
@@ -2093,7 +2114,7 @@ export async function spawnClaudeSession(deps, args) {
|
|
|
2093
2114
|
// Mutable holder so the URL callback can find the row once sessionId
|
|
2094
2115
|
// is known. The PID-file event below sets sessionIdRef.current.
|
|
2095
2116
|
const sessionIdRef = { current: null };
|
|
2096
|
-
if (
|
|
2117
|
+
if (remoteOperatorSurface) {
|
|
2097
2118
|
startUrlCapture({
|
|
2098
2119
|
pty,
|
|
2099
2120
|
timeoutMs: deps.urlCaptureTimeoutMs,
|