@rudderhq/agent-runtime-claude-local 0.1.0-canary.0

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 (64) hide show
  1. package/LICENSE +14 -0
  2. package/dist/cli/format-event.d.ts +2 -0
  3. package/dist/cli/format-event.d.ts.map +1 -0
  4. package/dist/cli/format-event.js +94 -0
  5. package/dist/cli/format-event.js.map +1 -0
  6. package/dist/cli/index.d.ts +2 -0
  7. package/dist/cli/index.d.ts.map +1 -0
  8. package/dist/cli/index.js +2 -0
  9. package/dist/cli/index.js.map +1 -0
  10. package/dist/cli/quota-probe.d.ts +3 -0
  11. package/dist/cli/quota-probe.d.ts.map +1 -0
  12. package/dist/cli/quota-probe.js +106 -0
  13. package/dist/cli/quota-probe.js.map +1 -0
  14. package/dist/index.d.ts +8 -0
  15. package/dist/index.d.ts.map +1 -0
  16. package/dist/index.js +37 -0
  17. package/dist/index.js.map +1 -0
  18. package/dist/server/execute.d.ts +18 -0
  19. package/dist/server/execute.d.ts.map +1 -0
  20. package/dist/server/execute.js +578 -0
  21. package/dist/server/execute.js.map +1 -0
  22. package/dist/server/index.d.ts +8 -0
  23. package/dist/server/index.d.ts.map +1 -0
  24. package/dist/server/index.js +57 -0
  25. package/dist/server/index.js.map +1 -0
  26. package/dist/server/parse.d.ts +22 -0
  27. package/dist/server/parse.d.ts.map +1 -0
  28. package/dist/server/parse.js +158 -0
  29. package/dist/server/parse.js.map +1 -0
  30. package/dist/server/quota.d.ts +20 -0
  31. package/dist/server/quota.d.ts.map +1 -0
  32. package/dist/server/quota.js +477 -0
  33. package/dist/server/quota.js.map +1 -0
  34. package/dist/server/skills.d.ts +8 -0
  35. package/dist/server/skills.d.ts.map +1 -0
  36. package/dist/server/skills.js +102 -0
  37. package/dist/server/skills.js.map +1 -0
  38. package/dist/server/test.d.ts +3 -0
  39. package/dist/server/test.d.ts.map +1 -0
  40. package/dist/server/test.js +201 -0
  41. package/dist/server/test.js.map +1 -0
  42. package/dist/ui/build-config.d.ts +3 -0
  43. package/dist/ui/build-config.d.ts.map +1 -0
  44. package/dist/ui/build-config.js +115 -0
  45. package/dist/ui/build-config.js.map +1 -0
  46. package/dist/ui/index.d.ts +3 -0
  47. package/dist/ui/index.d.ts.map +1 -0
  48. package/dist/ui/index.js +3 -0
  49. package/dist/ui/index.js.map +1 -0
  50. package/dist/ui/parse-stdout.d.ts +3 -0
  51. package/dist/ui/parse-stdout.d.ts.map +1 -0
  52. package/dist/ui/parse-stdout.js +149 -0
  53. package/dist/ui/parse-stdout.js.map +1 -0
  54. package/package.json +63 -0
  55. package/skills/para-memory-files/SKILL.md +114 -0
  56. package/skills/para-memory-files/references/schemas.md +35 -0
  57. package/skills/rudder/SKILL.md +265 -0
  58. package/skills/rudder/references/api-reference.md +253 -0
  59. package/skills/rudder/references/cli-reference.md +67 -0
  60. package/skills/rudder/references/organization-skills.md +155 -0
  61. package/skills/rudder-create-agent/SKILL.md +166 -0
  62. package/skills/rudder-create-agent/references/api-reference.md +172 -0
  63. package/skills/rudder-create-agent/references/cli-reference.md +126 -0
  64. package/skills/rudder-create-plugin/SKILL.md +103 -0
@@ -0,0 +1,201 @@
1
+ import { asString, asBoolean, asNumber, asStringArray, parseObject, ensureAbsoluteDirectory, ensureCommandResolvable, ensurePathInEnv, runChildProcess, } from "@rudderhq/agent-runtime-utils/server-utils";
2
+ import path from "node:path";
3
+ import { detectClaudeLoginRequired, parseClaudeStreamJson } from "./parse.js";
4
+ function summarizeStatus(checks) {
5
+ if (checks.some((check) => check.level === "error"))
6
+ return "fail";
7
+ if (checks.some((check) => check.level === "warn"))
8
+ return "warn";
9
+ return "pass";
10
+ }
11
+ function isNonEmpty(value) {
12
+ return typeof value === "string" && value.trim().length > 0;
13
+ }
14
+ function firstNonEmptyLine(text) {
15
+ return (text
16
+ .split(/\r?\n/)
17
+ .map((line) => line.trim())
18
+ .find(Boolean) ?? "");
19
+ }
20
+ function commandLooksLike(command, expected) {
21
+ const base = path.basename(command).toLowerCase();
22
+ return base === expected || base === `${expected}.cmd` || base === `${expected}.exe`;
23
+ }
24
+ function summarizeProbeDetail(stdout, stderr) {
25
+ const raw = firstNonEmptyLine(stderr) || firstNonEmptyLine(stdout);
26
+ if (!raw)
27
+ return null;
28
+ const clean = raw.replace(/\s+/g, " ").trim();
29
+ const max = 240;
30
+ return clean.length > max ? `${clean.slice(0, max - 1)}…` : clean;
31
+ }
32
+ export async function testEnvironment(ctx) {
33
+ const checks = [];
34
+ const config = parseObject(ctx.config);
35
+ const command = asString(config.command, "claude");
36
+ const cwd = asString(config.cwd, process.cwd());
37
+ try {
38
+ await ensureAbsoluteDirectory(cwd, { createIfMissing: true });
39
+ checks.push({
40
+ code: "claude_cwd_valid",
41
+ level: "info",
42
+ message: `Working directory is valid: ${cwd}`,
43
+ });
44
+ }
45
+ catch (err) {
46
+ checks.push({
47
+ code: "claude_cwd_invalid",
48
+ level: "error",
49
+ message: err instanceof Error ? err.message : "Invalid working directory",
50
+ detail: cwd,
51
+ });
52
+ }
53
+ const envConfig = parseObject(config.env);
54
+ const env = {};
55
+ for (const [key, value] of Object.entries(envConfig)) {
56
+ if (typeof value === "string")
57
+ env[key] = value;
58
+ }
59
+ const runtimeEnv = ensurePathInEnv({ ...process.env, ...env });
60
+ try {
61
+ await ensureCommandResolvable(command, cwd, runtimeEnv);
62
+ checks.push({
63
+ code: "claude_command_resolvable",
64
+ level: "info",
65
+ message: `Command is executable: ${command}`,
66
+ });
67
+ }
68
+ catch (err) {
69
+ checks.push({
70
+ code: "claude_command_unresolvable",
71
+ level: "error",
72
+ message: err instanceof Error ? err.message : "Command is not executable",
73
+ detail: command,
74
+ });
75
+ }
76
+ const configApiKey = env.ANTHROPIC_API_KEY;
77
+ const hostApiKey = process.env.ANTHROPIC_API_KEY;
78
+ if (isNonEmpty(configApiKey) || isNonEmpty(hostApiKey)) {
79
+ const source = isNonEmpty(configApiKey) ? "adapter config env" : "server environment";
80
+ checks.push({
81
+ code: "claude_anthropic_api_key_overrides_subscription",
82
+ level: "warn",
83
+ message: "ANTHROPIC_API_KEY is set. Claude will use API-key auth instead of subscription credentials.",
84
+ detail: `Detected in ${source}.`,
85
+ hint: "Unset ANTHROPIC_API_KEY if you want subscription-based Claude login behavior.",
86
+ });
87
+ }
88
+ else {
89
+ checks.push({
90
+ code: "claude_subscription_mode_possible",
91
+ level: "info",
92
+ message: "ANTHROPIC_API_KEY is not set; subscription-based auth can be used if Claude is logged in.",
93
+ });
94
+ }
95
+ const canRunProbe = checks.every((check) => check.code !== "claude_cwd_invalid" && check.code !== "claude_command_unresolvable");
96
+ if (canRunProbe) {
97
+ if (!commandLooksLike(command, "claude")) {
98
+ checks.push({
99
+ code: "claude_hello_probe_skipped_custom_command",
100
+ level: "info",
101
+ message: "Skipped hello probe because command is not `claude`.",
102
+ detail: command,
103
+ hint: "Use the `claude` CLI command to run the automatic login and installation probe.",
104
+ });
105
+ }
106
+ else {
107
+ const model = asString(config.model, "").trim();
108
+ const effort = asString(config.effort, "").trim();
109
+ const chrome = asBoolean(config.chrome, false);
110
+ const maxTurns = asNumber(config.maxTurnsPerRun, 0);
111
+ const dangerouslySkipPermissions = asBoolean(config.dangerouslySkipPermissions, false);
112
+ const extraArgs = (() => {
113
+ const fromExtraArgs = asStringArray(config.extraArgs);
114
+ if (fromExtraArgs.length > 0)
115
+ return fromExtraArgs;
116
+ return asStringArray(config.args);
117
+ })();
118
+ const args = ["--print", "-", "--output-format", "stream-json", "--verbose"];
119
+ if (dangerouslySkipPermissions)
120
+ args.push("--dangerously-skip-permissions");
121
+ if (chrome)
122
+ args.push("--chrome");
123
+ if (model)
124
+ args.push("--model", model);
125
+ if (effort)
126
+ args.push("--effort", effort);
127
+ if (maxTurns > 0)
128
+ args.push("--max-turns", String(maxTurns));
129
+ if (extraArgs.length > 0)
130
+ args.push(...extraArgs);
131
+ const probe = await runChildProcess(`claude-envtest-${Date.now()}-${Math.random().toString(16).slice(2)}`, command, args, {
132
+ cwd,
133
+ env,
134
+ timeoutSec: 45,
135
+ graceSec: 5,
136
+ stdin: "Respond with hello.",
137
+ onLog: async () => { },
138
+ });
139
+ const parsedStream = parseClaudeStreamJson(probe.stdout);
140
+ const parsed = parsedStream.resultJson;
141
+ const loginMeta = detectClaudeLoginRequired({
142
+ parsed,
143
+ stdout: probe.stdout,
144
+ stderr: probe.stderr,
145
+ });
146
+ const detail = summarizeProbeDetail(probe.stdout, probe.stderr);
147
+ if (probe.timedOut) {
148
+ checks.push({
149
+ code: "claude_hello_probe_timed_out",
150
+ level: "warn",
151
+ message: "Claude hello probe timed out.",
152
+ hint: "Retry the probe. If this persists, verify Claude can run `Respond with hello` from this directory manually.",
153
+ });
154
+ }
155
+ else if (loginMeta.requiresLogin) {
156
+ checks.push({
157
+ code: "claude_hello_probe_auth_required",
158
+ level: "warn",
159
+ message: "Claude CLI is installed, but login is required.",
160
+ ...(detail ? { detail } : {}),
161
+ hint: loginMeta.loginUrl
162
+ ? `Run \`claude login\` and complete sign-in at ${loginMeta.loginUrl}, then retry.`
163
+ : "Run `claude login` in this environment, then retry the probe.",
164
+ });
165
+ }
166
+ else if ((probe.exitCode ?? 1) === 0) {
167
+ const summary = parsedStream.summary.trim();
168
+ const hasHello = /\bhello\b/i.test(summary);
169
+ checks.push({
170
+ code: hasHello ? "claude_hello_probe_passed" : "claude_hello_probe_unexpected_output",
171
+ level: hasHello ? "info" : "warn",
172
+ message: hasHello
173
+ ? "Claude hello probe succeeded."
174
+ : "Claude probe ran but did not return `hello` as expected.",
175
+ ...(summary ? { detail: summary.replace(/\s+/g, " ").trim().slice(0, 240) } : {}),
176
+ ...(hasHello
177
+ ? {}
178
+ : {
179
+ hint: "Try the probe manually (`claude --print - --output-format stream-json --verbose`) and prompt `Respond with hello`.",
180
+ }),
181
+ });
182
+ }
183
+ else {
184
+ checks.push({
185
+ code: "claude_hello_probe_failed",
186
+ level: "error",
187
+ message: "Claude hello probe failed.",
188
+ ...(detail ? { detail } : {}),
189
+ hint: "Run `claude --print - --output-format stream-json --verbose` manually in this directory and prompt `Respond with hello` to debug.",
190
+ });
191
+ }
192
+ }
193
+ }
194
+ return {
195
+ agentRuntimeType: ctx.agentRuntimeType,
196
+ status: summarizeStatus(checks),
197
+ checks,
198
+ testedAt: new Date().toISOString(),
199
+ };
200
+ }
201
+ //# sourceMappingURL=test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test.js","sourceRoot":"","sources":["../../src/server/test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { CreateConfigValues } from "@rudderhq/agent-runtime-utils";
2
+ export declare function buildClaudeLocalConfig(v: CreateConfigValues): Record<string, unknown>;
3
+ //# sourceMappingURL=build-config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build-config.d.ts","sourceRoot":"","sources":["../../src/ui/build-config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAgExE,wBAAgB,sBAAsB,CAAC,CAAC,EAAE,kBAAkB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAoCrF"}
@@ -0,0 +1,115 @@
1
+ function parseCommaArgs(value) {
2
+ return value
3
+ .split(",")
4
+ .map((item) => item.trim())
5
+ .filter(Boolean);
6
+ }
7
+ function parseEnvVars(text) {
8
+ const env = {};
9
+ for (const line of text.split(/\r?\n/)) {
10
+ const trimmed = line.trim();
11
+ if (!trimmed || trimmed.startsWith("#"))
12
+ continue;
13
+ const eq = trimmed.indexOf("=");
14
+ if (eq <= 0)
15
+ continue;
16
+ const key = trimmed.slice(0, eq).trim();
17
+ const value = trimmed.slice(eq + 1);
18
+ if (!/^[A-Za-z_][A-Za-z0-9_]*$/.test(key))
19
+ continue;
20
+ env[key] = value;
21
+ }
22
+ return env;
23
+ }
24
+ function parseEnvBindings(bindings) {
25
+ if (typeof bindings !== "object" || bindings === null || Array.isArray(bindings))
26
+ return {};
27
+ const env = {};
28
+ for (const [key, raw] of Object.entries(bindings)) {
29
+ if (!/^[A-Za-z_][A-Za-z0-9_]*$/.test(key))
30
+ continue;
31
+ if (typeof raw === "string") {
32
+ env[key] = { type: "plain", value: raw };
33
+ continue;
34
+ }
35
+ if (typeof raw !== "object" || raw === null || Array.isArray(raw))
36
+ continue;
37
+ const rec = raw;
38
+ if (rec.type === "plain" && typeof rec.value === "string") {
39
+ env[key] = { type: "plain", value: rec.value };
40
+ continue;
41
+ }
42
+ if (rec.type === "secret_ref" && typeof rec.secretId === "string") {
43
+ env[key] = {
44
+ type: "secret_ref",
45
+ secretId: rec.secretId,
46
+ ...(typeof rec.version === "number" || rec.version === "latest"
47
+ ? { version: rec.version }
48
+ : {}),
49
+ };
50
+ }
51
+ }
52
+ return env;
53
+ }
54
+ function parseJsonObject(text) {
55
+ const trimmed = text.trim();
56
+ if (!trimmed)
57
+ return null;
58
+ try {
59
+ const parsed = JSON.parse(trimmed);
60
+ if (typeof parsed !== "object" || parsed === null || Array.isArray(parsed))
61
+ return null;
62
+ return parsed;
63
+ }
64
+ catch {
65
+ return null;
66
+ }
67
+ }
68
+ export function buildClaudeLocalConfig(v) {
69
+ const ac = {};
70
+ if (v.cwd)
71
+ ac.cwd = v.cwd;
72
+ if (v.instructionsFilePath)
73
+ ac.instructionsFilePath = v.instructionsFilePath;
74
+ if (v.promptTemplate)
75
+ ac.promptTemplate = v.promptTemplate;
76
+ if (v.bootstrapPrompt)
77
+ ac.bootstrapPromptTemplate = v.bootstrapPrompt;
78
+ if (v.model)
79
+ ac.model = v.model;
80
+ if (v.thinkingEffort)
81
+ ac.effort = v.thinkingEffort;
82
+ if (v.chrome)
83
+ ac.chrome = true;
84
+ ac.timeoutSec = 0;
85
+ ac.graceSec = 15;
86
+ const env = parseEnvBindings(v.envBindings);
87
+ const legacy = parseEnvVars(v.envVars);
88
+ for (const [key, value] of Object.entries(legacy)) {
89
+ if (!Object.prototype.hasOwnProperty.call(env, key)) {
90
+ env[key] = { type: "plain", value };
91
+ }
92
+ }
93
+ if (Object.keys(env).length > 0)
94
+ ac.env = env;
95
+ ac.maxTurnsPerRun = v.maxTurnsPerRun;
96
+ ac.dangerouslySkipPermissions = v.dangerouslySkipPermissions;
97
+ if (v.workspaceStrategyType === "git_worktree") {
98
+ ac.workspaceStrategy = {
99
+ type: "git_worktree",
100
+ ...(v.workspaceBaseRef ? { baseRef: v.workspaceBaseRef } : {}),
101
+ ...(v.workspaceBranchTemplate ? { branchTemplate: v.workspaceBranchTemplate } : {}),
102
+ ...(v.worktreeParentDir ? { worktreeParentDir: v.worktreeParentDir } : {}),
103
+ };
104
+ }
105
+ const runtimeServices = parseJsonObject(v.runtimeServicesJson ?? "");
106
+ if (runtimeServices && Array.isArray(runtimeServices.services)) {
107
+ ac.workspaceRuntime = runtimeServices;
108
+ }
109
+ if (v.command)
110
+ ac.command = v.command;
111
+ if (v.extraArgs)
112
+ ac.extraArgs = parseCommaArgs(v.extraArgs);
113
+ return ac;
114
+ }
115
+ //# sourceMappingURL=build-config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build-config.js","sourceRoot":"","sources":["../../src/ui/build-config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export { parseClaudeStdoutLine } from "./parse-stdout.js";
2
+ export { buildClaudeLocalConfig } from "./build-config.js";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ui/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { parseClaudeStdoutLine } from "./parse-stdout.js";
2
+ export { buildClaudeLocalConfig } from "./build-config.js";
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ui/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { TranscriptEntry } from "@rudderhq/agent-runtime-utils";
2
+ export declare function parseClaudeStdoutLine(line: string, ts: string): TranscriptEntry[];
3
+ //# sourceMappingURL=parse-stdout.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parse-stdout.d.ts","sourceRoot":"","sources":["../../src/ui/parse-stdout.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAoCrE,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,eAAe,EAAE,CA2GjF"}
@@ -0,0 +1,149 @@
1
+ function asRecord(value) {
2
+ if (typeof value !== "object" || value === null || Array.isArray(value))
3
+ return null;
4
+ return value;
5
+ }
6
+ function asNumber(value) {
7
+ return typeof value === "number" && Number.isFinite(value) ? value : 0;
8
+ }
9
+ function errorText(value) {
10
+ if (typeof value === "string")
11
+ return value;
12
+ const rec = asRecord(value);
13
+ if (!rec)
14
+ return "";
15
+ const msg = (typeof rec.message === "string" && rec.message) ||
16
+ (typeof rec.error === "string" && rec.error) ||
17
+ (typeof rec.code === "string" && rec.code) ||
18
+ "";
19
+ if (msg)
20
+ return msg;
21
+ try {
22
+ return JSON.stringify(rec);
23
+ }
24
+ catch {
25
+ return "";
26
+ }
27
+ }
28
+ function safeJsonParse(text) {
29
+ try {
30
+ return JSON.parse(text);
31
+ }
32
+ catch {
33
+ return null;
34
+ }
35
+ }
36
+ export function parseClaudeStdoutLine(line, ts) {
37
+ const parsed = asRecord(safeJsonParse(line));
38
+ if (!parsed) {
39
+ return [{ kind: "stdout", ts, text: line }];
40
+ }
41
+ const type = typeof parsed.type === "string" ? parsed.type : "";
42
+ if (type === "system" && parsed.subtype === "init") {
43
+ return [
44
+ {
45
+ kind: "init",
46
+ ts,
47
+ model: typeof parsed.model === "string" ? parsed.model : "unknown",
48
+ sessionId: typeof parsed.session_id === "string" ? parsed.session_id : "",
49
+ },
50
+ ];
51
+ }
52
+ if (type === "assistant") {
53
+ const message = asRecord(parsed.message) ?? {};
54
+ const content = Array.isArray(message.content) ? message.content : [];
55
+ const entries = [];
56
+ for (const blockRaw of content) {
57
+ const block = asRecord(blockRaw);
58
+ if (!block)
59
+ continue;
60
+ const blockType = typeof block.type === "string" ? block.type : "";
61
+ if (blockType === "text") {
62
+ const text = typeof block.text === "string" ? block.text : "";
63
+ if (text)
64
+ entries.push({ kind: "assistant", ts, text });
65
+ }
66
+ else if (blockType === "thinking") {
67
+ const text = typeof block.thinking === "string" ? block.thinking : "";
68
+ if (text)
69
+ entries.push({ kind: "thinking", ts, text });
70
+ }
71
+ else if (blockType === "tool_use") {
72
+ entries.push({
73
+ kind: "tool_call",
74
+ ts,
75
+ name: typeof block.name === "string" ? block.name : "unknown",
76
+ toolUseId: typeof block.id === "string"
77
+ ? block.id
78
+ : typeof block.tool_use_id === "string"
79
+ ? block.tool_use_id
80
+ : undefined,
81
+ input: block.input ?? {},
82
+ });
83
+ }
84
+ }
85
+ return entries.length > 0 ? entries : [{ kind: "stdout", ts, text: line }];
86
+ }
87
+ if (type === "user") {
88
+ const message = asRecord(parsed.message) ?? {};
89
+ const content = Array.isArray(message.content) ? message.content : [];
90
+ const entries = [];
91
+ for (const blockRaw of content) {
92
+ const block = asRecord(blockRaw);
93
+ if (!block)
94
+ continue;
95
+ const blockType = typeof block.type === "string" ? block.type : "";
96
+ if (blockType === "text") {
97
+ const text = typeof block.text === "string" ? block.text : "";
98
+ if (text)
99
+ entries.push({ kind: "user", ts, text });
100
+ }
101
+ else if (blockType === "tool_result") {
102
+ const toolUseId = typeof block.tool_use_id === "string" ? block.tool_use_id : "";
103
+ const isError = block.is_error === true;
104
+ let text = "";
105
+ if (typeof block.content === "string") {
106
+ text = block.content;
107
+ }
108
+ else if (Array.isArray(block.content)) {
109
+ const parts = [];
110
+ for (const part of block.content) {
111
+ const p = asRecord(part);
112
+ if (p && typeof p.text === "string")
113
+ parts.push(p.text);
114
+ }
115
+ text = parts.join("\n");
116
+ }
117
+ entries.push({ kind: "tool_result", ts, toolUseId, content: text, isError });
118
+ }
119
+ }
120
+ if (entries.length > 0)
121
+ return entries;
122
+ // fall through to stdout for user messages without recognized blocks
123
+ }
124
+ if (type === "result") {
125
+ const usage = asRecord(parsed.usage) ?? {};
126
+ const inputTokens = asNumber(usage.input_tokens);
127
+ const outputTokens = asNumber(usage.output_tokens);
128
+ const cachedTokens = asNumber(usage.cache_read_input_tokens);
129
+ const costUsd = asNumber(parsed.total_cost_usd);
130
+ const subtype = typeof parsed.subtype === "string" ? parsed.subtype : "";
131
+ const isError = parsed.is_error === true;
132
+ const errors = Array.isArray(parsed.errors) ? parsed.errors.map(errorText).filter(Boolean) : [];
133
+ const text = typeof parsed.result === "string" ? parsed.result : "";
134
+ return [{
135
+ kind: "result",
136
+ ts,
137
+ text,
138
+ inputTokens,
139
+ outputTokens,
140
+ cachedTokens,
141
+ costUsd,
142
+ subtype,
143
+ isError,
144
+ errors,
145
+ }];
146
+ }
147
+ return [{ kind: "stdout", ts, text: line }];
148
+ }
149
+ //# sourceMappingURL=parse-stdout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parse-stdout.js","sourceRoot":"","sources":["../../src/ui/parse-stdout.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,63 @@
1
+ {
2
+ "name": "@rudderhq/agent-runtime-claude-local",
3
+ "version": "0.1.0-canary.0",
4
+ "license": "SEE LICENSE IN LICENSE",
5
+ "homepage": "https://github.com/Undertone0809/rudder",
6
+ "bugs": {
7
+ "url": "https://github.com/Undertone0809/rudder/issues"
8
+ },
9
+ "repository": {
10
+ "type": "git",
11
+ "url": "https://github.com/Undertone0809/rudder",
12
+ "directory": "packages/agent-runtimes/claude-local"
13
+ },
14
+ "type": "module",
15
+ "exports": {
16
+ ".": "./src/index.ts",
17
+ "./server": "./src/server/index.ts",
18
+ "./ui": "./src/ui/index.ts",
19
+ "./cli": "./src/cli/index.ts"
20
+ },
21
+ "publishConfig": {
22
+ "access": "public",
23
+ "exports": {
24
+ ".": {
25
+ "types": "./dist/index.d.ts",
26
+ "import": "./dist/index.js"
27
+ },
28
+ "./server": {
29
+ "types": "./dist/server/index.d.ts",
30
+ "import": "./dist/server/index.js"
31
+ },
32
+ "./ui": {
33
+ "types": "./dist/ui/index.d.ts",
34
+ "import": "./dist/ui/index.js"
35
+ },
36
+ "./cli": {
37
+ "types": "./dist/cli/index.d.ts",
38
+ "import": "./dist/cli/index.js"
39
+ }
40
+ },
41
+ "main": "./dist/index.js",
42
+ "types": "./dist/index.d.ts"
43
+ },
44
+ "files": [
45
+ "dist",
46
+ "skills"
47
+ ],
48
+ "scripts": {
49
+ "build": "tsc",
50
+ "clean": "rm -rf dist",
51
+ "typecheck": "tsc --noEmit",
52
+ "probe:quota": "pnpm exec tsx src/cli/quota-probe.ts --json",
53
+ "probe:quota:raw": "pnpm exec tsx src/cli/quota-probe.ts --json --raw-cli"
54
+ },
55
+ "dependencies": {
56
+ "@rudderhq/agent-runtime-utils": "0.1.0-canary.0",
57
+ "picocolors": "^1.1.1"
58
+ },
59
+ "devDependencies": {
60
+ "@types/node": "^24.12.0",
61
+ "typescript": "^5.9.3"
62
+ }
63
+ }