@a5c-ai/hooks-mux-cli 5.0.1-staging.fcac7259 → 5.0.1-staging.ff407b73

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/README.md ADDED
@@ -0,0 +1,27 @@
1
+ # @a5c-ai/hooks-mux-cli
2
+
3
+ CLI entrypoint for hooks-mux.
4
+
5
+ ## Install
6
+
7
+ ```bash
8
+ npm install -g @a5c-ai/hooks-mux-cli
9
+ ```
10
+
11
+ This package ships the built CLI in `dist/` and this package README for npm publish-surface auditing.
12
+
13
+ ## CLI Surface
14
+
15
+ ```bash
16
+ a5c-hooks-mux --help
17
+ a5c-hooks-mux doctor
18
+ a5c-hooks-mux invoke --adapter claude --native-event SessionStart
19
+ ```
20
+
21
+ Use this package when you want the `a5c-hooks-mux` binary without depending on the full monorepo source tree.
22
+
23
+ See the workspace overview in [`packages/hooks-mux/README.md`](../README.md) and the operational guides in `packages/hooks-mux/docs/`.
24
+
25
+ ## License
26
+
27
+ MIT © a5c-ai
@@ -7,14 +7,22 @@
7
7
  * Each adapter package is expected to export:
8
8
  * - createAdapter(): AdapterCapabilities
9
9
  * - phase mappings (e.g. CLAUDE_PHASE_MAPPINGS / equivalent)
10
- * - normalizer function
11
- * - renderer function
10
+ * - optional normalizeForInvoke() hook for CLI-native normalization
11
+ * - optional renderForInvoke() hook for CLI-native output rendering
12
12
  * - session resolver
13
13
  */
14
- import type { AdapterCapabilities, PhaseMapping } from '@a5c-ai/hooks-mux-core';
14
+ import type { AdapterCapabilities, MergedExecutionResult, PhaseMapping, UnifiedHookEvent } from '@a5c-ai/hooks-mux-core';
15
+ export type AdapterNormalizer = (nativeEventName: string, stdinPayload: unknown, env?: Record<string, string>) => UnifiedHookEvent;
16
+ export type AdapterRenderer = (mergedResult: MergedExecutionResult, nativeEventName: string, event?: UnifiedHookEvent) => unknown;
17
+ export type AdapterSessionResolver = (stdinData: Record<string, unknown>, env?: Record<string, string>, explicitSessionId?: string) => string | null | {
18
+ sessionId: string | null;
19
+ };
15
20
  export interface LoadedAdapter {
16
21
  capabilities: AdapterCapabilities;
17
22
  phaseMappings: PhaseMapping[];
23
+ normalizer?: AdapterNormalizer;
24
+ renderer?: AdapterRenderer;
25
+ sessionResolver?: AdapterSessionResolver;
18
26
  /** Raw module exports for adapter-specific functions. */
19
27
  module: Record<string, unknown>;
20
28
  }
@@ -1 +1 @@
1
- {"version":3,"file":"adapter-loader.d.ts","sourceRoot":"","sources":["../../src/cli/adapter-loader.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAGhF,MAAM,WAAW,aAAa;IAC5B,YAAY,EAAE,mBAAmB,CAAC;IAClC,aAAa,EAAE,YAAY,EAAE,CAAC;IAC9B,yDAAyD;IACzD,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjC;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,aAAa,CAsD9D;AAED;;GAEG;AACH,eAAO,MAAM,cAAc,uGAUjB,CAAC"}
1
+ {"version":3,"file":"adapter-loader.d.ts","sourceRoot":"","sources":["../../src/cli/adapter-loader.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAIH,OAAO,KAAK,EACV,mBAAmB,EACnB,qBAAqB,EACrB,YAAY,EACZ,gBAAgB,EACjB,MAAM,wBAAwB,CAAC;AAGhC,MAAM,MAAM,iBAAiB,GAAG,CAC9B,eAAe,EAAE,MAAM,EACvB,YAAY,EAAE,OAAO,EACrB,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KACzB,gBAAgB,CAAC;AAEtB,MAAM,MAAM,eAAe,GAAG,CAC5B,YAAY,EAAE,qBAAqB,EACnC,eAAe,EAAE,MAAM,EACvB,KAAK,CAAC,EAAE,gBAAgB,KACrB,OAAO,CAAC;AAEb,MAAM,MAAM,sBAAsB,GAAG,CACnC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAClC,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC5B,iBAAiB,CAAC,EAAE,MAAM,KACvB,MAAM,GAAG,IAAI,GAAG;IAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAAC;AAElD,MAAM,WAAW,aAAa;IAC5B,YAAY,EAAE,mBAAmB,CAAC;IAClC,aAAa,EAAE,YAAY,EAAE,CAAC;IAC9B,UAAU,CAAC,EAAE,iBAAiB,CAAC;IAC/B,QAAQ,CAAC,EAAE,eAAe,CAAC;IAC3B,eAAe,CAAC,EAAE,sBAAsB,CAAC;IACzC,yDAAyD;IACzD,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjC;AAkCD;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,aAAa,CAiE9D;AAED;;GAEG;AACH,eAAO,MAAM,cAAc,uGAUjB,CAAC"}
@@ -8,14 +8,74 @@
8
8
  * Each adapter package is expected to export:
9
9
  * - createAdapter(): AdapterCapabilities
10
10
  * - phase mappings (e.g. CLAUDE_PHASE_MAPPINGS / equivalent)
11
- * - normalizer function
12
- * - renderer function
11
+ * - optional normalizeForInvoke() hook for CLI-native normalization
12
+ * - optional renderForInvoke() hook for CLI-native output rendering
13
13
  * - session resolver
14
14
  */
15
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
16
+ if (k2 === undefined) k2 = k;
17
+ var desc = Object.getOwnPropertyDescriptor(m, k);
18
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
19
+ desc = { enumerable: true, get: function() { return m[k]; } };
20
+ }
21
+ Object.defineProperty(o, k2, desc);
22
+ }) : (function(o, m, k, k2) {
23
+ if (k2 === undefined) k2 = k;
24
+ o[k2] = m[k];
25
+ }));
26
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
27
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
28
+ }) : function(o, v) {
29
+ o["default"] = v;
30
+ });
31
+ var __importStar = (this && this.__importStar) || (function () {
32
+ var ownKeys = function(o) {
33
+ ownKeys = Object.getOwnPropertyNames || function (o) {
34
+ var ar = [];
35
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
36
+ return ar;
37
+ };
38
+ return ownKeys(o);
39
+ };
40
+ return function (mod) {
41
+ if (mod && mod.__esModule) return mod;
42
+ var result = {};
43
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
44
+ __setModuleDefault(result, mod);
45
+ return result;
46
+ };
47
+ })();
15
48
  Object.defineProperty(exports, "__esModule", { value: true });
16
49
  exports.KNOWN_ADAPTERS = void 0;
17
50
  exports.loadAdapter = loadAdapter;
51
+ const fs = __importStar(require("fs"));
52
+ const path = __importStar(require("path"));
18
53
  const hooks_mux_core_1 = require("@a5c-ai/hooks-mux-core");
54
+ function isFunction(value) {
55
+ return typeof value === 'function';
56
+ }
57
+ function resolveNormalizer(mod) {
58
+ const candidate = mod['normalizeForInvoke'];
59
+ return isFunction(candidate) ? candidate : undefined;
60
+ }
61
+ function resolveRenderer(mod) {
62
+ const candidate = mod['renderForInvoke'];
63
+ return isFunction(candidate) ? candidate : undefined;
64
+ }
65
+ function resolveSessionResolver(mod) {
66
+ const candidate = mod['resolveSessionId'];
67
+ return isFunction(candidate) ? candidate : undefined;
68
+ }
69
+ function loadWorkspaceAdapter(adapterName) {
70
+ const packageDir = path.resolve(__dirname, '..', '..');
71
+ const workspacePackageDir = path.resolve(packageDir, '..', `adapter-${adapterName}`);
72
+ const distEntry = path.join(workspacePackageDir, 'dist', 'index.js');
73
+ if (!fs.existsSync(distEntry)) {
74
+ return null;
75
+ }
76
+ // eslint-disable-next-line @typescript-eslint/no-var-requires
77
+ return require(workspacePackageDir);
78
+ }
19
79
  /**
20
80
  * Attempt to load an adapter package by name.
21
81
  *
@@ -42,7 +102,11 @@ function loadAdapter(adapterName) {
42
102
  mod = require(packageName);
43
103
  }
44
104
  catch (err) {
45
- throw new Error(`Failed to load adapter "${adapterName}" (package: ${packageName}): ${err instanceof Error ? err.message : String(err)}`);
105
+ const workspaceAdapter = loadWorkspaceAdapter(adapterName);
106
+ if (!workspaceAdapter) {
107
+ throw new Error(`Failed to load adapter "${adapterName}" (package: ${packageName}): ${err instanceof Error ? err.message : String(err)}`);
108
+ }
109
+ mod = workspaceAdapter;
46
110
  }
47
111
  // Extract createAdapter function
48
112
  const createAdapterFn = mod['createAdapter'];
@@ -61,7 +125,14 @@ function loadAdapter(adapterName) {
61
125
  }
62
126
  }
63
127
  }
64
- return { capabilities, phaseMappings, module: mod };
128
+ return {
129
+ capabilities,
130
+ phaseMappings,
131
+ normalizer: resolveNormalizer(mod),
132
+ renderer: resolveRenderer(mod),
133
+ sessionResolver: resolveSessionResolver(mod),
134
+ module: mod,
135
+ };
65
136
  }
66
137
  /**
67
138
  * List of known adapter names for discovery/doctor purposes.
@@ -1 +1 @@
1
- {"version":3,"file":"adapter-loader.js","sourceRoot":"","sources":["../../src/cli/adapter-loader.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;GAYG;;;AAmBH,kCAsDC;AAtED,2DAAuD;AASvD;;;;;;GAMG;AACH,SAAgB,WAAW,CAAC,WAAmB;IAC7C,0DAA0D;IAC1D,IAAI,WAAW,KAAK,MAAM,EAAE,CAAC;QAC3B,MAAM,QAAQ,GAAG,IAAA,8BAAa,GAAE,CAAC;QACjC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,8EAA8E,CAC/E,CAAC;YACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,sCAAsC,QAAQ,CAAC,OAAO,IAAI;YAC1D,cAAc,QAAQ,CAAC,UAAU,cAAc,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CACjF,CAAC;QACF,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC;IACjC,CAAC;IAED,MAAM,WAAW,GAAG,6BAA6B,WAAW,EAAE,CAAC;IAE/D,IAAI,GAA4B,CAAC;IACjC,IAAI,CAAC;QACH,8DAA8D;QAC9D,GAAG,GAAG,OAAO,CAAC,WAAW,CAA4B,CAAC;IACxD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CACb,2BAA2B,WAAW,eAAe,WAAW,MAC9D,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CACjD,EAAE,CACH,CAAC;IACJ,CAAC;IAED,iCAAiC;IACjC,MAAM,eAAe,GAAG,GAAG,CAAC,eAAe,CAAC,CAAC;IAC7C,IAAI,OAAO,eAAe,KAAK,UAAU,EAAE,CAAC;QAC1C,MAAM,IAAI,KAAK,CACb,oBAAoB,WAAW,4CAA4C,CAC5E,CAAC;IACJ,CAAC;IAED,MAAM,YAAY,GAAG,eAAe,EAAyB,CAAC;IAE9D,kFAAkF;IAClF,IAAI,aAAa,GAAmB,EAAE,CAAC;IACvC,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QACnC,IAAI,GAAG,CAAC,QAAQ,CAAC,iBAAiB,CAAC,IAAI,GAAG,KAAK,eAAe,EAAE,CAAC;YAC/D,MAAM,SAAS,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;YAC3B,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC7B,aAAa,GAAG,SAA2B,CAAC;gBAC5C,MAAM;YACR,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;AACtD,CAAC;AAED;;GAEG;AACU,QAAA,cAAc,GAAG;IAC5B,QAAQ;IACR,OAAO;IACP,SAAS;IACT,QAAQ;IACR,QAAQ;IACR,UAAU;IACV,UAAU;IACV,UAAU;IACV,IAAI;CACI,CAAC"}
1
+ {"version":3,"file":"adapter-loader.js","sourceRoot":"","sources":["../../src/cli/adapter-loader.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import { type PropagationBackend, type SessionState, type UnifiedHookEvent } from '@a5c-ai/hooks-mux-core';
2
+ import type { loadAdapter } from './adapter-loader';
3
+ export declare function tryParseJson(raw: string): unknown | undefined;
4
+ export declare function resolveSessionId(adapterSessionResolver: ReturnType<typeof loadAdapter>['sessionResolver'], explicitSessionId: string | undefined, normalizedSessionId: string | null | undefined, stdinData: Record<string, unknown> | undefined, env: Record<string, string>): string | null;
5
+ export declare function resolveNativeEnvFilePath(env: Record<string, string>): string | undefined;
6
+ export declare function buildBootstrapPersistEnv(event: UnifiedHookEvent, sessionId: string | null): Record<string, string>;
7
+ export declare function prepareBootstrapSession(args: {
8
+ existingSession: SessionState | null;
9
+ adapter: string;
10
+ event: UnifiedHookEvent;
11
+ sessionId: string | null;
12
+ now?: Date;
13
+ }): {
14
+ session: SessionState | null;
15
+ persistEnv: Record<string, string>;
16
+ };
17
+ export declare function propagateBootstrapEnv(backend: PropagationBackend, persistEnv: Record<string, string>, env: Record<string, string>): Promise<boolean>;
18
+ //# sourceMappingURL=bootstrap-runtime.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bootstrap-runtime.d.ts","sourceRoot":"","sources":["../../src/cli/bootstrap-runtime.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,kBAAkB,EACvB,KAAK,YAAY,EACjB,KAAK,gBAAgB,EAEtB,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEpD,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAQ7D;AAED,wBAAgB,gBAAgB,CAC9B,sBAAsB,EAAE,UAAU,CAAC,OAAO,WAAW,CAAC,CAAC,iBAAiB,CAAC,EACzE,iBAAiB,EAAE,MAAM,GAAG,SAAS,EACrC,mBAAmB,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAC9C,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,EAC9C,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC1B,MAAM,GAAG,IAAI,CAkBf;AAED,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,GAAG,SAAS,CAExF;AAED,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,gBAAgB,EACvB,SAAS,EAAE,MAAM,GAAG,IAAI,GACvB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAMxB;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE;IAC5C,eAAe,EAAE,YAAY,GAAG,IAAI,CAAC;IACrC,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,gBAAgB,CAAC;IACxB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,GAAG,CAAC,EAAE,IAAI,CAAC;CACZ,GAAG;IACF,OAAO,EAAE,YAAY,GAAG,IAAI,CAAC;IAC7B,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACpC,CAyCA;AAED,wBAAsB,qBAAqB,CACzC,OAAO,EAAE,kBAAkB,EAC3B,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAClC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC1B,OAAO,CAAC,OAAO,CAAC,CAkBlB"}
@@ -0,0 +1,108 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.tryParseJson = tryParseJson;
4
+ exports.resolveSessionId = resolveSessionId;
5
+ exports.resolveNativeEnvFilePath = resolveNativeEnvFilePath;
6
+ exports.buildBootstrapPersistEnv = buildBootstrapPersistEnv;
7
+ exports.prepareBootstrapSession = prepareBootstrapSession;
8
+ exports.propagateBootstrapEnv = propagateBootstrapEnv;
9
+ const hooks_mux_core_1 = require("@a5c-ai/hooks-mux-core");
10
+ function tryParseJson(raw) {
11
+ const trimmed = raw.trim();
12
+ if (!trimmed)
13
+ return undefined;
14
+ try {
15
+ return JSON.parse(trimmed);
16
+ }
17
+ catch {
18
+ return undefined;
19
+ }
20
+ }
21
+ function resolveSessionId(adapterSessionResolver, explicitSessionId, normalizedSessionId, stdinData, env) {
22
+ if (adapterSessionResolver) {
23
+ const resolved = adapterSessionResolver(stdinData ?? {}, env, explicitSessionId);
24
+ const adapterSessionId = typeof resolved === 'string'
25
+ ? resolved
26
+ : resolved?.sessionId;
27
+ if (adapterSessionId) {
28
+ return adapterSessionId;
29
+ }
30
+ }
31
+ if (explicitSessionId)
32
+ return explicitSessionId;
33
+ if (env['AGENT_SESSION_ID'])
34
+ return env['AGENT_SESSION_ID'];
35
+ if (normalizedSessionId)
36
+ return normalizedSessionId;
37
+ if (stdinData && typeof stdinData['session_id'] === 'string') {
38
+ return stdinData['session_id'];
39
+ }
40
+ return null;
41
+ }
42
+ function resolveNativeEnvFilePath(env) {
43
+ return env['CLAUDE_ENV_FILE'] ?? env['HOOKS_PROXY_ENV_FILE'];
44
+ }
45
+ function buildBootstrapPersistEnv(event, sessionId) {
46
+ const persistEnv = { ...event.env.persisted };
47
+ if (sessionId) {
48
+ persistEnv['AGENT_SESSION_ID'] = sessionId;
49
+ }
50
+ return persistEnv;
51
+ }
52
+ function prepareBootstrapSession(args) {
53
+ const nowIso = (args.now ?? new Date()).toISOString();
54
+ const persistEnv = buildBootstrapPersistEnv(args.event, args.sessionId);
55
+ if (!args.sessionId) {
56
+ return {
57
+ session: null,
58
+ persistEnv,
59
+ };
60
+ }
61
+ const existing = args.existingSession;
62
+ const session = existing
63
+ ? {
64
+ ...existing,
65
+ updatedAt: nowIso,
66
+ cwd: existing.cwd ?? args.event.execution.cwd ?? undefined,
67
+ transcriptPath: existing.transcriptPath ?? args.event.execution.transcriptPath ?? undefined,
68
+ persistedEnv: { ...existing.persistedEnv, ...persistEnv },
69
+ contextVars: existing.contextVars ?? {},
70
+ contextFragments: existing.contextFragments ?? [],
71
+ metadata: existing.metadata ?? {},
72
+ }
73
+ : {
74
+ version: 'a5c.hooks.session.v1',
75
+ sessionId: args.sessionId,
76
+ adapter: args.adapter,
77
+ createdAt: nowIso,
78
+ updatedAt: nowIso,
79
+ cwd: args.event.execution.cwd ?? undefined,
80
+ transcriptPath: args.event.execution.transcriptPath ?? undefined,
81
+ persistedEnv: persistEnv,
82
+ contextVars: {},
83
+ contextFragments: [],
84
+ metadata: {},
85
+ };
86
+ return {
87
+ session,
88
+ persistEnv,
89
+ };
90
+ }
91
+ async function propagateBootstrapEnv(backend, persistEnv, env) {
92
+ if (Object.keys(persistEnv).length === 0) {
93
+ return false;
94
+ }
95
+ if (backend === 'native_env_file') {
96
+ const nativeEnvFilePath = resolveNativeEnvFilePath(env);
97
+ if (!nativeEnvFilePath) {
98
+ return false;
99
+ }
100
+ await (0, hooks_mux_core_1.propagateEnv)(backend, persistEnv, { nativeEnvFilePath });
101
+ return true;
102
+ }
103
+ await (0, hooks_mux_core_1.propagateEnv)(backend, persistEnv, {
104
+ nativeEnvFilePath: resolveNativeEnvFilePath(env),
105
+ });
106
+ return true;
107
+ }
108
+ //# sourceMappingURL=bootstrap-runtime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bootstrap-runtime.js","sourceRoot":"","sources":["../../src/cli/bootstrap-runtime.ts"],"names":[],"mappings":"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"}
@@ -3,8 +3,9 @@
3
3
  *
4
4
  * Spec section 18.3.
5
5
  *
6
- * Delegates to invoke with --bootstrap-only flag internally.
7
- * Reads stdin for session discovery, creates/loads session, and persists it.
6
+ * Reads stdin for session discovery, resolves adapter-native session IDs,
7
+ * creates/loads session state, persists baseline env, and applies any
8
+ * supported propagation backend.
8
9
  */
9
10
  import type { CommandModule } from 'yargs';
10
11
  interface BootstrapArgs {
@@ -1 +1 @@
1
- {"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/bootstrap.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAQ3C,UAAU,aAAa;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,eAAO,MAAM,gBAAgB,EAAE,aAAa,CAAC,MAAM,EAAE,aAAa,CAoEjE,CAAC"}
1
+ {"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/bootstrap.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAgB3C,UAAU,aAAa;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,eAAO,MAAM,gBAAgB,EAAE,aAAa,CAAC,MAAM,EAAE,aAAa,CAuFjE,CAAC"}
@@ -4,13 +4,17 @@
4
4
  *
5
5
  * Spec section 18.3.
6
6
  *
7
- * Delegates to invoke with --bootstrap-only flag internally.
8
- * Reads stdin for session discovery, creates/loads session, and persists it.
7
+ * Reads stdin for session discovery, resolves adapter-native session IDs,
8
+ * creates/loads session state, persists baseline env, and applies any
9
+ * supported propagation backend.
9
10
  */
10
11
  Object.defineProperty(exports, "__esModule", { value: true });
11
12
  exports.bootstrapCommand = void 0;
12
13
  const hooks_mux_core_1 = require("@a5c-ai/hooks-mux-core");
13
14
  const adapter_loader_1 = require("../adapter-loader");
15
+ const bootstrap_runtime_1 = require("../bootstrap-runtime");
16
+ const hooks_logger_1 = require("../hooks-logger");
17
+ const stdin_1 = require("../stdin");
14
18
  exports.bootstrapCommand = {
15
19
  command: 'bootstrap',
16
20
  describe: 'No-op context bootstrap — initialize session without running handlers',
@@ -30,47 +34,55 @@ exports.bootstrapCommand = {
30
34
  describe: 'Output JSON format',
31
35
  }),
32
36
  handler: async (args) => {
37
+ const logger = (0, hooks_logger_1.createHooksLogger)('bootstrap');
33
38
  const loaded = (0, adapter_loader_1.loadAdapter)(args.adapter);
34
39
  const env = process.env;
35
- // Determine session ID
36
- const sessionId = args['session-id']
37
- ?? env['AGENT_SESSION_ID']
38
- ?? `bootstrap-${Date.now()}`;
39
- // Normalize a synthetic session.start event for context extraction
40
- const event = (0, hooks_mux_core_1.normalizeEvent)({
40
+ const rawStdin = await (0, stdin_1.readStdin)();
41
+ const stdinPayload = (0, bootstrap_runtime_1.tryParseJson)(rawStdin);
42
+ const stdinData = (typeof stdinPayload === 'object' && stdinPayload !== null && !Array.isArray(stdinPayload))
43
+ ? stdinPayload
44
+ : undefined;
45
+ const rawEventName = loaded.capabilities.name === 'claude'
46
+ ? 'SessionStart'
47
+ : 'bootstrap';
48
+ const event = loaded.normalizer
49
+ ? loaded.normalizer(rawEventName, rawStdin, env)
50
+ : (0, hooks_mux_core_1.normalizeEvent)({
51
+ adapter: args.adapter,
52
+ rawEventName,
53
+ stdinPayload,
54
+ env,
55
+ adapterMappings: loaded.phaseMappings,
56
+ });
57
+ const sessionId = (0, bootstrap_runtime_1.resolveSessionId)(loaded.sessionResolver, args['session-id'], event.execution.sessionId, stdinData, env) ?? `bootstrap-${Date.now()}`;
58
+ const prepared = (0, bootstrap_runtime_1.prepareBootstrapSession)({
59
+ existingSession: await (0, hooks_mux_core_1.loadSession)(sessionId),
41
60
  adapter: args.adapter,
42
- rawEventName: 'bootstrap',
43
- env,
44
- adapterMappings: loaded.phaseMappings,
61
+ event,
62
+ sessionId,
45
63
  });
46
- // Load or create session
47
- let session = await (0, hooks_mux_core_1.loadSession)(sessionId);
48
- if (!session) {
49
- session = {
50
- version: 'a5c.hooks.session.v1',
51
- sessionId,
52
- adapter: args.adapter,
53
- createdAt: new Date().toISOString(),
54
- updatedAt: new Date().toISOString(),
55
- cwd: event.execution.cwd ?? undefined,
56
- persistedEnv: { ...event.env.persisted },
57
- contextVars: {},
58
- contextFragments: [],
59
- metadata: {},
60
- };
64
+ const session = prepared.session;
65
+ if (session) {
66
+ await (0, hooks_mux_core_1.saveSession)(session);
61
67
  }
62
- await (0, hooks_mux_core_1.saveSession)(session);
68
+ const propagated = await (0, bootstrap_runtime_1.propagateBootstrapEnv)(loaded.capabilities.envPersistenceMode, prepared.persistEnv, env);
69
+ await logger.info('bootstrap completed', {
70
+ adapter: args.adapter,
71
+ sessionId,
72
+ createdAt: session?.createdAt ?? null,
73
+ propagated,
74
+ });
63
75
  const output = {
64
76
  status: 'bootstrapped',
65
77
  sessionId,
66
78
  adapter: args.adapter,
67
- createdAt: session.createdAt,
79
+ createdAt: session?.createdAt ?? null,
68
80
  };
69
81
  if (args.json) {
70
82
  process.stdout.write(JSON.stringify(output, null, 2) + '\n');
71
83
  }
72
84
  else {
73
- console.log(`Session bootstrapped: ${sessionId} (adapter: ${args.adapter})`);
85
+ process.stderr.write(`Session bootstrapped: ${sessionId} (adapter: ${args.adapter})\n`);
74
86
  }
75
87
  },
76
88
  };
@@ -1 +1 @@
1
- {"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../../../src/cli/commands/bootstrap.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;;AAGH,2DAIgC;AAChC,sDAAgD;AAQnC,QAAA,gBAAgB,GAAyC;IACpE,OAAO,EAAE,WAAW;IACpB,QAAQ,EAAE,uEAAuE;IACjF,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CACjB,KAAK;SACF,MAAM,CAAC,SAAS,EAAE;QACjB,IAAI,EAAE,QAAQ;QACd,YAAY,EAAE,IAAI;QAClB,QAAQ,EAAE,iFAAiF;KAC5F,CAAC;SACD,MAAM,CAAC,YAAY,EAAE;QACpB,IAAI,EAAE,QAAQ;QACd,QAAQ,EAAE,8BAA8B;KACzC,CAAC;SACD,MAAM,CAAC,MAAM,EAAE;QACd,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,KAAK;QACd,QAAQ,EAAE,oBAAoB;KAC/B,CAAC;IACN,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QACtB,MAAM,MAAM,GAAG,IAAA,4BAAW,EAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACzC,MAAM,GAAG,GAAG,OAAO,CAAC,GAA6B,CAAC;QAElD,uBAAuB;QACvB,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC;eAC/B,GAAG,CAAC,kBAAkB,CAAC;eACvB,aAAa,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;QAE/B,mEAAmE;QACnE,MAAM,KAAK,GAAG,IAAA,+BAAc,EAAC;YAC3B,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,YAAY,EAAE,WAAW;YACzB,GAAG;YACH,eAAe,EAAE,MAAM,CAAC,aAAa;SACtC,CAAC,CAAC;QAEH,yBAAyB;QACzB,IAAI,OAAO,GAAG,MAAM,IAAA,4BAAW,EAAC,SAAS,CAAC,CAAC;QAC3C,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,GAAG;gBACR,OAAO,EAAE,sBAAsB;gBAC/B,SAAS;gBACT,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBACnC,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBACnC,GAAG,EAAE,KAAK,CAAC,SAAS,CAAC,GAAG,IAAI,SAAS;gBACrC,YAAY,EAAE,EAAE,GAAG,KAAK,CAAC,GAAG,CAAC,SAAS,EAAE;gBACxC,WAAW,EAAE,EAAE;gBACf,gBAAgB,EAAE,EAAE;gBACpB,QAAQ,EAAE,EAAE;aACb,CAAC;QACJ,CAAC;QAED,MAAM,IAAA,4BAAW,EAAC,OAAO,CAAC,CAAC;QAE3B,MAAM,MAAM,GAAG;YACb,MAAM,EAAE,cAAc;YACtB,SAAS;YACT,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,SAAS,EAAE,OAAO,CAAC,SAAS;SAC7B,CAAC;QAEF,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;QAC/D,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,yBAAyB,SAAS,cAAc,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;QAC/E,CAAC;IACH,CAAC;CACF,CAAC"}
1
+ {"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../../../src/cli/commands/bootstrap.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"exec.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/exec.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAM3C,UAAU,QAAQ;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,CAAC,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;CACxB;AAED,eAAO,MAAM,WAAW,EAAE,aAAa,CAAC,MAAM,EAAE,QAAQ,CAyEvD,CAAC"}
1
+ {"version":3,"file":"exec.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/exec.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAO3C,UAAU,QAAQ;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,CAAC,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;CACxB;AAED,eAAO,MAAM,WAAW,EAAE,aAAa,CAAC,MAAM,EAAE,QAAQ,CAiGvD,CAAC"}
@@ -13,6 +13,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
13
13
  exports.execCommand = void 0;
14
14
  const child_process_1 = require("child_process");
15
15
  const hooks_mux_core_1 = require("@a5c-ai/hooks-mux-core");
16
+ const hooks_logger_1 = require("../hooks-logger");
16
17
  exports.execCommand = {
17
18
  command: 'exec',
18
19
  describe: 'Run a command with restored session context',
@@ -25,9 +26,11 @@ exports.execCommand = {
25
26
  .parserConfiguration({ 'populate--': true })
26
27
  .example('$0 exec --session-id abc123 -- echo hello', 'Run "echo hello" with session abc123 context'),
27
28
  handler: async (args) => {
29
+ const logger = (0, hooks_logger_1.createHooksLogger)('exec');
28
30
  const sessionId = args['session-id'];
29
31
  const command = args['--'] ?? [];
30
32
  if (command.length === 0) {
33
+ await logger.error('exec invoked without command', { sessionId });
31
34
  console.error('Error: No command specified after --');
32
35
  process.exitCode = 1;
33
36
  return;
@@ -49,6 +52,10 @@ exports.execCommand = {
49
52
  ...process.env,
50
53
  ...materialized.env,
51
54
  };
55
+ await logger.debug('exec materialized session context', {
56
+ sessionId,
57
+ command: command.join(' '),
58
+ });
52
59
  }
53
60
  catch {
54
61
  // Fallback: inject at least AGENT_SESSION_ID even if session not found
@@ -56,18 +63,36 @@ exports.execCommand = {
56
63
  ...process.env,
57
64
  AGENT_SESSION_ID: sessionId,
58
65
  };
66
+ await logger.warn('exec fell back to minimal session context', {
67
+ sessionId,
68
+ command: command.join(' '),
69
+ });
59
70
  }
60
71
  // Spawn the target command
61
72
  const [cmd, ...cmdArgs] = command;
73
+ await logger.info('exec spawning command', {
74
+ sessionId,
75
+ command: [cmd, ...cmdArgs].join(' '),
76
+ });
62
77
  const child = (0, child_process_1.spawn)(cmd, cmdArgs, {
63
78
  env: childEnv,
64
79
  stdio: 'inherit',
65
80
  });
66
81
  child.on('error', (err) => {
82
+ void logger.error('exec spawn failed', {
83
+ sessionId,
84
+ command: [cmd, ...cmdArgs].join(' '),
85
+ error: err.message,
86
+ });
67
87
  console.error(`Failed to execute command: ${err.message}`);
68
88
  process.exitCode = 1;
69
89
  });
70
90
  child.on('close', (code) => {
91
+ void logger.info('exec completed', {
92
+ sessionId,
93
+ command: [cmd, ...cmdArgs].join(' '),
94
+ exitCode: code ?? 0,
95
+ });
71
96
  process.exitCode = code ?? 0;
72
97
  });
73
98
  // Wait for the child process to finish
@@ -1 +1 @@
1
- {"version":3,"file":"exec.js","sourceRoot":"","sources":["../../../src/cli/commands/exec.ts"],"names":[],"mappings":";AAAA;;;;;;;;;GASG;;;AAEH,iDAAsC;AAEtC,2DAGgC;AAOnB,QAAA,WAAW,GAAoC;IAC1D,OAAO,EAAE,MAAM;IACf,QAAQ,EAAE,6CAA6C;IACvD,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CACjB,KAAK;SACF,MAAM,CAAC,YAAY,EAAE;QACpB,IAAI,EAAE,QAAQ;QACd,YAAY,EAAE,IAAI;QAClB,QAAQ,EAAE,iCAAiC;KAC5C,CAAC;SACD,mBAAmB,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;SAC3C,OAAO,CACN,2CAA2C,EAC3C,8CAA8C,CAC/C;IACL,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QACtB,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC;QACrC,MAAM,OAAO,GAAI,IAAI,CAAC,IAAI,CAA0B,IAAI,EAAE,CAAC;QAE3D,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,OAAO,CAAC,KAAK,CAAC,sCAAsC,CAAC,CAAC;YACtD,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YACrB,OAAO;QACT,CAAC;QAED,yDAAyD;QACzD,MAAM,YAAY,GAAG;YACnB,WAAW,EAAE,CAAC,EAAU,EAAE,EAAE,CAAC,IAAA,4BAAW,EAAC,EAAE,CAAC;YAC5C,WAAW,EAAE,KAAK,IAAI,EAAE,GAA6B,CAAC;SACvD,CAAC;QAEF,gCAAgC;QAChC,IAAI,QAA4C,CAAC;QACjD,IAAI,CAAC;YACH,MAAM,YAAY,GAAG,MAAM,IAAA,uCAAsB,EAAC;gBAChD,SAAS;gBACT,YAAY;aACb,CAAC,CAAC;YAEH,kDAAkD;YAClD,QAAQ,GAAG;gBACT,GAAG,OAAO,CAAC,GAAG;gBACd,GAAG,YAAY,CAAC,GAAG;aACpB,CAAC;QACJ,CAAC;QAAC,MAAM,CAAC;YACP,uEAAuE;YACvE,QAAQ,GAAG;gBACT,GAAG,OAAO,CAAC,GAAG;gBACd,gBAAgB,EAAE,SAAS;aAC5B,CAAC;QACJ,CAAC;QAED,2BAA2B;QAC3B,MAAM,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC,GAAG,OAAO,CAAC;QAClC,MAAM,KAAK,GAAG,IAAA,qBAAK,EAAC,GAAG,EAAE,OAAO,EAAE;YAChC,GAAG,EAAE,QAAQ;YACb,KAAK,EAAE,SAAS;SACjB,CAAC,CAAC;QAEH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;YACxB,OAAO,CAAC,KAAK,CAAC,8BAA8B,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;YAC3D,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACvB,CAAC,CAAC,CAAC;QAEH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;YACzB,OAAO,CAAC,QAAQ,GAAG,IAAI,IAAI,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAC;QAEH,uCAAuC;QACvC,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;YAClC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;QACrC,CAAC,CAAC,CAAC;IACL,CAAC;CACF,CAAC"}
1
+ {"version":3,"file":"exec.js","sourceRoot":"","sources":["../../../src/cli/commands/exec.ts"],"names":[],"mappings":"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"}
@@ -5,19 +5,20 @@
5
5
  *
6
6
  * Pipeline:
7
7
  * 1. Read stdin when adapter expects it
8
- * 2. Normalize event via core normalizeEvent
8
+ * 2. Normalize event via adapter normalizer when available, else core normalizeEvent
9
9
  * 3. Resolve/load session context via core session store
10
10
  * 4. Run handler or fan-out plan via core runPlan
11
11
  * 5. Merge results via core mergeResults
12
12
  * 6. Persist session store
13
13
  * 7. Apply propagation backend
14
- * 8. Emit adapter-native output
14
+ * 8. Emit adapter-native output via adapter renderer when available
15
15
  */
16
16
  import type { CommandModule } from 'yargs';
17
17
  interface InvokeArgs {
18
18
  adapter: string;
19
19
  handler?: string[];
20
20
  'bootstrap-only'?: boolean;
21
+ 'native-event'?: string;
21
22
  'session-id'?: string;
22
23
  json?: boolean;
23
24
  }
@@ -1 +1 @@
1
- {"version":3,"file":"invoke.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/invoke.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAgB3C,UAAU,UAAU;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AA6CD,eAAO,MAAM,aAAa,EAAE,aAAa,CAAC,MAAM,EAAE,UAAU,CAiJ3D,CAAC"}
1
+ {"version":3,"file":"invoke.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/invoke.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAyB3C,UAAU,UAAU;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAkKD,eAAO,MAAM,aAAa,EAAE,aAAa,CAAC,MAAM,EAAE,UAAU,CAiM3D,CAAC"}
@@ -6,53 +6,118 @@
6
6
  *
7
7
  * Pipeline:
8
8
  * 1. Read stdin when adapter expects it
9
- * 2. Normalize event via core normalizeEvent
9
+ * 2. Normalize event via adapter normalizer when available, else core normalizeEvent
10
10
  * 3. Resolve/load session context via core session store
11
11
  * 4. Run handler or fan-out plan via core runPlan
12
12
  * 5. Merge results via core mergeResults
13
13
  * 6. Persist session store
14
14
  * 7. Apply propagation backend
15
- * 8. Emit adapter-native output
15
+ * 8. Emit adapter-native output via adapter renderer when available
16
16
  */
17
17
  Object.defineProperty(exports, "__esModule", { value: true });
18
18
  exports.invokeCommand = void 0;
19
19
  const hooks_mux_core_1 = require("@a5c-ai/hooks-mux-core");
20
20
  const adapter_loader_1 = require("../adapter-loader");
21
+ const bootstrap_runtime_1 = require("../bootstrap-runtime");
22
+ const hooks_logger_1 = require("../hooks-logger");
21
23
  const stdin_1 = require("../stdin");
22
- /**
23
- * Try to parse a string as JSON, returning undefined on failure.
24
- */
25
- function tryParseJson(raw) {
26
- const trimmed = raw.trim();
27
- if (!trimmed)
24
+ function inferClaudeNativeEventName(stdinData) {
25
+ if (!stdinData) {
28
26
  return undefined;
29
- try {
30
- return JSON.parse(trimmed);
31
27
  }
32
- catch {
33
- return undefined;
28
+ if (typeof stdinData['tool_name'] === 'string'
29
+ || typeof stdinData['tool_call_id'] === 'string'
30
+ || stdinData['tool_input'] !== undefined) {
31
+ return stdinData['tool_response'] !== undefined ? 'PostToolUse' : 'PreToolUse';
32
+ }
33
+ if (stdinData['stop_hook_active'] !== undefined
34
+ || typeof stdinData['last_assistant_message'] === 'string'
35
+ || typeof stdinData['reason'] === 'string') {
36
+ return 'Stop';
37
+ }
38
+ if (typeof stdinData['source'] === 'string'
39
+ || stdinData['initial_prompt'] !== undefined) {
40
+ return 'SessionStart';
41
+ }
42
+ if (stdinData['prompt'] !== undefined) {
43
+ return 'UserPromptSubmit';
34
44
  }
45
+ if (stdinData['agent_type'] !== undefined) {
46
+ return 'SubagentStop';
47
+ }
48
+ if (stdinData['title'] !== undefined || stdinData['message'] !== undefined) {
49
+ return 'Notification';
50
+ }
51
+ return undefined;
35
52
  }
36
- /**
37
- * Resolve the session ID from explicit flag, env, or stdin payload.
38
- */
39
- function resolveSessionId(explicitSessionId, stdinData, env) {
40
- if (explicitSessionId)
41
- return explicitSessionId;
42
- if (env['AGENT_SESSION_ID'])
43
- return env['AGENT_SESSION_ID'];
44
- if (stdinData && typeof stdinData['session_id'] === 'string') {
45
- return stdinData['session_id'];
53
+ function resolveRawEventName(explicitNativeEvent, adapterName, stdinData, env) {
54
+ if (explicitNativeEvent) {
55
+ return { rawEventName: explicitNativeEvent, source: 'cli' };
56
+ }
57
+ if (env['HOOKS_PROXY_EVENT_NAME']) {
58
+ return { rawEventName: env['HOOKS_PROXY_EVENT_NAME'], source: 'env' };
59
+ }
60
+ if (typeof stdinData?.['event_name'] === 'string') {
61
+ return { rawEventName: stdinData['event_name'], source: 'stdin' };
62
+ }
63
+ if (adapterName === 'claude') {
64
+ const inferred = inferClaudeNativeEventName(stdinData);
65
+ if (inferred) {
66
+ return { rawEventName: inferred, source: 'claude-heuristic' };
67
+ }
68
+ }
69
+ return { rawEventName: 'unknown', source: 'default' };
70
+ }
71
+ function renderOutput(args, loaded, merged, rawEventName, stdinPayload, event) {
72
+ if (!loaded.renderer) {
73
+ return (0, hooks_mux_core_1.adaptOutput)({
74
+ adapter: args.adapter,
75
+ mergedResult: merged,
76
+ nativeInput: stdinPayload,
77
+ capabilities: loaded.capabilities,
78
+ });
79
+ }
80
+ const rendered = loaded.renderer(merged, rawEventName, event);
81
+ if (rendered && typeof rendered === 'object' && !Array.isArray(rendered) && 'output' in rendered) {
82
+ const adapterRendered = rendered;
83
+ return {
84
+ output: (adapterRendered.output
85
+ && typeof adapterRendered.output === 'object'
86
+ && !Array.isArray(adapterRendered.output))
87
+ ? adapterRendered.output
88
+ : {},
89
+ degradedFields: [
90
+ ...(Array.isArray(adapterRendered.degradedFields) ? adapterRendered.degradedFields : []),
91
+ ...(Array.isArray(adapterRendered.droppedFields) ? adapterRendered.droppedFields : []),
92
+ ].filter((value) => typeof value === 'string'),
93
+ };
46
94
  }
47
- return null;
95
+ return {
96
+ output: (rendered && typeof rendered === 'object' && !Array.isArray(rendered))
97
+ ? rendered
98
+ : {},
99
+ degradedFields: [],
100
+ };
48
101
  }
49
102
  /**
50
103
  * Parse --handler values into HandlerRef objects.
51
104
  * Format: "source:handler" or just "source" (handler defaults to "handler").
52
105
  */
106
+ function findWindowsPathPrefixLength(value) {
107
+ if (/^[A-Za-z]:[\\/]/.test(value)) {
108
+ return 2;
109
+ }
110
+ if (/^[\\/]{2}\?[\\/][A-Za-z]:[\\/]/.test(value)) {
111
+ return 6;
112
+ }
113
+ return 0;
114
+ }
53
115
  function parseHandlerArgs(handlers) {
54
116
  return handlers.map((h) => {
55
- const colonIdx = h.indexOf(':');
117
+ const windowsPrefixLength = findWindowsPathPrefixLength(h);
118
+ const colonIdx = windowsPrefixLength > 0
119
+ ? h.indexOf(':', windowsPrefixLength)
120
+ : h.indexOf(':');
56
121
  if (colonIdx >= 0) {
57
122
  return { source: h.slice(0, colonIdx), handler: h.slice(colonIdx + 1) };
58
123
  }
@@ -77,6 +142,10 @@ exports.invokeCommand = {
77
142
  type: 'boolean',
78
143
  default: false,
79
144
  describe: 'Only bootstrap session context, skip handler execution',
145
+ })
146
+ .option('native-event', {
147
+ type: 'string',
148
+ describe: 'Explicit native hook event name (for Claude: SessionStart, PreToolUse, PostToolUse, Stop, etc.)',
80
149
  })
81
150
  .option('session-id', {
82
151
  type: 'string',
@@ -88,59 +157,79 @@ exports.invokeCommand = {
88
157
  describe: 'Output JSON format',
89
158
  }),
90
159
  handler: async (args) => {
160
+ const logger = (0, hooks_logger_1.createHooksLogger)('invoke');
91
161
  // 1. Load adapter
92
162
  const loaded = (0, adapter_loader_1.loadAdapter)(args.adapter);
163
+ await logger.info('invoke started', {
164
+ adapter: args.adapter,
165
+ bootstrapOnly: Boolean(args['bootstrap-only']),
166
+ handlerCount: args.handler?.length ?? 0,
167
+ });
93
168
  // 2. Read stdin
94
169
  const rawStdin = await (0, stdin_1.readStdin)();
95
- const stdinPayload = tryParseJson(rawStdin);
170
+ const stdinPayload = (0, bootstrap_runtime_1.tryParseJson)(rawStdin);
96
171
  const stdinData = (typeof stdinPayload === 'object' && stdinPayload !== null && !Array.isArray(stdinPayload))
97
172
  ? stdinPayload
98
173
  : undefined;
99
174
  // Determine raw event name from env or stdin
100
175
  const env = process.env;
101
- const rawEventName = env['HOOKS_PROXY_EVENT_NAME']
102
- ?? stdinData?.['event_name']
103
- ?? 'unknown';
104
- // 3. Normalize event
105
- const event = (0, hooks_mux_core_1.normalizeEvent)({
106
- adapter: args.adapter,
176
+ const rawEvent = resolveRawEventName(args['native-event'], loaded.capabilities.name, stdinData, env);
177
+ const { rawEventName } = rawEvent;
178
+ await logger.debug('stdin parsed', {
107
179
  rawEventName,
108
- stdinPayload,
109
- env,
110
- adapterMappings: loaded.phaseMappings,
180
+ rawEventNameSource: rawEvent.source,
181
+ stdinBytes: rawStdin.length,
182
+ stdinJson: Boolean(stdinData),
111
183
  });
184
+ // 3. Normalize event
185
+ const event = loaded.normalizer
186
+ ? loaded.normalizer(rawEventName, rawStdin, env)
187
+ : (0, hooks_mux_core_1.normalizeEvent)({
188
+ adapter: args.adapter,
189
+ rawEventName,
190
+ stdinPayload,
191
+ env,
192
+ adapterMappings: loaded.phaseMappings,
193
+ });
112
194
  // 4. Resolve session
113
- const sessionId = resolveSessionId(args['session-id'], stdinData, env);
195
+ const sessionId = (0, bootstrap_runtime_1.resolveSessionId)(loaded.sessionResolver, args['session-id'], event.execution.sessionId, stdinData, env);
196
+ await logger.debug('session resolved', {
197
+ sessionId,
198
+ explicitSessionId: args['session-id'] ?? null,
199
+ });
114
200
  let session = null;
115
201
  if (sessionId) {
116
- session = await (0, hooks_mux_core_1.loadSession)(sessionId);
117
- if (!session) {
118
- // Create a new session
119
- session = {
120
- version: 'a5c.hooks.session.v1',
121
- sessionId,
122
- adapter: args.adapter,
123
- createdAt: new Date().toISOString(),
124
- updatedAt: new Date().toISOString(),
125
- cwd: event.execution.cwd ?? undefined,
126
- transcriptPath: event.execution.transcriptPath ?? undefined,
127
- persistedEnv: { ...event.env.persisted },
128
- contextVars: {},
129
- contextFragments: [],
130
- metadata: {},
131
- };
132
- }
202
+ const prepared = (0, bootstrap_runtime_1.prepareBootstrapSession)({
203
+ existingSession: await (0, hooks_mux_core_1.loadSession)(sessionId),
204
+ adapter: args.adapter,
205
+ event,
206
+ sessionId,
207
+ });
208
+ session = prepared.session;
133
209
  // Inject session context into event execution
134
210
  event.execution.sessionId = sessionId;
135
- if (session.persistedEnv) {
211
+ if (session?.persistedEnv) {
136
212
  Object.assign(event.execution.persistedEnv, session.persistedEnv);
137
213
  }
138
214
  }
139
215
  // 5. Bootstrap-only mode: persist session and exit
140
216
  if (args['bootstrap-only']) {
217
+ const prepared = (0, bootstrap_runtime_1.prepareBootstrapSession)({
218
+ existingSession: session,
219
+ adapter: args.adapter,
220
+ event,
221
+ sessionId,
222
+ });
223
+ session = prepared.session;
141
224
  if (session) {
142
225
  await (0, hooks_mux_core_1.saveSession)(session);
143
226
  }
227
+ const propagated = await (0, bootstrap_runtime_1.propagateBootstrapEnv)(loaded.capabilities.envPersistenceMode, prepared.persistEnv, env);
228
+ await logger.info('bootstrap-only invoke completed', {
229
+ adapter: args.adapter,
230
+ sessionId,
231
+ propagated,
232
+ });
144
233
  if (args.json) {
145
234
  process.stdout.write(JSON.stringify({ status: 'bootstrapped', sessionId }, null, 2) + '\n');
146
235
  }
@@ -162,6 +251,12 @@ exports.invokeCommand = {
162
251
  // No handlers: produce a noop result
163
252
  merged = (0, hooks_mux_core_1.mergeResults)([{ decision: 'noop' }]);
164
253
  }
254
+ await logger.debug('plan executed', {
255
+ phase: event.phase,
256
+ planLength: plan.length,
257
+ decision: merged.decision,
258
+ degradedFields: merged.diagnostics.degradedFields,
259
+ });
165
260
  // 8. Persist session updates
166
261
  if (session && sessionId) {
167
262
  if (Object.keys(merged.persistEnv).length > 0) {
@@ -180,15 +275,17 @@ exports.invokeCommand = {
180
275
  if (Object.keys(merged.persistEnv).length > 0) {
181
276
  const backend = loaded.capabilities.envPersistenceMode;
182
277
  await (0, hooks_mux_core_1.propagateEnv)(backend, merged.persistEnv, {
183
- nativeEnvFilePath: env['CLAUDE_ENV_FILE'] ?? env['HOOKS_PROXY_ENV_FILE'],
278
+ nativeEnvFilePath: (0, bootstrap_runtime_1.resolveNativeEnvFilePath)(env),
184
279
  });
185
280
  }
186
281
  // 10. Emit adapter-native output
187
- const adapted = (0, hooks_mux_core_1.adaptOutput)({
282
+ const adapted = renderOutput(args, loaded, merged, rawEventName, stdinPayload, event);
283
+ await logger.info('invoke completed', {
188
284
  adapter: args.adapter,
189
- mergedResult: merged,
190
- nativeInput: stdinPayload,
191
- capabilities: loaded.capabilities,
285
+ phase: event.phase,
286
+ sessionId,
287
+ decision: merged.decision,
288
+ degradedFields: adapted.degradedFields,
192
289
  });
193
290
  process.stdout.write(JSON.stringify(adapted.output, null, args.json ? 2 : 0) + '\n');
194
291
  },
@@ -1 +1 @@
1
- {"version":3,"file":"invoke.js","sourceRoot":"","sources":["../../../src/cli/commands/invoke.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"invoke.js","sourceRoot":"","sources":["../../../src/cli/commands/invoke.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ export type HooksLogLevel = 'debug' | 'info' | 'warn' | 'error';
2
+ export declare function getHooksLogDir(): string;
3
+ export declare function getHooksLogPath(): string;
4
+ export declare function shouldLog(level: HooksLogLevel): boolean;
5
+ export declare function appendHooksLog(command: string, level: HooksLogLevel, message: string, context?: Record<string, unknown>): Promise<void>;
6
+ export declare function createHooksLogger(command: string): {
7
+ debug: (message: string, context?: Record<string, unknown>) => Promise<void>;
8
+ info: (message: string, context?: Record<string, unknown>) => Promise<void>;
9
+ warn: (message: string, context?: Record<string, unknown>) => Promise<void>;
10
+ error: (message: string, context?: Record<string, unknown>) => Promise<void>;
11
+ };
12
+ //# sourceMappingURL=hooks-logger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hooks-logger.d.ts","sourceRoot":"","sources":["../../src/cli/hooks-logger.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AA+ChE,wBAAgB,cAAc,IAAI,MAAM,CAEvC;AAED,wBAAgB,eAAe,IAAI,MAAM,CAExC;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAGvD;AAED,wBAAsB,cAAc,CAClC,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,aAAa,EACpB,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAChC,OAAO,CAAC,IAAI,CAAC,CAuBf;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM;qBAE5B,MAAM,YAAY,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;oBAE1C,MAAM,YAAY,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;oBAEzC,MAAM,YAAY,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;qBAExC,MAAM,YAAY,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;EAG7D"}
@@ -0,0 +1,115 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.getHooksLogDir = getHooksLogDir;
37
+ exports.getHooksLogPath = getHooksLogPath;
38
+ exports.shouldLog = shouldLog;
39
+ exports.appendHooksLog = appendHooksLog;
40
+ exports.createHooksLogger = createHooksLogger;
41
+ const fs = __importStar(require("fs"));
42
+ const os = __importStar(require("os"));
43
+ const path = __importStar(require("path"));
44
+ const LOG_LEVELS = {
45
+ debug: 10,
46
+ info: 20,
47
+ warn: 30,
48
+ error: 40,
49
+ };
50
+ const LOG_LEVEL_ENV = 'A5C_LOGGING_HOOKS_LEVEL';
51
+ const LOG_FILE_NAME = 'hooks-mux.log';
52
+ function resolveHomeDir() {
53
+ const envHome = process.env.HOME?.trim();
54
+ if (envHome) {
55
+ return envHome;
56
+ }
57
+ const userProfile = process.env.USERPROFILE?.trim();
58
+ if (userProfile) {
59
+ return userProfile;
60
+ }
61
+ return os.homedir();
62
+ }
63
+ function parseLogLevel(value) {
64
+ switch ((value ?? '').trim().toLowerCase()) {
65
+ case 'debug':
66
+ return 'debug';
67
+ case 'warn':
68
+ return 'warn';
69
+ case 'error':
70
+ return 'error';
71
+ default:
72
+ return 'info';
73
+ }
74
+ }
75
+ function getHooksLogDir() {
76
+ return path.join(resolveHomeDir(), '.a5c', 'logs', 'hooks');
77
+ }
78
+ function getHooksLogPath() {
79
+ return path.join(getHooksLogDir(), LOG_FILE_NAME);
80
+ }
81
+ function shouldLog(level) {
82
+ const configured = parseLogLevel(process.env[LOG_LEVEL_ENV]);
83
+ return LOG_LEVELS[level] >= LOG_LEVELS[configured];
84
+ }
85
+ async function appendHooksLog(command, level, message, context) {
86
+ if (!shouldLog(level)) {
87
+ return;
88
+ }
89
+ const entry = {
90
+ ts: new Date().toISOString(),
91
+ level,
92
+ command,
93
+ msg: message,
94
+ };
95
+ if (context && Object.keys(context).length > 0) {
96
+ entry.ctx = context;
97
+ }
98
+ try {
99
+ const logDir = getHooksLogDir();
100
+ await fs.promises.mkdir(logDir, { recursive: true });
101
+ await fs.promises.appendFile(getHooksLogPath(), JSON.stringify(entry) + '\n', 'utf8');
102
+ }
103
+ catch {
104
+ // Logging must never interfere with hook execution.
105
+ }
106
+ }
107
+ function createHooksLogger(command) {
108
+ return {
109
+ debug: (message, context) => appendHooksLog(command, 'debug', message, context),
110
+ info: (message, context) => appendHooksLog(command, 'info', message, context),
111
+ warn: (message, context) => appendHooksLog(command, 'warn', message, context),
112
+ error: (message, context) => appendHooksLog(command, 'error', message, context),
113
+ };
114
+ }
115
+ //# sourceMappingURL=hooks-logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hooks-logger.js","sourceRoot":"","sources":["../../src/cli/hooks-logger.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../src/cli/main.ts"],"names":[],"mappings":";AAWA,wBAAsB,IAAI,CAAC,IAAI,GAAE,MAAM,EAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAcvE"}
1
+ {"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../src/cli/main.ts"],"names":[],"mappings":";AAYA,wBAAsB,IAAI,CAAC,IAAI,GAAE,MAAM,EAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAcvE"}
package/dist/cli/main.js CHANGED
@@ -7,6 +7,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
7
7
  exports.main = main;
8
8
  const yargs_1 = __importDefault(require("yargs"));
9
9
  const helpers_1 = require("yargs/helpers");
10
+ const hooks_logger_1 = require("./hooks-logger");
10
11
  const invoke_1 = require("./commands/invoke");
11
12
  const exec_1 = require("./commands/exec");
12
13
  const bootstrap_1 = require("./commands/bootstrap");
@@ -29,7 +30,11 @@ async function main(argv = process.argv) {
29
30
  .parseAsync();
30
31
  }
31
32
  if (require.main === module) {
33
+ const logger = (0, hooks_logger_1.createHooksLogger)('main');
32
34
  main().catch((err) => {
35
+ void logger.error('cli main failed', {
36
+ error: err instanceof Error ? err.message : String(err),
37
+ });
33
38
  console.error(err);
34
39
  process.exit(1);
35
40
  });
@@ -1 +1 @@
1
- {"version":3,"file":"main.js","sourceRoot":"","sources":["../../src/cli/main.ts"],"names":[],"mappings":";;;;;;AAWA,oBAcC;AAvBD,kDAA0B;AAC1B,2CAAwC;AACxC,8CAAkD;AAClD,0CAA8C;AAC9C,oDAAwD;AACxD,0DAA6D;AAC7D,4DAA+D;AAC/D,8CAAkD;AAE3C,KAAK,UAAU,IAAI,CAAC,OAAiB,OAAO,CAAC,IAAI;IACtD,MAAM,IAAA,eAAK,EAAC,IAAA,iBAAO,EAAC,IAAI,CAAC,CAAC;SACvB,UAAU,CAAC,eAAe,CAAC;SAC3B,KAAK,CAAC,wBAAwB,CAAC;SAC/B,OAAO,CAAC,sBAAa,CAAC;SACtB,OAAO,CAAC,kBAAW,CAAC;SACpB,OAAO,CAAC,4BAAgB,CAAC;SACzB,OAAO,CAAC,iCAAkB,CAAC;SAC3B,OAAO,CAAC,mCAAmB,CAAC;SAC5B,OAAO,CAAC,sBAAa,CAAC;SACtB,aAAa,CAAC,CAAC,EAAE,4BAA4B,CAAC;SAC9C,MAAM,EAAE;SACR,IAAI,EAAE;SACN,UAAU,EAAE,CAAC;AAClB,CAAC;AAED,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;IAC5B,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;QAC5B,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACnB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"main.js","sourceRoot":"","sources":["../../src/cli/main.ts"],"names":[],"mappings":";;;;;;AAYA,oBAcC;AAxBD,kDAA0B;AAC1B,2CAAwC;AACxC,iDAAmD;AACnD,8CAAkD;AAClD,0CAA8C;AAC9C,oDAAwD;AACxD,0DAA6D;AAC7D,4DAA+D;AAC/D,8CAAkD;AAE3C,KAAK,UAAU,IAAI,CAAC,OAAiB,OAAO,CAAC,IAAI;IACtD,MAAM,IAAA,eAAK,EAAC,IAAA,iBAAO,EAAC,IAAI,CAAC,CAAC;SACvB,UAAU,CAAC,eAAe,CAAC;SAC3B,KAAK,CAAC,wBAAwB,CAAC;SAC/B,OAAO,CAAC,sBAAa,CAAC;SACtB,OAAO,CAAC,kBAAW,CAAC;SACpB,OAAO,CAAC,4BAAgB,CAAC;SACzB,OAAO,CAAC,iCAAkB,CAAC;SAC3B,OAAO,CAAC,mCAAmB,CAAC;SAC5B,OAAO,CAAC,sBAAa,CAAC;SACtB,aAAa,CAAC,CAAC,EAAE,4BAA4B,CAAC;SAC9C,MAAM,EAAE;SACR,IAAI,EAAE;SACN,UAAU,EAAE,CAAC;AAClB,CAAC;AAED,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;IAC5B,MAAM,MAAM,GAAG,IAAA,gCAAiB,EAAC,MAAM,CAAC,CAAC;IACzC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;QAC5B,KAAK,MAAM,CAAC,KAAK,CAAC,iBAAiB,EAAE;YACnC,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;SACxD,CAAC,CAAC;QACH,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACnB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;AACL,CAAC"}
package/package.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "@a5c-ai/hooks-mux-cli",
3
- "version": "5.0.1-staging.fcac7259",
3
+ "version": "5.0.1-staging.ff407b73",
4
4
  "description": "CLI entrypoint for the hooks-mux system",
5
- "license": "UNLICENSED",
5
+ "license": "MIT",
6
6
  "type": "commonjs",
7
7
  "main": "dist/index.js",
8
8
  "types": "dist/index.d.ts",
@@ -14,11 +14,16 @@
14
14
  },
15
15
  "repository": {
16
16
  "type": "git",
17
- "url": "https://github.com/a5c-ai/babysitter.git",
17
+ "url": "git+https://github.com/a5c-ai/babysitter.git",
18
18
  "directory": "packages/hooks-mux/cli"
19
19
  },
20
+ "homepage": "https://github.com/a5c-ai/babysitter/tree/main/packages/hooks-mux/cli#readme",
21
+ "bugs": {
22
+ "url": "https://github.com/a5c-ai/babysitter/issues"
23
+ },
20
24
  "files": [
21
- "dist"
25
+ "dist",
26
+ "README.md"
22
27
  ],
23
28
  "scripts": {
24
29
  "build": "tsc -p tsconfig.json",
@@ -28,7 +33,16 @@
28
33
  "test:watch": "vitest"
29
34
  },
30
35
  "dependencies": {
31
- "@a5c-ai/hooks-mux-core": "5.0.1-staging.fcac7259",
36
+ "@a5c-ai/hooks-mux-adapter-claude": "5.0.1-staging.ff407b73",
37
+ "@a5c-ai/hooks-mux-adapter-codex": "5.0.1-staging.ff407b73",
38
+ "@a5c-ai/hooks-mux-adapter-copilot": "5.0.1-staging.ff407b73",
39
+ "@a5c-ai/hooks-mux-adapter-cursor": "5.0.1-staging.ff407b73",
40
+ "@a5c-ai/hooks-mux-adapter-gemini": "5.0.1-staging.ff407b73",
41
+ "@a5c-ai/hooks-mux-adapter-oh-my-pi": "5.0.1-staging.ff407b73",
42
+ "@a5c-ai/hooks-mux-adapter-openclaw": "5.0.1-staging.ff407b73",
43
+ "@a5c-ai/hooks-mux-adapter-opencode": "5.0.1-staging.ff407b73",
44
+ "@a5c-ai/hooks-mux-adapter-pi": "5.0.1-staging.ff407b73",
45
+ "@a5c-ai/hooks-mux-core": "5.0.1-staging.ff407b73",
32
46
  "yargs": "^17.0.0"
33
47
  },
34
48
  "devDependencies": {