external-subagent 0.3.1 → 0.3.2
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/cli/constants.mjs
CHANGED
|
@@ -8,7 +8,7 @@ const IS_DEBUG_VARIANT = process.env.EXTERNAL_SUBAGENT_VARIANT === 'debug';
|
|
|
8
8
|
|
|
9
9
|
export const PRODUCT_NAME = IS_DEBUG_VARIANT ? 'external-subagent-debug' : 'external-subagent';
|
|
10
10
|
export const PRODUCT_ID = IS_DEBUG_VARIANT ? 'external_subagent_debug' : 'external_subagent';
|
|
11
|
-
export const VERSION = '0.3.
|
|
11
|
+
export const VERSION = '0.3.2';
|
|
12
12
|
export const LAUNCH_AGENT_LABEL = IS_DEBUG_VARIANT ? 'com.external-subagent-debug.daemon' : 'com.external-subagent.daemon';
|
|
13
13
|
export const DAEMON_BIN_NAME = IS_DEBUG_VARIANT ? 'external-subagent-debugd' : 'external-subagentd';
|
|
14
14
|
export const MCP_BIN_NAME = IS_DEBUG_VARIANT ? 'external-subagent-debug-mcp' : 'external-subagent-mcp';
|
|
Binary file
|
|
Binary file
|
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schema_version": 1,
|
|
3
3
|
"product": "external-subagent",
|
|
4
|
-
"version": "0.3.
|
|
4
|
+
"version": "0.3.2",
|
|
5
5
|
"platform": "darwin-arm64",
|
|
6
6
|
"files": [
|
|
7
7
|
{
|
|
8
8
|
"name": "external-subagentd",
|
|
9
|
-
"bytes":
|
|
9
|
+
"bytes": 9907776,
|
|
10
10
|
"mode": "755",
|
|
11
|
-
"sha256": "
|
|
11
|
+
"sha256": "b0dc9625006f6bbce38e78e46aa7ada47c9ba00c193e51b54f430302d931bfa6"
|
|
12
12
|
},
|
|
13
13
|
{
|
|
14
14
|
"name": "external-subagent-mcp",
|
|
15
15
|
"bytes": 935760,
|
|
16
16
|
"mode": "755",
|
|
17
|
-
"sha256": "
|
|
17
|
+
"sha256": "0b26f44eaa3407016529aec3b948a56e3318cbc29f6d9b169056f426440b8478"
|
|
18
18
|
}
|
|
19
19
|
]
|
|
20
20
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "external-subagent",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.2",
|
|
4
4
|
"description": "Manage bounded ZCode, DeepSeek Harness (DSH), Codex, and Google Antigravity (agy) subagent tasks through a local MCP service for any local host (Codex, ZCode, or a custom MCP client)",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
// Controlled-prefix install check for the packed artifact: install the tgz
|
|
3
3
|
// into a throwaway npm prefix with an isolated HOME and npm cache, then verify
|
|
4
|
-
// the staged bin entries, install-only HOME purity, an explicit
|
|
5
|
-
// launchd neutralized), and the resulting
|
|
4
|
+
// the staged bin entries, install-only HOME purity, an explicit host-neutral
|
|
5
|
+
// init (with launchd neutralized), and the resulting standalone-service
|
|
6
|
+
// artifacts (LaunchAgent, config, activation state, retained payload bytes).
|
|
6
7
|
// This never touches the real user HOME, the real ~/.codex, or launchd.
|
|
7
8
|
// Usage: test-installed-tarball.mjs [package.tgz]
|
|
8
9
|
import fs from 'node:fs';
|
|
@@ -47,27 +48,28 @@ try {
|
|
|
47
48
|
process.exit(1);
|
|
48
49
|
}
|
|
49
50
|
|
|
50
|
-
//
|
|
51
|
-
//
|
|
52
|
-
//
|
|
53
|
-
const
|
|
54
|
-
|
|
55
|
-
if (!codexAvailable) initArgs.push('--skip-codex-plugin');
|
|
56
|
-
const init = JSON.parse(run(cli, initArgs, { env }).stdout);
|
|
57
|
-
if (!init.ok || !init.installed) {
|
|
51
|
+
// Host-neutral init: the standalone service layer only. Codex is never
|
|
52
|
+
// invoked and no host binding is staged — those belong to install-plugin /
|
|
53
|
+
// install-mcp and are covered by the install test suite, not this smoke.
|
|
54
|
+
const init = JSON.parse(run(cli, ['init'], { env }).stdout);
|
|
55
|
+
if (!init.ok || !init.completed?.includes('publish-active-payload')) {
|
|
58
56
|
process.stderr.write(`init did not complete: ${JSON.stringify(init)}\n`);
|
|
59
57
|
process.exit(1);
|
|
60
58
|
}
|
|
59
|
+
const data = path.join(home, 'Library', 'Application Support', 'external-subagent');
|
|
61
60
|
const expectedArtifacts = [
|
|
62
61
|
path.join(home, 'Library', 'LaunchAgents', 'com.external-subagent.daemon.plist'),
|
|
63
|
-
path.join(
|
|
64
|
-
path.join(
|
|
62
|
+
path.join(data, 'config.json'),
|
|
63
|
+
path.join(data, 'install-state.json'),
|
|
64
|
+
path.join(data, 'payload-store', init.payload.version, 'external-subagentd'),
|
|
65
65
|
];
|
|
66
|
-
if (codexAvailable) expectedArtifacts.push(path.join(home, '.agents', 'plugins', 'marketplace.json'));
|
|
67
66
|
for (const target of expectedArtifacts) {
|
|
68
67
|
if (!fs.existsSync(target)) { process.stderr.write(`init artifact missing: ${target}\n`); process.exit(1); }
|
|
69
68
|
}
|
|
70
|
-
|
|
69
|
+
for (const forbidden of [path.join(home, 'plugins', 'external-subagent'), path.join(home, '.agents')]) {
|
|
70
|
+
if (fs.existsSync(forbidden)) { process.stderr.write(`init must bind no host: ${forbidden} exists\n`); process.exit(1); }
|
|
71
|
+
}
|
|
72
|
+
process.stdout.write(`${JSON.stringify({ installed: true, prefix: `${prefix} (removed)`, payload: init.payload, service: init.service }, null, 2)}\n`);
|
|
71
73
|
} finally {
|
|
72
74
|
fs.rmSync(work, { recursive: true, force: true });
|
|
73
75
|
}
|