@groundnuty/macf 0.2.15 → 0.2.16

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.
@@ -1,4 +1,4 @@
1
1
  {
2
- "commit": "7c93b28edb627cd4a1e1aada316afb1b63db785a",
3
- "built_at": "2026-05-02T19:12:11.334Z"
2
+ "commit": "4fe3d0efb507dc2a0249d9249e7e91cd20c06a57",
3
+ "built_at": "2026-05-02T19:56:23.842Z"
4
4
  }
@@ -17,9 +17,9 @@ import { pingAgent } from '../lib/health.js';
17
17
  import { probePeerHealth } from '../lib/probe-peer-health.js';
18
18
  import { buildDashboardHealth } from '../lib/build-dashboard-health.js';
19
19
  import { getRegistryConfig } from '../lib/registry-config.js';
20
+ import { mintFreshGitHubToken } from '../lib/fresh-github-token.js';
20
21
  import { checkIssues } from '../lib/work.js';
21
22
  import { createRegistryFromConfig } from '@groundnuty/macf-core';
22
- import { generateToken } from '@groundnuty/macf-core';
23
23
  import { toVariableSegment } from '@groundnuty/macf-core';
24
24
  const command = process.argv[2];
25
25
  async function main() {
@@ -29,10 +29,12 @@ async function main() {
29
29
  switch (command) {
30
30
  case 'status': {
31
31
  // Local-mode skip-token: LocalRegistryClient ignores the token argument
32
- // (no GitHub backend); generateToken() requires APP_ID/INSTALL_ID/KEY_PATH
33
- // env vars which claude.sh intentionally doesn't export in local mode
34
- // per DR-024 / PR #329. Mirrors `channel-server/src/server.ts` line 210.
35
- const token = registryConfig.type === 'local' ? '' : await generateToken();
32
+ // (no GitHub backend); claude.sh intentionally doesn't export App-cred
33
+ // env vars in local mode per DR-024 / PR #329. Mirrors
34
+ // `channel-server/src/server.ts` line 210.
35
+ // GitHub-mode: forceMint via mintFreshGitHubToken() to bypass any stale
36
+ // GH_TOKEN inherited from a long-running parent Claude TUI (macf#338).
37
+ const token = registryConfig.type === 'local' ? '' : await mintFreshGitHubToken();
36
38
  const registry = createRegistryFromConfig(registryConfig, project, token);
37
39
  // Fetch own registration from the registry so the dashboard header
38
40
  // reflects whether THIS agent is actually registered (see #84 —
@@ -47,7 +49,11 @@ async function main() {
47
49
  }
48
50
  case 'peers': {
49
51
  // Local-mode skip-token (see status case for rationale).
50
- const token = registryConfig.type === 'local' ? '' : await generateToken();
52
+ // GitHub-mode: forceMint to bypass any stale GH_TOKEN inherited from
53
+ // a long-running parent Claude TUI (>1hr → 1hr-TTL bot token expired).
54
+ // Each macf-plugin-cli invocation is a short-lived subprocess; mint
55
+ // freshness is bounded to one CLI run. macf#338.
56
+ const token = registryConfig.type === 'local' ? '' : await mintFreshGitHubToken();
51
57
  const registry = createRegistryFromConfig(registryConfig, project, token);
52
58
  const peers = await listPeers(registry);
53
59
  const peersWithHealth = await Promise.all(peers.map(async (p) => ({ ...p, health: await probePeerHealth(p) })));
@@ -73,7 +79,11 @@ async function main() {
73
79
  return;
74
80
  }
75
81
  // Local-mode skip-token (see status case for rationale).
76
- const token = registryConfig.type === 'local' ? '' : await generateToken();
82
+ // GitHub-mode: forceMint to bypass any stale GH_TOKEN inherited from
83
+ // a long-running parent Claude TUI (>1hr → 1hr-TTL bot token expired).
84
+ // Each macf-plugin-cli invocation is a short-lived subprocess; mint
85
+ // freshness is bounded to one CLI run. macf#338.
86
+ const token = registryConfig.type === 'local' ? '' : await mintFreshGitHubToken();
77
87
  const registry = createRegistryFromConfig(registryConfig, project, token);
78
88
  // Look up the target in the registry. Names in the registry are
79
89
  // sanitized (uppercase, underscores), so match in that space.
@@ -99,7 +109,10 @@ async function main() {
99
109
  break;
100
110
  }
101
111
  case 'issues': {
102
- const token = await generateToken();
112
+ // Same forceMint rationale as status/peers/ping (macf#338) — `issues`
113
+ // is GitHub-only by design (queries gh api repos/...), so the
114
+ // stale-token-from-long-running-parent class hits here too.
115
+ const token = await mintFreshGitHubToken();
103
116
  const repo = process.env['MACF_REGISTRY_REPO'] ?? 'groundnuty/macf';
104
117
  const label = process.env['MACF_AGENT_LABEL'] ?? 'code-agent';
105
118
  const issues = await checkIssues({ repo, label, token });
@@ -1 +1 @@
1
- {"version":3,"file":"macf-plugin-cli.js","sourceRoot":"","sources":["../../../src/plugin/bin/macf-plugin-cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"macf-plugin-cli.js","sourceRoot":"","sources":["../../../src/plugin/bin/macf-plugin-cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Force-mint a fresh GitHub App installation token from claude.sh-exported
3
+ * APP_ID/INSTALL_ID/KEY_PATH env vars (or TokenSource if explicitly passed),
4
+ * bypassing any GH_TOKEN env var the parent process may have inherited.
5
+ *
6
+ * Why this helper exists (macf#338): every `macf-plugin-cli` invocation runs
7
+ * as a short-lived npx subprocess from a Claude TUI parent. The parent's
8
+ * `GH_TOKEN` env was minted at TUI startup (1hr-TTL bot installation token);
9
+ * after ≥1hr of TUI uptime, that env-token is stale. Reading it as-is via
10
+ * `generateToken()`'s default env-shortcut path causes 401 from GitHub APIs.
11
+ *
12
+ * This helper wraps `generateToken(undefined, { forceMint: true })` as a
13
+ * single declarative entry point. The plugin-cli's bin file imports THIS
14
+ * helper exclusively — never `generateToken` directly. That import-boundary
15
+ * invariant is enforced by `test/plugin/lib/fresh-github-token.test.ts` so
16
+ * a future call-site addition can't silently regress to the env-shortcut
17
+ * behavior.
18
+ *
19
+ * Local-mode invocations don't use this helper (no GitHub backend → no
20
+ * token needed); the LocalRegistryClient ignores the token argument
21
+ * entirely. See `bin/macf-plugin-cli.ts` ternary at each call site.
22
+ */
23
+ export declare function mintFreshGitHubToken(): Promise<string>;
24
+ //# sourceMappingURL=fresh-github-token.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fresh-github-token.d.ts","sourceRoot":"","sources":["../../../src/plugin/lib/fresh-github-token.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,MAAM,CAAC,CAE5D"}
@@ -0,0 +1,27 @@
1
+ import { generateToken } from '@groundnuty/macf-core';
2
+ /**
3
+ * Force-mint a fresh GitHub App installation token from claude.sh-exported
4
+ * APP_ID/INSTALL_ID/KEY_PATH env vars (or TokenSource if explicitly passed),
5
+ * bypassing any GH_TOKEN env var the parent process may have inherited.
6
+ *
7
+ * Why this helper exists (macf#338): every `macf-plugin-cli` invocation runs
8
+ * as a short-lived npx subprocess from a Claude TUI parent. The parent's
9
+ * `GH_TOKEN` env was minted at TUI startup (1hr-TTL bot installation token);
10
+ * after ≥1hr of TUI uptime, that env-token is stale. Reading it as-is via
11
+ * `generateToken()`'s default env-shortcut path causes 401 from GitHub APIs.
12
+ *
13
+ * This helper wraps `generateToken(undefined, { forceMint: true })` as a
14
+ * single declarative entry point. The plugin-cli's bin file imports THIS
15
+ * helper exclusively — never `generateToken` directly. That import-boundary
16
+ * invariant is enforced by `test/plugin/lib/fresh-github-token.test.ts` so
17
+ * a future call-site addition can't silently regress to the env-shortcut
18
+ * behavior.
19
+ *
20
+ * Local-mode invocations don't use this helper (no GitHub backend → no
21
+ * token needed); the LocalRegistryClient ignores the token argument
22
+ * entirely. See `bin/macf-plugin-cli.ts` ternary at each call site.
23
+ */
24
+ export async function mintFreshGitHubToken() {
25
+ return generateToken(undefined, { forceMint: true });
26
+ }
27
+ //# sourceMappingURL=fresh-github-token.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fresh-github-token.js","sourceRoot":"","sources":["../../../src/plugin/lib/fresh-github-token.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAEtD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB;IACxC,OAAO,aAAa,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;AACvD,CAAC"}
@@ -4,6 +4,7 @@ export { pingAgent } from './health.js';
4
4
  export { probePeerHealth } from './probe-peer-health.js';
5
5
  export { buildDashboardHealth } from './build-dashboard-health.js';
6
6
  export { getRegistryConfig } from './registry-config.js';
7
+ export { mintFreshGitHubToken } from './fresh-github-token.js';
7
8
  export { checkIssues } from './work.js';
8
9
  export type { PendingIssue } from './work.js';
9
10
  export { formatDashboard, formatPeerTable, formatIssues } from './format.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/plugin/lib/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC9D,YAAY,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAChE,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,YAAY,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/plugin/lib/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC9D,YAAY,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAChE,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,YAAY,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC"}
@@ -3,6 +3,7 @@ export { pingAgent } from './health.js';
3
3
  export { probePeerHealth } from './probe-peer-health.js';
4
4
  export { buildDashboardHealth } from './build-dashboard-health.js';
5
5
  export { getRegistryConfig } from './registry-config.js';
6
+ export { mintFreshGitHubToken } from './fresh-github-token.js';
6
7
  export { checkIssues } from './work.js';
7
8
  export { formatDashboard, formatPeerTable, formatIssues } from './format.js';
8
9
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/plugin/lib/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAE9D,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAExC,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/plugin/lib/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAE9D,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAExC,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@groundnuty/macf",
3
- "version": "0.2.15",
3
+ "version": "0.2.16",
4
4
  "description": "Multi-Agent Coordination Framework CLI — coordinate Claude Code agents via GitHub. Installs as `macf` binary; use `macf init` to set up an agent workspace, `macf update` to refresh rules + version pins.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -35,7 +35,7 @@
35
35
  "test:watch": "vitest"
36
36
  },
37
37
  "dependencies": {
38
- "@groundnuty/macf-core": "0.2.15",
38
+ "@groundnuty/macf-core": "0.2.16",
39
39
  "commander": "^14.0.3",
40
40
  "reflect-metadata": "^0.2.2",
41
41
  "zod": "^4.0.0"