@pinta-ai/pinta-cc 1.4.1 → 1.5.1

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.
Files changed (63) hide show
  1. package/.claude-plugin/plugin.json +1 -1
  2. package/CHANGELOG.md +23 -0
  3. package/dist/index.js +14 -71
  4. package/package.json +9 -2
  5. package/dist/core/config.d.ts +0 -13
  6. package/dist/core/config.js +0 -22
  7. package/dist/core/config.js.map +0 -1
  8. package/dist/core/env-bridge.d.ts +0 -25
  9. package/dist/core/env-bridge.js +0 -43
  10. package/dist/core/env-bridge.js.map +0 -1
  11. package/dist/core/guard.d.ts +0 -14
  12. package/dist/core/guard.js +0 -51
  13. package/dist/core/guard.js.map +0 -1
  14. package/dist/core/identity.d.ts +0 -1
  15. package/dist/core/identity.js +0 -3
  16. package/dist/core/identity.js.map +0 -1
  17. package/dist/core/otlp.d.ts +0 -59
  18. package/dist/core/otlp.js +0 -224
  19. package/dist/core/otlp.js.map +0 -1
  20. package/dist/core/redact.d.ts +0 -57
  21. package/dist/core/redact.js +0 -149
  22. package/dist/core/redact.js.map +0 -1
  23. package/dist/core/retry-queue.d.ts +0 -26
  24. package/dist/core/retry-queue.js +0 -127
  25. package/dist/core/retry-queue.js.map +0 -1
  26. package/dist/core/trace.d.ts +0 -10
  27. package/dist/core/trace.js +0 -61
  28. package/dist/core/trace.js.map +0 -1
  29. package/dist/core/transport.d.ts +0 -18
  30. package/dist/core/transport.js +0 -125
  31. package/dist/core/transport.js.map +0 -1
  32. package/dist/core/types.d.ts +0 -65
  33. package/dist/core/types.js +0 -39
  34. package/dist/core/types.js.map +0 -1
  35. package/dist/env-file.d.ts +0 -9
  36. package/dist/env-file.js +0 -85
  37. package/dist/env-file.js.map +0 -1
  38. package/dist/handlers/default.d.ts +0 -6
  39. package/dist/handlers/default.js +0 -11
  40. package/dist/handlers/default.js.map +0 -1
  41. package/dist/handlers/permission.d.ts +0 -3
  42. package/dist/handlers/permission.js +0 -15
  43. package/dist/handlers/permission.js.map +0 -1
  44. package/dist/handlers/post-tool-use.d.ts +0 -3
  45. package/dist/handlers/post-tool-use.js +0 -15
  46. package/dist/handlers/post-tool-use.js.map +0 -1
  47. package/dist/handlers/pre-tool-use.d.ts +0 -3
  48. package/dist/handlers/pre-tool-use.js +0 -40
  49. package/dist/handlers/pre-tool-use.js.map +0 -1
  50. package/dist/handlers/session.d.ts +0 -3
  51. package/dist/handlers/session.js +0 -15
  52. package/dist/handlers/session.js.map +0 -1
  53. package/dist/handlers/stop.d.ts +0 -3
  54. package/dist/handlers/stop.js +0 -15
  55. package/dist/handlers/stop.js.map +0 -1
  56. package/dist/handlers/subagent.d.ts +0 -3
  57. package/dist/handlers/subagent.js +0 -15
  58. package/dist/handlers/subagent.js.map +0 -1
  59. package/dist/handlers/user-prompt.d.ts +0 -3
  60. package/dist/handlers/user-prompt.js +0 -15
  61. package/dist/handlers/user-prompt.js.map +0 -1
  62. package/dist/index.d.ts +0 -1
  63. package/dist/index.js.map +0 -1
@@ -1,61 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.TraceManager = void 0;
7
- const fs_1 = __importDefault(require("fs"));
8
- const path_1 = __importDefault(require("path"));
9
- const crypto_1 = __importDefault(require("crypto"));
10
- const CROCKFORD = "0123456789ABCDEFGHJKMNPQRSTVWXYZ";
11
- function generateUlid() {
12
- const now = Date.now();
13
- // 10 chars timestamp (48-bit ms)
14
- let ts = "";
15
- let t = now;
16
- for (let i = 0; i < 10; i++) {
17
- ts = CROCKFORD[t & 31] + ts;
18
- t = Math.floor(t / 32);
19
- }
20
- // 16 chars randomness (80-bit)
21
- const rand = crypto_1.default.randomBytes(10);
22
- let r = "";
23
- for (let i = 0; i < 10; i++) {
24
- r += CROCKFORD[rand[i] & 31];
25
- }
26
- // pad to 16 chars
27
- while (r.length < 16)
28
- r += CROCKFORD[0];
29
- return ts + r;
30
- }
31
- class TraceManager {
32
- tracePath;
33
- constructor(config) {
34
- this.tracePath = config.tracePath;
35
- }
36
- /** UserPromptSubmit 시 새 traceId 생성 및 저장 */
37
- newTrace() {
38
- const traceId = generateUlid();
39
- this.save(traceId);
40
- return traceId;
41
- }
42
- /** 현재 traceId 반환. 없으면 새로 생성 */
43
- currentTrace() {
44
- try {
45
- const data = fs_1.default.readFileSync(this.tracePath, "utf-8");
46
- const { traceId } = JSON.parse(data);
47
- if (traceId)
48
- return traceId;
49
- }
50
- catch {
51
- // no trace file yet
52
- }
53
- return this.newTrace();
54
- }
55
- save(traceId) {
56
- fs_1.default.mkdirSync(path_1.default.dirname(this.tracePath), { recursive: true });
57
- fs_1.default.writeFileSync(this.tracePath, JSON.stringify({ traceId }));
58
- }
59
- }
60
- exports.TraceManager = TraceManager;
61
- //# sourceMappingURL=trace.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"trace.js","sourceRoot":"","sources":["../../src/core/trace.ts"],"names":[],"mappings":";;;;;;AAAA,4CAAoB;AACpB,gDAAwB;AACxB,oDAA4B;AAG5B,MAAM,SAAS,GAAG,kCAAkC,CAAC;AAErD,SAAS,YAAY;IACnB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACvB,iCAAiC;IACjC,IAAI,EAAE,GAAG,EAAE,CAAC;IACZ,IAAI,CAAC,GAAG,GAAG,CAAC;IACZ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5B,EAAE,GAAG,SAAS,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC;QAC5B,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;IACzB,CAAC;IACD,+BAA+B;IAC/B,MAAM,IAAI,GAAG,gBAAM,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;IACpC,IAAI,CAAC,GAAG,EAAE,CAAC;IACX,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5B,CAAC,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;IAC/B,CAAC;IACD,kBAAkB;IAClB,OAAO,CAAC,CAAC,MAAM,GAAG,EAAE;QAAE,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC;IACxC,OAAO,EAAE,GAAG,CAAC,CAAC;AAChB,CAAC;AAED,MAAa,YAAY;IACf,SAAS,CAAS;IAE1B,YAAY,MAAmB;QAC7B,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;IACpC,CAAC;IAED,2CAA2C;IAC3C,QAAQ;QACN,MAAM,OAAO,GAAG,YAAY,EAAE,CAAC;QAC/B,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACnB,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,+BAA+B;IAC/B,YAAY;QACV,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,YAAE,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;YACtD,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACrC,IAAI,OAAO;gBAAE,OAAO,OAAO,CAAC;QAC9B,CAAC;QAAC,MAAM,CAAC;YACP,oBAAoB;QACtB,CAAC;QACD,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;IACzB,CAAC;IAEO,IAAI,CAAC,OAAe;QAC1B,YAAE,CAAC,SAAS,CAAC,cAAI,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAChE,YAAE,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;IAChE,CAAC;CACF;AA9BD,oCA8BC"}
@@ -1,18 +0,0 @@
1
- import type { OtlpPayload } from "./otlp.js";
2
- import type { PintaConfig } from "./config.js";
3
- export declare class Transport {
4
- private queue;
5
- constructor(config: PintaConfig);
6
- /**
7
- * POST a single payload. On any failure, enqueue it for the next hook to retry.
8
- * Silent disable when no endpoint is configured.
9
- */
10
- send(payload: OtlpPayload): Promise<void>;
11
- /**
12
- * Best-effort drain. Acquires the lock, reads the queue, attempts a single
13
- * batched POST. On failure, leaves the queue untouched.
14
- * Silent disable when no endpoint is configured.
15
- */
16
- flush(): Promise<void>;
17
- private post;
18
- }
@@ -1,125 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Transport = void 0;
4
- const retry_queue_js_1 = require("./retry-queue.js");
5
- const otlp_js_1 = require("./otlp.js");
6
- const TIMEOUT_MS = 5000;
7
- function parseHeadersEnv(raw) {
8
- if (!raw)
9
- return {};
10
- const out = {};
11
- for (const pair of raw.split(",")) {
12
- const [k, ...rest] = pair.split("=");
13
- if (k && rest.length > 0)
14
- out[k.trim()] = rest.join("=").trim();
15
- }
16
- return out;
17
- }
18
- function getOptions() {
19
- // OTLP/HTTP spec: TRACES_ENDPOINT is the full URL (no append by exporter);
20
- // ENDPOINT is a base URL the SDK appends /v1/traces to. We treat the
21
- // value as a full URL — env-bridge maps CLAUDE_PLUGIN_OPTION_ENDPOINT to
22
- // TRACES_ENDPOINT specifically. For OSS users who set ENDPOINT directly,
23
- // assume base URL and append /v1/traces.
24
- const tracesEndpoint = process.env.OTEL_EXPORTER_OTLP_TRACES_ENDPOINT;
25
- const baseEndpoint = process.env.OTEL_EXPORTER_OTLP_ENDPOINT;
26
- let endpoint;
27
- if (tracesEndpoint) {
28
- endpoint = tracesEndpoint.replace(/\/+$/, "");
29
- }
30
- else if (baseEndpoint) {
31
- endpoint = baseEndpoint.replace(/\/+$/, "") + "/v1/traces";
32
- }
33
- if (!endpoint)
34
- return null;
35
- return {
36
- endpoint,
37
- headers: parseHeadersEnv(process.env.OTEL_EXPORTER_OTLP_HEADERS),
38
- };
39
- }
40
- class Transport {
41
- queue;
42
- constructor(config) {
43
- this.queue = new retry_queue_js_1.RetryQueue(config.pluginData);
44
- }
45
- /**
46
- * POST a single payload. On any failure, enqueue it for the next hook to retry.
47
- * Silent disable when no endpoint is configured.
48
- */
49
- async send(payload) {
50
- const opts = getOptions();
51
- if (!opts)
52
- return; // Silent disable when no endpoint configured
53
- const ok = await this.post(payload, opts);
54
- if (!ok)
55
- this.queue.enqueue(payload);
56
- }
57
- /**
58
- * Best-effort drain. Acquires the lock, reads the queue, attempts a single
59
- * batched POST. On failure, leaves the queue untouched.
60
- * Silent disable when no endpoint is configured.
61
- */
62
- async flush() {
63
- const opts = getOptions();
64
- if (!opts)
65
- return;
66
- if (!this.queue.tryAcquireLock())
67
- return;
68
- try {
69
- const entries = this.queue.readAll();
70
- if (entries.length === 0)
71
- return;
72
- const merged = (0, otlp_js_1.mergeBatch)(entries.map((e) => e.payload));
73
- const ok = await this.post(merged, opts);
74
- if (ok)
75
- this.queue.rewrite([]);
76
- }
77
- finally {
78
- this.queue.release();
79
- }
80
- }
81
- async post(payload, opts) {
82
- const ctrl = new AbortController();
83
- const timer = setTimeout(() => ctrl.abort(), TIMEOUT_MS);
84
- try {
85
- // opts.endpoint is the full traces URL — no path append.
86
- const res = await fetch(opts.endpoint, {
87
- method: "POST",
88
- headers: {
89
- "Content-Type": "application/json",
90
- ...opts.headers,
91
- },
92
- body: JSON.stringify(payload),
93
- signal: ctrl.signal,
94
- });
95
- if (!res.ok) {
96
- let body = "";
97
- try {
98
- body = (await res.text()).slice(0, 200);
99
- }
100
- catch {
101
- /* ignore */
102
- }
103
- const hint = res.status === 401 || res.status === 403
104
- ? " — check OTEL_EXPORTER_OTLP_HEADERS (relay token)"
105
- : res.status === 404
106
- ? " — check OTEL_EXPORTER_OTLP_TRACES_ENDPOINT path"
107
- : res.status >= 500
108
- ? " — collector may be down"
109
- : "";
110
- process.stderr.write(`[pinta-cc] OTLP POST ${res.status} ${opts.endpoint}${hint}${body ? ` body=${body}` : ""}\n`);
111
- return false;
112
- }
113
- return true;
114
- }
115
- catch (err) {
116
- process.stderr.write(`[pinta-cc] OTLP POST failed: ${err.message ?? String(err)}\n`);
117
- return false;
118
- }
119
- finally {
120
- clearTimeout(timer);
121
- }
122
- }
123
- }
124
- exports.Transport = Transport;
125
- //# sourceMappingURL=transport.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"transport.js","sourceRoot":"","sources":["../../src/core/transport.ts"],"names":[],"mappings":"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"}
@@ -1,65 +0,0 @@
1
- export interface BaseEvent {
2
- session_id: string;
3
- transcript_path: string;
4
- cwd: string;
5
- permission_mode?: string;
6
- hook_event_name: string;
7
- [key: string]: unknown;
8
- }
9
- export interface PreToolUseEvent extends BaseEvent {
10
- hook_event_name: "PreToolUse";
11
- tool_name: string;
12
- tool_input: Record<string, unknown>;
13
- tool_use_id: string;
14
- }
15
- export interface PostToolUseEvent extends BaseEvent {
16
- hook_event_name: "PostToolUse";
17
- tool_name: string;
18
- tool_input: Record<string, unknown>;
19
- tool_response: unknown;
20
- tool_use_id: string;
21
- }
22
- export interface PostToolUseFailureEvent extends BaseEvent {
23
- hook_event_name: "PostToolUseFailure";
24
- tool_name: string;
25
- tool_input: Record<string, unknown>;
26
- tool_use_id: string;
27
- error?: string;
28
- is_interrupt?: boolean;
29
- }
30
- export interface UserPromptSubmitEvent extends BaseEvent {
31
- hook_event_name: "UserPromptSubmit";
32
- prompt: string;
33
- }
34
- export interface SessionEvent extends BaseEvent {
35
- hook_event_name: "SessionStart" | "SessionEnd";
36
- }
37
- export interface SubagentEvent extends BaseEvent {
38
- hook_event_name: "SubagentStart" | "SubagentStop";
39
- agent_id?: string;
40
- agent_type?: string;
41
- }
42
- export interface StopEvent extends BaseEvent {
43
- hook_event_name: "Stop";
44
- stop_hook_active?: boolean;
45
- }
46
- export interface PermissionEvent extends BaseEvent {
47
- hook_event_name: "PermissionRequest" | "PermissionDenied";
48
- tool_name?: string;
49
- tool_input?: Record<string, unknown>;
50
- }
51
- export declare function isPreToolUseEvent(event: BaseEvent): event is PreToolUseEvent;
52
- export declare function isPostToolUseEvent(event: BaseEvent): event is PostToolUseEvent | PostToolUseFailureEvent;
53
- export declare function isUserPromptSubmitEvent(event: BaseEvent): event is UserPromptSubmitEvent;
54
- export declare function isSessionEvent(event: BaseEvent): event is SessionEvent;
55
- export declare function isSubagentEvent(event: BaseEvent): event is SubagentEvent;
56
- export declare function isStopEvent(event: BaseEvent): event is StopEvent;
57
- export declare function isPermissionEvent(event: BaseEvent): event is PermissionEvent;
58
- export declare function isSkippedHook(event: BaseEvent): boolean;
59
- export interface HookBlockOutput {
60
- hookSpecificOutput: {
61
- hookEventName: "PreToolUse";
62
- permissionDecision: "deny";
63
- permissionDecisionReason: string;
64
- };
65
- }
@@ -1,39 +0,0 @@
1
- "use strict";
2
- // --- Claude Code hook event types ---
3
- Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.isPreToolUseEvent = isPreToolUseEvent;
5
- exports.isPostToolUseEvent = isPostToolUseEvent;
6
- exports.isUserPromptSubmitEvent = isUserPromptSubmitEvent;
7
- exports.isSessionEvent = isSessionEvent;
8
- exports.isSubagentEvent = isSubagentEvent;
9
- exports.isStopEvent = isStopEvent;
10
- exports.isPermissionEvent = isPermissionEvent;
11
- exports.isSkippedHook = isSkippedHook;
12
- // --- Type guards ---
13
- function isPreToolUseEvent(event) {
14
- return event.hook_event_name === "PreToolUse";
15
- }
16
- function isPostToolUseEvent(event) {
17
- return (event.hook_event_name === "PostToolUse" || event.hook_event_name === "PostToolUseFailure");
18
- }
19
- function isUserPromptSubmitEvent(event) {
20
- return event.hook_event_name === "UserPromptSubmit";
21
- }
22
- function isSessionEvent(event) {
23
- return event.hook_event_name === "SessionStart" || event.hook_event_name === "SessionEnd";
24
- }
25
- function isSubagentEvent(event) {
26
- return event.hook_event_name === "SubagentStart" || event.hook_event_name === "SubagentStop";
27
- }
28
- function isStopEvent(event) {
29
- return event.hook_event_name === "Stop";
30
- }
31
- function isPermissionEvent(event) {
32
- return (event.hook_event_name === "PermissionRequest" || event.hook_event_name === "PermissionDenied");
33
- }
34
- // --- Skip-list (route to default no-op handler) ---
35
- const SKIP_HOOKS = new Set(["Notification", "TaskCreated", "TaskCompleted"]);
36
- function isSkippedHook(event) {
37
- return SKIP_HOOKS.has(event.hook_event_name);
38
- }
39
- //# sourceMappingURL=types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":";AAAA,uCAAuC;;AAgEvC,8CAEC;AAED,gDAMC;AAED,0DAEC;AAED,wCAEC;AAED,0CAEC;AAED,kCAEC;AAED,8CAIC;AAKD,sCAEC;AAzCD,sBAAsB;AAEtB,SAAgB,iBAAiB,CAAC,KAAgB;IAChD,OAAO,KAAK,CAAC,eAAe,KAAK,YAAY,CAAC;AAChD,CAAC;AAED,SAAgB,kBAAkB,CAChC,KAAgB;IAEhB,OAAO,CACL,KAAK,CAAC,eAAe,KAAK,aAAa,IAAI,KAAK,CAAC,eAAe,KAAK,oBAAoB,CAC1F,CAAC;AACJ,CAAC;AAED,SAAgB,uBAAuB,CAAC,KAAgB;IACtD,OAAO,KAAK,CAAC,eAAe,KAAK,kBAAkB,CAAC;AACtD,CAAC;AAED,SAAgB,cAAc,CAAC,KAAgB;IAC7C,OAAO,KAAK,CAAC,eAAe,KAAK,cAAc,IAAI,KAAK,CAAC,eAAe,KAAK,YAAY,CAAC;AAC5F,CAAC;AAED,SAAgB,eAAe,CAAC,KAAgB;IAC9C,OAAO,KAAK,CAAC,eAAe,KAAK,eAAe,IAAI,KAAK,CAAC,eAAe,KAAK,cAAc,CAAC;AAC/F,CAAC;AAED,SAAgB,WAAW,CAAC,KAAgB;IAC1C,OAAO,KAAK,CAAC,eAAe,KAAK,MAAM,CAAC;AAC1C,CAAC;AAED,SAAgB,iBAAiB,CAAC,KAAgB;IAChD,OAAO,CACL,KAAK,CAAC,eAAe,KAAK,mBAAmB,IAAI,KAAK,CAAC,eAAe,KAAK,kBAAkB,CAC9F,CAAC;AACJ,CAAC;AAED,qDAAqD;AAErD,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,CAAC,cAAc,EAAE,aAAa,EAAE,eAAe,CAAC,CAAC,CAAC;AAC7E,SAAgB,aAAa,CAAC,KAAgB;IAC5C,OAAO,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;AAC/C,CAAC"}
@@ -1,9 +0,0 @@
1
- export declare function envFilePath(): string;
2
- export declare function parseEnvFile(content: string): Record<string, string>;
3
- /**
4
- * Load `~/.claude/pinta-cc.env` (if it exists) and merge any missing keys into
5
- * `process.env`. Returns silently on missing file or any read/parse error —
6
- * this is startup-time best-effort, and the adaptor must keep working against
7
- * a v0.1.5 manager that still uses the shell-prefix path.
8
- */
9
- export declare function loadEnvFile(filePath?: string): void;
package/dist/env-file.js DELETED
@@ -1,85 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.envFilePath = envFilePath;
7
- exports.parseEnvFile = parseEnvFile;
8
- exports.loadEnvFile = loadEnvFile;
9
- /**
10
- * Graceful env-file loader.
11
- *
12
- * Pinta Manager v0.1.6+ writes `~/.claude/pinta-cc.env` (KEY=VALUE per line)
13
- * instead of prefixing the hook command with a POSIX shell env prefix
14
- * (`KEY='val' node ...`). The shell-prefix form is broken on native
15
- * Windows shells (cmd.exe / PowerShell). See
16
- * `docs/features/v0.1.6/cc-env-file.md` in pinta-manager for the migration
17
- * story.
18
- *
19
- * Behavior:
20
- * - If `~/.claude/pinta-cc.env` exists, parse it and merge into `process.env`,
21
- * but only for keys that are NOT already set. This preserves any value the
22
- * user explicitly exported in their shell, and also keeps the v0.1.5
23
- * manager's shell-prefix values intact (since those reach us as already-set
24
- * `process.env` keys).
25
- * - If the file is missing (old manager + new adaptor migration window), this
26
- * is a silent no-op — `process.env` is left untouched and the rest of the
27
- * adaptor continues to read what the shell prefix (if any) provided.
28
- *
29
- * Parser format (matches sidecar/src/enroll/codex-plugin.ts `parseEnvFile`):
30
- * - `KEY=VALUE` per line
31
- * - Blank lines and lines starting with `#` are ignored
32
- * - Lines without `=` are skipped (no throw)
33
- * - Surrounding single/double quotes on the value are stripped
34
- * - No escape handling — manager guarantees tokens don't contain `=` or newline
35
- */
36
- const node_fs_1 = __importDefault(require("node:fs"));
37
- const node_os_1 = __importDefault(require("node:os"));
38
- const node_path_1 = __importDefault(require("node:path"));
39
- function envFilePath() {
40
- return node_path_1.default.join(node_os_1.default.homedir(), ".claude", "pinta-cc.env");
41
- }
42
- function parseEnvFile(content) {
43
- const out = {};
44
- for (const raw of content.split("\n")) {
45
- const line = raw.trim();
46
- if (!line || line.startsWith("#"))
47
- continue;
48
- const idx = line.indexOf("=");
49
- if (idx < 0)
50
- continue;
51
- const key = line.slice(0, idx).trim();
52
- let value = line.slice(idx + 1).trim();
53
- if ((value.startsWith('"') && value.endsWith('"')) ||
54
- (value.startsWith("'") && value.endsWith("'"))) {
55
- value = value.slice(1, -1);
56
- }
57
- if (key)
58
- out[key] = value;
59
- }
60
- return out;
61
- }
62
- /**
63
- * Load `~/.claude/pinta-cc.env` (if it exists) and merge any missing keys into
64
- * `process.env`. Returns silently on missing file or any read/parse error —
65
- * this is startup-time best-effort, and the adaptor must keep working against
66
- * a v0.1.5 manager that still uses the shell-prefix path.
67
- */
68
- function loadEnvFile(filePath = envFilePath()) {
69
- let content;
70
- try {
71
- content = node_fs_1.default.readFileSync(filePath, "utf-8");
72
- }
73
- catch {
74
- // File missing (ENOENT) or unreadable — silent no-op so the adaptor keeps
75
- // working against an older manager that injected env via shell prefix.
76
- return;
77
- }
78
- const parsed = parseEnvFile(content);
79
- for (const [key, value] of Object.entries(parsed)) {
80
- if (process.env[key] === undefined) {
81
- process.env[key] = value;
82
- }
83
- }
84
- }
85
- //# sourceMappingURL=env-file.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"env-file.js","sourceRoot":"","sources":["../src/env-file.ts"],"names":[],"mappings":";;;;;AA+BA,kCAEC;AAED,oCAkBC;AAQD,kCAeC;AA5ED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,sDAAyB;AACzB,sDAAyB;AACzB,0DAA6B;AAE7B,SAAgB,WAAW;IACzB,OAAO,mBAAI,CAAC,IAAI,CAAC,iBAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,cAAc,CAAC,CAAC;AAC5D,CAAC;AAED,SAAgB,YAAY,CAAC,OAAe;IAC1C,MAAM,GAAG,GAA2B,EAAE,CAAC;IACvC,KAAK,MAAM,GAAG,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACtC,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;QACxB,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,SAAS;QAC5C,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC9B,IAAI,GAAG,GAAG,CAAC;YAAE,SAAS;QACtB,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;QACtC,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACvC,IACE,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;YAC9C,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAC9C,CAAC;YACD,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC7B,CAAC;QACD,IAAI,GAAG;YAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IAC5B,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;;GAKG;AACH,SAAgB,WAAW,CAAC,WAAmB,WAAW,EAAE;IAC1D,IAAI,OAAe,CAAC;IACpB,IAAI,CAAC;QACH,OAAO,GAAG,iBAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC/C,CAAC;IAAC,MAAM,CAAC;QACP,0EAA0E;QAC1E,uEAAuE;QACvE,OAAO;IACT,CAAC;IACD,MAAM,MAAM,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;IACrC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAClD,IAAI,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE,CAAC;YACnC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QAC3B,CAAC;IACH,CAAC;AACH,CAAC"}
@@ -1,6 +0,0 @@
1
- import type { BaseEvent } from "../core/types.js";
2
- /**
3
- * Catch-all for hooks we explicitly skip (Notification, TaskCreated, TaskCompleted)
4
- * and any future hook event we have not yet routed. Exits 0 silently.
5
- */
6
- export declare function handleDefault(_event: BaseEvent): Promise<number>;
@@ -1,11 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.handleDefault = handleDefault;
4
- /**
5
- * Catch-all for hooks we explicitly skip (Notification, TaskCreated, TaskCompleted)
6
- * and any future hook event we have not yet routed. Exits 0 silently.
7
- */
8
- async function handleDefault(_event) {
9
- return 0;
10
- }
11
- //# sourceMappingURL=default.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"default.js","sourceRoot":"","sources":["../../src/handlers/default.ts"],"names":[],"mappings":";;AAMA,sCAEC;AAND;;;GAGG;AACI,KAAK,UAAU,aAAa,CAAC,MAAiB;IACnD,OAAO,CAAC,CAAC;AACX,CAAC"}
@@ -1,3 +0,0 @@
1
- import type { PintaConfig } from "../core/config.js";
2
- import type { PermissionEvent } from "../core/types.js";
3
- export declare function handlePermission(event: PermissionEvent, config: PintaConfig): Promise<number>;
@@ -1,15 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.handlePermission = handlePermission;
4
- const transport_js_1 = require("../core/transport.js");
5
- const trace_js_1 = require("../core/trace.js");
6
- const otlp_js_1 = require("../core/otlp.js");
7
- async function handlePermission(event, config) {
8
- const transport = new transport_js_1.Transport(config);
9
- await transport.flush();
10
- const traceId = new trace_js_1.TraceManager(config).currentTrace();
11
- const payload = (0, otlp_js_1.buildOtlpPayload)({ event, traceId });
12
- await transport.send(payload);
13
- return 0;
14
- }
15
- //# sourceMappingURL=permission.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"permission.js","sourceRoot":"","sources":["../../src/handlers/permission.ts"],"names":[],"mappings":";;AAMA,4CAWC;AAfD,uDAAiD;AACjD,+CAAgD;AAChD,6CAAmD;AAE5C,KAAK,UAAU,gBAAgB,CACpC,KAAsB,EACtB,MAAmB;IAEnB,MAAM,SAAS,GAAG,IAAI,wBAAS,CAAC,MAAM,CAAC,CAAC;IACxC,MAAM,SAAS,CAAC,KAAK,EAAE,CAAC;IAExB,MAAM,OAAO,GAAG,IAAI,uBAAY,CAAC,MAAM,CAAC,CAAC,YAAY,EAAE,CAAC;IACxD,MAAM,OAAO,GAAG,IAAA,0BAAgB,EAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;IACrD,MAAM,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC9B,OAAO,CAAC,CAAC;AACX,CAAC"}
@@ -1,3 +0,0 @@
1
- import type { PintaConfig } from "../core/config.js";
2
- import type { PostToolUseEvent, PostToolUseFailureEvent } from "../core/types.js";
3
- export declare function handlePostToolUse(event: PostToolUseEvent | PostToolUseFailureEvent, config: PintaConfig): Promise<number>;
@@ -1,15 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.handlePostToolUse = handlePostToolUse;
4
- const transport_js_1 = require("../core/transport.js");
5
- const trace_js_1 = require("../core/trace.js");
6
- const otlp_js_1 = require("../core/otlp.js");
7
- async function handlePostToolUse(event, config) {
8
- const transport = new transport_js_1.Transport(config);
9
- await transport.flush();
10
- const traceId = new trace_js_1.TraceManager(config).currentTrace();
11
- const payload = (0, otlp_js_1.buildOtlpPayload)({ event, traceId });
12
- await transport.send(payload);
13
- return 0;
14
- }
15
- //# sourceMappingURL=post-tool-use.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"post-tool-use.js","sourceRoot":"","sources":["../../src/handlers/post-tool-use.ts"],"names":[],"mappings":";;AAMA,8CAWC;AAfD,uDAAiD;AACjD,+CAAgD;AAChD,6CAAmD;AAE5C,KAAK,UAAU,iBAAiB,CACrC,KAAiD,EACjD,MAAmB;IAEnB,MAAM,SAAS,GAAG,IAAI,wBAAS,CAAC,MAAM,CAAC,CAAC;IACxC,MAAM,SAAS,CAAC,KAAK,EAAE,CAAC;IAExB,MAAM,OAAO,GAAG,IAAI,uBAAY,CAAC,MAAM,CAAC,CAAC,YAAY,EAAE,CAAC;IACxD,MAAM,OAAO,GAAG,IAAA,0BAAgB,EAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;IACrD,MAAM,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC9B,OAAO,CAAC,CAAC;AACX,CAAC"}
@@ -1,3 +0,0 @@
1
- import type { PintaConfig } from "../core/config.js";
2
- import type { PreToolUseEvent } from "../core/types.js";
3
- export declare function handlePreToolUse(event: PreToolUseEvent, config: PintaConfig): Promise<number>;
@@ -1,40 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.handlePreToolUse = handlePreToolUse;
4
- const transport_js_1 = require("../core/transport.js");
5
- const trace_js_1 = require("../core/trace.js");
6
- const otlp_js_1 = require("../core/otlp.js");
7
- const guard_js_1 = require("../core/guard.js");
8
- async function handlePreToolUse(event, config) {
9
- const guardEndpoint = process.env.PINTA_GUARD_ENDPOINT;
10
- const rawToolInput = typeof event.tool_input === 'string'
11
- ? event.tool_input
12
- : JSON.stringify(event.tool_input);
13
- const guard = await (0, guard_js_1.evaluateGuard)({
14
- spanId: event.session_id ?? 'unknown',
15
- toolName: event.tool_name,
16
- toolInput: event.tool_input,
17
- rawTextFields: { toolInput: rawToolInput },
18
- }, guardEndpoint);
19
- const transport = new transport_js_1.Transport(config);
20
- await transport.flush();
21
- const traceId = new trace_js_1.TraceManager(config).currentTrace();
22
- const payload = (0, otlp_js_1.buildOtlpPayload)({ event, traceId, guard });
23
- await transport.send(payload);
24
- if (guard?.decision === 'DENY') {
25
- // Prefer manager-supplied userMessage (carries the "Blocked by Pinta AI"
26
- // brand text + rule). Fall back to raw rule name for older managers, and
27
- // to 'guard_deny' literal if even reason is missing.
28
- const reason = guard.userMessage ?? guard.reason ?? 'guard_deny';
29
- const out = {
30
- hookSpecificOutput: {
31
- hookEventName: 'PreToolUse',
32
- permissionDecision: 'deny',
33
- permissionDecisionReason: reason,
34
- },
35
- };
36
- process.stdout.write(JSON.stringify(out) + '\n');
37
- }
38
- return 0;
39
- }
40
- //# sourceMappingURL=pre-tool-use.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"pre-tool-use.js","sourceRoot":"","sources":["../../src/handlers/pre-tool-use.ts"],"names":[],"mappings":";;AAOA,4CAuCC;AA5CD,uDAAiD;AACjD,+CAAgD;AAChD,6CAAmD;AACnD,+CAAiD;AAE1C,KAAK,UAAU,gBAAgB,CACpC,KAAsB,EACtB,MAAmB;IAEnB,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC;IACvD,MAAM,YAAY,GAAG,OAAO,KAAK,CAAC,UAAU,KAAK,QAAQ;QACvD,CAAC,CAAC,KAAK,CAAC,UAAU;QAClB,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IACrC,MAAM,KAAK,GAAG,MAAM,IAAA,wBAAa,EAC/B;QACE,MAAM,EAAE,KAAK,CAAC,UAAU,IAAI,SAAS;QACrC,QAAQ,EAAE,KAAK,CAAC,SAAS;QACzB,SAAS,EAAE,KAAK,CAAC,UAAU;QAC3B,aAAa,EAAE,EAAE,SAAS,EAAE,YAAY,EAAE;KAC3C,EACD,aAAa,CACd,CAAC;IAEF,MAAM,SAAS,GAAG,IAAI,wBAAS,CAAC,MAAM,CAAC,CAAC;IACxC,MAAM,SAAS,CAAC,KAAK,EAAE,CAAC;IACxB,MAAM,OAAO,GAAG,IAAI,uBAAY,CAAC,MAAM,CAAC,CAAC,YAAY,EAAE,CAAC;IACxD,MAAM,OAAO,GAAG,IAAA,0BAAgB,EAAC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;IAC5D,MAAM,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAE9B,IAAI,KAAK,EAAE,QAAQ,KAAK,MAAM,EAAE,CAAC;QAC/B,yEAAyE;QACzE,yEAAyE;QACzE,qDAAqD;QACrD,MAAM,MAAM,GAAG,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC,MAAM,IAAI,YAAY,CAAC;QACjE,MAAM,GAAG,GAAG;YACV,kBAAkB,EAAE;gBAClB,aAAa,EAAE,YAAY;gBAC3B,kBAAkB,EAAE,MAAe;gBACnC,wBAAwB,EAAE,MAAM;aACjC;SACF,CAAC;QACF,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;IACnD,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC"}
@@ -1,3 +0,0 @@
1
- import type { PintaConfig } from "../core/config.js";
2
- import type { SessionEvent } from "../core/types.js";
3
- export declare function handleSession(event: SessionEvent, config: PintaConfig): Promise<number>;
@@ -1,15 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.handleSession = handleSession;
4
- const transport_js_1 = require("../core/transport.js");
5
- const trace_js_1 = require("../core/trace.js");
6
- const otlp_js_1 = require("../core/otlp.js");
7
- async function handleSession(event, config) {
8
- const transport = new transport_js_1.Transport(config);
9
- await transport.flush();
10
- const traceId = new trace_js_1.TraceManager(config).currentTrace();
11
- const payload = (0, otlp_js_1.buildOtlpPayload)({ event, traceId });
12
- await transport.send(payload);
13
- return 0;
14
- }
15
- //# sourceMappingURL=session.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/handlers/session.ts"],"names":[],"mappings":";;AAMA,sCAWC;AAfD,uDAAiD;AACjD,+CAAgD;AAChD,6CAAmD;AAE5C,KAAK,UAAU,aAAa,CACjC,KAAmB,EACnB,MAAmB;IAEnB,MAAM,SAAS,GAAG,IAAI,wBAAS,CAAC,MAAM,CAAC,CAAC;IACxC,MAAM,SAAS,CAAC,KAAK,EAAE,CAAC;IAExB,MAAM,OAAO,GAAG,IAAI,uBAAY,CAAC,MAAM,CAAC,CAAC,YAAY,EAAE,CAAC;IACxD,MAAM,OAAO,GAAG,IAAA,0BAAgB,EAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;IACrD,MAAM,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC9B,OAAO,CAAC,CAAC;AACX,CAAC"}
@@ -1,3 +0,0 @@
1
- import type { PintaConfig } from "../core/config.js";
2
- import type { StopEvent } from "../core/types.js";
3
- export declare function handleStop(event: StopEvent, config: PintaConfig): Promise<number>;
@@ -1,15 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.handleStop = handleStop;
4
- const transport_js_1 = require("../core/transport.js");
5
- const trace_js_1 = require("../core/trace.js");
6
- const otlp_js_1 = require("../core/otlp.js");
7
- async function handleStop(event, config) {
8
- const transport = new transport_js_1.Transport(config);
9
- await transport.flush();
10
- const traceId = new trace_js_1.TraceManager(config).currentTrace();
11
- const payload = (0, otlp_js_1.buildOtlpPayload)({ event, traceId });
12
- await transport.send(payload);
13
- return 0;
14
- }
15
- //# sourceMappingURL=stop.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"stop.js","sourceRoot":"","sources":["../../src/handlers/stop.ts"],"names":[],"mappings":";;AAMA,gCAWC;AAfD,uDAAiD;AACjD,+CAAgD;AAChD,6CAAmD;AAE5C,KAAK,UAAU,UAAU,CAC9B,KAAgB,EAChB,MAAmB;IAEnB,MAAM,SAAS,GAAG,IAAI,wBAAS,CAAC,MAAM,CAAC,CAAC;IACxC,MAAM,SAAS,CAAC,KAAK,EAAE,CAAC;IAExB,MAAM,OAAO,GAAG,IAAI,uBAAY,CAAC,MAAM,CAAC,CAAC,YAAY,EAAE,CAAC;IACxD,MAAM,OAAO,GAAG,IAAA,0BAAgB,EAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;IACrD,MAAM,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC9B,OAAO,CAAC,CAAC;AACX,CAAC"}
@@ -1,3 +0,0 @@
1
- import type { PintaConfig } from "../core/config.js";
2
- import type { SubagentEvent } from "../core/types.js";
3
- export declare function handleSubagent(event: SubagentEvent, config: PintaConfig): Promise<number>;
@@ -1,15 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.handleSubagent = handleSubagent;
4
- const transport_js_1 = require("../core/transport.js");
5
- const trace_js_1 = require("../core/trace.js");
6
- const otlp_js_1 = require("../core/otlp.js");
7
- async function handleSubagent(event, config) {
8
- const transport = new transport_js_1.Transport(config);
9
- await transport.flush();
10
- const traceId = new trace_js_1.TraceManager(config).currentTrace();
11
- const payload = (0, otlp_js_1.buildOtlpPayload)({ event, traceId });
12
- await transport.send(payload);
13
- return 0;
14
- }
15
- //# sourceMappingURL=subagent.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"subagent.js","sourceRoot":"","sources":["../../src/handlers/subagent.ts"],"names":[],"mappings":";;AAMA,wCAWC;AAfD,uDAAiD;AACjD,+CAAgD;AAChD,6CAAmD;AAE5C,KAAK,UAAU,cAAc,CAClC,KAAoB,EACpB,MAAmB;IAEnB,MAAM,SAAS,GAAG,IAAI,wBAAS,CAAC,MAAM,CAAC,CAAC;IACxC,MAAM,SAAS,CAAC,KAAK,EAAE,CAAC;IAExB,MAAM,OAAO,GAAG,IAAI,uBAAY,CAAC,MAAM,CAAC,CAAC,YAAY,EAAE,CAAC;IACxD,MAAM,OAAO,GAAG,IAAA,0BAAgB,EAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;IACrD,MAAM,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC9B,OAAO,CAAC,CAAC;AACX,CAAC"}
@@ -1,3 +0,0 @@
1
- import type { PintaConfig } from "../core/config.js";
2
- import type { UserPromptSubmitEvent } from "../core/types.js";
3
- export declare function handleUserPrompt(event: UserPromptSubmitEvent, config: PintaConfig): Promise<number>;