claude-nexus 0.28.1 → 0.28.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.
@@ -7,7 +7,7 @@
7
7
  {
8
8
  "name": "claude-nexus",
9
9
  "description": "Agent orchestration plugin for Claude Code. Injects optimized context per agent role with minimal overhead.",
10
- "version": "0.28.1",
10
+ "version": "0.28.2",
11
11
  "author": {
12
12
  "name": "kih"
13
13
  },
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "claude-nexus",
3
- "version": "0.28.1",
3
+ "version": "0.28.2",
4
4
  "description": "Agent orchestration plugin for Claude Code — optimized context injection per role",
5
5
  "author": {
6
6
  "name": "kih"
package/VERSION CHANGED
@@ -1 +1 @@
1
- 0.28.1
1
+ 0.28.2
@@ -100,6 +100,22 @@ ${ruleContent}
100
100
  `) };
101
101
  };
102
102
  var handler_default = handler;
103
- export {
104
- handler_default as default
105
- };
103
+
104
+ // ../../../../../tmp/nexus-hook-entry-agent-bootstrap-1776672660252/agent-bootstrap-entry.ts
105
+ import { readFileSync as readFileSync2 } from "node:fs";
106
+ async function main() {
107
+ let raw = "";
108
+ try {
109
+ raw = readFileSync2(0, "utf-8");
110
+ } catch {}
111
+ const input = raw ? JSON.parse(raw) : {};
112
+ const result = await handler_default(input);
113
+ if (result != null && result !== undefined) {
114
+ process.stdout.write(JSON.stringify(result));
115
+ }
116
+ }
117
+ main().then(() => process.exit(0), (err) => {
118
+ process.stderr.write(String(err?.stack ?? err) + `
119
+ `);
120
+ process.exit(1);
121
+ });
@@ -159,6 +159,22 @@ Subagent "${agent_type}" finished. Tasks still pending with this role: ${ids}. R
159
159
  }
160
160
  };
161
161
  var handler_default = handler;
162
- export {
163
- handler_default as default
164
- };
162
+
163
+ // ../../../../../tmp/nexus-hook-entry-agent-finalize-1776672660245/agent-finalize-entry.ts
164
+ import { readFileSync as readFileSync2 } from "node:fs";
165
+ async function main() {
166
+ let raw = "";
167
+ try {
168
+ raw = readFileSync2(0, "utf-8");
169
+ } catch {}
170
+ const input = raw ? JSON.parse(raw) : {};
171
+ const result = await handler_default(input);
172
+ if (result != null && result !== undefined) {
173
+ process.stdout.write(JSON.stringify(result));
174
+ }
175
+ }
176
+ main().then(() => process.exit(0), (err) => {
177
+ process.stderr.write(String(err?.stack ?? err) + `
178
+ `);
179
+ process.exit(1);
180
+ });
@@ -7141,6 +7141,11 @@ var _invocationsCache = null;
7141
7141
  function loadInvocations() {
7142
7142
  if (_invocationsCache)
7143
7143
  return _invocationsCache;
7144
+ const inlined = globalThis.__NEXUS_INLINE_INVOCATIONS__;
7145
+ if (inlined) {
7146
+ _invocationsCache = inlined;
7147
+ return inlined;
7148
+ }
7144
7149
  const selfDir = new URL(".", import.meta.url).pathname;
7145
7150
  let dir = selfDir;
7146
7151
  while (dir !== "/") {
@@ -7175,6 +7180,9 @@ function expand(template, harness) {
7175
7180
  return expandInvocations(template, harness, loadInvocations());
7176
7181
  }
7177
7182
  function loadValidRuleTargets(cwd) {
7183
+ const inlined = globalThis.__NEXUS_INLINE_RULE_TARGETS__;
7184
+ if (inlined && inlined.length > 0)
7185
+ return inlined;
7178
7186
  const targets = [];
7179
7187
  for (const dir of ["assets/agents", "assets/skills"]) {
7180
7188
  const absDir = join(cwd, dir);
@@ -7295,6 +7303,34 @@ var handler = async (input) => {
7295
7303
  `) };
7296
7304
  };
7297
7305
  var handler_default = handler;
7298
- export {
7299
- handler_default as default
7300
- };
7306
+
7307
+ // ../../../../../tmp/nexus-hook-entry-prompt-router-1776672660215/prompt-router-entry.ts
7308
+ import { readFileSync as readFileSync2 } from "node:fs";
7309
+ globalThis.__NEXUS_INLINE_INVOCATIONS__ = { subagent_spawn: { args: ["target_role", "prompt", "name"], templates: { claude: 'Agent({ subagent_type: "{target_role}", prompt: "{prompt}", description: "{name}" })', opencode: 'task({ subagent_type: "{target_role}", prompt: "{prompt}", description: "{name}" })', codex: 'spawn_agent("{target_role}", "{prompt}")' }, notes: { claude: `description field is optional; omit when name arg is absent. model field may be added to override the spawned agent's model.
7310
+ `, opencode: `description is required by OpenCode's Zod schema — use target_role as fallback when name is absent. task_id param enables session resume (§15).
7311
+ `, codex: `Agent role must be pre-registered in config.toml [agents.<target_role>]. No description equivalent in spawn_agent call signature.
7312
+ ` } }, skill_activation: { args: ["skill", "mode"], templates: { claude: 'Skill({ command: "{skill}" })', opencode: 'skill({ name: "{skill}" })', codex: "${skill}" }, notes: { claude: "The Skill tool accepts only the `command` string; mode/args cannot be passed as a separate parameter. Mode must be embedded in the SKILL.md body via $ARGUMENTS placeholder substitution.\n", opencode: "The skill tool accepts only `name`; args passing is unconfirmed per source review. Design skills to be args-free or embed defaults in SKILL.md body.\n", codex: `Positional args: "$skill-name {mode}". Named args: "$skill-name MODE={mode}". Confirmed only for Custom Prompts; treat as best-effort for Skills. $ prefix is literal in composer input, not a tool call.
7313
+ ` } }, task_register: { args: ["label", "state"], templates: { claude: 'TaskCreate({ subject: "{label}" }) then nx_task_update({ taskId, status: "{state}" })', opencode: 'nx_task_add({ subject: "{label}" }) then nx_task_update({ taskId, status: "{state}" })', codex: 'update_plan([{ name: "{label}", state: "{state}" }])' }, notes: { claude: `TaskCreate is a Claude Code native tool (not MCP). nx_task_update is the nexus-core MCP tool — full name mcp__plugin_claude-nexus_nx__nx_task_update. taskId is returned by TaskCreate and must be threaded to the update call.
7314
+ `, opencode: `Both nx_task_add and nx_task_update are nexus-core MCP tools exposed via the nexus MCP server. task_id returned by nx_task_add must be threaded to update.
7315
+ `, codex: `update_plan subsumes creation and update in a single call via plan/step/status fields. No separate create/update step is needed.
7316
+ ` } }, user_question: { args: ["question", "options"], templates: { claude: 'AskUserQuestion({ questions: [{ question: "{question}", options: {options} }] })', opencode: 'question({ question: "{question}", choices: {options} })', codex: 'request_user_input({ prompt: "{question}", options: {options} })' }, notes: { claude: `options is a JSON array of strings. Omit the options field (not an empty array) for free-text responses. Multiple questions can be batched in the questions[] array.
7317
+ `, opencode: `choices field name (not options). Omit choices for free-text input.
7318
+ `, codex: `Exact request_user_input schema (options field name, types) is not fully documented — treat as best-effort. Verified as a native Codex tool in external-codex-hooks-tools.md §7-4.
7319
+ ` } } };
7320
+ globalThis.__NEXUS_INLINE_RULE_TARGETS__ = ["architect", "designer", "engineer", "reviewer", "strategist", "researcher", "postdoc", "lead", "tester", "writer", "nx-run", "nx-init", "nx-sync", "nx-plan"];
7321
+ async function main() {
7322
+ let raw = "";
7323
+ try {
7324
+ raw = readFileSync2(0, "utf-8");
7325
+ } catch {}
7326
+ const input = raw ? JSON.parse(raw) : {};
7327
+ const result = await handler_default(input);
7328
+ if (result != null && result !== undefined) {
7329
+ process.stdout.write(JSON.stringify(result));
7330
+ }
7331
+ }
7332
+ main().then(() => process.exit(0), (err) => {
7333
+ process.stderr.write(String(err?.stack ?? err) + `
7334
+ `);
7335
+ process.exit(1);
7336
+ });
@@ -16,6 +16,22 @@ var handler = async (input) => {
16
16
  writeFileSync(join(sessionDir, "tool-log.jsonl"), "");
17
17
  };
18
18
  var handler_default = handler;
19
- export {
20
- handler_default as default
21
- };
19
+
20
+ // ../../../../../tmp/nexus-hook-entry-session-init-1776672660208/session-init-entry.ts
21
+ import { readFileSync } from "node:fs";
22
+ async function main() {
23
+ let raw = "";
24
+ try {
25
+ raw = readFileSync(0, "utf-8");
26
+ } catch {}
27
+ const input = raw ? JSON.parse(raw) : {};
28
+ const result = await handler_default(input);
29
+ if (result != null && result !== undefined) {
30
+ process.stdout.write(JSON.stringify(result));
31
+ }
32
+ }
33
+ main().then(() => process.exit(0), (err) => {
34
+ process.stderr.write(String(err?.stack ?? err) + `
35
+ `);
36
+ process.exit(1);
37
+ });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "claude-nexus",
3
- "version": "0.28.1",
3
+ "version": "0.28.2",
4
4
  "type": "module",
5
5
  "description": "Agent orchestration plugin for Claude Code — optimized context injection per role",
6
6
  "author": "kih",
@@ -36,7 +36,7 @@
36
36
  "VERSION"
37
37
  ],
38
38
  "devDependencies": {
39
- "@moreih29/nexus-core": "^0.15.1"
39
+ "@moreih29/nexus-core": "^0.16.1"
40
40
  },
41
41
  "dependencies": {}
42
42
  }