@dharta/cli 0.6.77

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 (259) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +167 -0
  3. package/dist/agent.d.ts +17 -0
  4. package/dist/agent.js +134 -0
  5. package/dist/agent.js.map +1 -0
  6. package/dist/api-error.d.ts +3 -0
  7. package/dist/api-error.js +80 -0
  8. package/dist/api-error.js.map +1 -0
  9. package/dist/browser.d.ts +1 -0
  10. package/dist/browser.js +19 -0
  11. package/dist/browser.js.map +1 -0
  12. package/dist/cli.d.ts +5 -0
  13. package/dist/cli.js +1978 -0
  14. package/dist/cli.js.map +1 -0
  15. package/dist/commands/agents.d.ts +131 -0
  16. package/dist/commands/agents.js +439 -0
  17. package/dist/commands/agents.js.map +1 -0
  18. package/dist/commands/analytics.d.ts +25 -0
  19. package/dist/commands/analytics.js +166 -0
  20. package/dist/commands/analytics.js.map +1 -0
  21. package/dist/commands/api.d.ts +19 -0
  22. package/dist/commands/api.js +278 -0
  23. package/dist/commands/api.js.map +1 -0
  24. package/dist/commands/appearance.d.ts +19 -0
  25. package/dist/commands/appearance.js +63 -0
  26. package/dist/commands/appearance.js.map +1 -0
  27. package/dist/commands/artifact.d.ts +33 -0
  28. package/dist/commands/artifact.js +235 -0
  29. package/dist/commands/artifact.js.map +1 -0
  30. package/dist/commands/audit-log.d.ts +32 -0
  31. package/dist/commands/audit-log.js +102 -0
  32. package/dist/commands/audit-log.js.map +1 -0
  33. package/dist/commands/auth.d.ts +47 -0
  34. package/dist/commands/auth.js +117 -0
  35. package/dist/commands/auth.js.map +1 -0
  36. package/dist/commands/caps.d.ts +82 -0
  37. package/dist/commands/caps.js +213 -0
  38. package/dist/commands/caps.js.map +1 -0
  39. package/dist/commands/create.d.ts +22 -0
  40. package/dist/commands/create.js +76 -0
  41. package/dist/commands/create.js.map +1 -0
  42. package/dist/commands/deploy.d.ts +45 -0
  43. package/dist/commands/deploy.js +892 -0
  44. package/dist/commands/deploy.js.map +1 -0
  45. package/dist/commands/dev.d.ts +33 -0
  46. package/dist/commands/dev.js +655 -0
  47. package/dist/commands/dev.js.map +1 -0
  48. package/dist/commands/directories.d.ts +60 -0
  49. package/dist/commands/directories.js +83 -0
  50. package/dist/commands/directories.js.map +1 -0
  51. package/dist/commands/doctor.d.ts +13 -0
  52. package/dist/commands/doctor.js +123 -0
  53. package/dist/commands/doctor.js.map +1 -0
  54. package/dist/commands/embed-keys.d.ts +61 -0
  55. package/dist/commands/embed-keys.js +165 -0
  56. package/dist/commands/embed-keys.js.map +1 -0
  57. package/dist/commands/env.d.ts +59 -0
  58. package/dist/commands/env.js +300 -0
  59. package/dist/commands/env.js.map +1 -0
  60. package/dist/commands/files.d.ts +14 -0
  61. package/dist/commands/files.js +84 -0
  62. package/dist/commands/files.js.map +1 -0
  63. package/dist/commands/git-credential.d.ts +1 -0
  64. package/dist/commands/git-credential.js +70 -0
  65. package/dist/commands/git-credential.js.map +1 -0
  66. package/dist/commands/kartas.d.ts +101 -0
  67. package/dist/commands/kartas.js +289 -0
  68. package/dist/commands/kartas.js.map +1 -0
  69. package/dist/commands/keys.d.ts +33 -0
  70. package/dist/commands/keys.js +141 -0
  71. package/dist/commands/keys.js.map +1 -0
  72. package/dist/commands/login.d.ts +22 -0
  73. package/dist/commands/login.js +78 -0
  74. package/dist/commands/login.js.map +1 -0
  75. package/dist/commands/logs.d.ts +14 -0
  76. package/dist/commands/logs.js +89 -0
  77. package/dist/commands/logs.js.map +1 -0
  78. package/dist/commands/members.d.ts +32 -0
  79. package/dist/commands/members.js +77 -0
  80. package/dist/commands/members.js.map +1 -0
  81. package/dist/commands/model-keys.d.ts +22 -0
  82. package/dist/commands/model-keys.js +222 -0
  83. package/dist/commands/model-keys.js.map +1 -0
  84. package/dist/commands/open.d.ts +29 -0
  85. package/dist/commands/open.js +119 -0
  86. package/dist/commands/open.js.map +1 -0
  87. package/dist/commands/parity.d.ts +15 -0
  88. package/dist/commands/parity.js +73 -0
  89. package/dist/commands/parity.js.map +1 -0
  90. package/dist/commands/rollback.d.ts +21 -0
  91. package/dist/commands/rollback.js +26 -0
  92. package/dist/commands/rollback.js.map +1 -0
  93. package/dist/commands/schedules.d.ts +52 -0
  94. package/dist/commands/schedules.js +231 -0
  95. package/dist/commands/schedules.js.map +1 -0
  96. package/dist/commands/scopes.d.ts +3 -0
  97. package/dist/commands/scopes.js +21 -0
  98. package/dist/commands/scopes.js.map +1 -0
  99. package/dist/commands/sessions.d.ts +53 -0
  100. package/dist/commands/sessions.js +142 -0
  101. package/dist/commands/sessions.js.map +1 -0
  102. package/dist/commands/setup.d.ts +28 -0
  103. package/dist/commands/setup.js +949 -0
  104. package/dist/commands/setup.js.map +1 -0
  105. package/dist/commands/status.d.ts +19 -0
  106. package/dist/commands/status.js +63 -0
  107. package/dist/commands/status.js.map +1 -0
  108. package/dist/commands/update.d.ts +14 -0
  109. package/dist/commands/update.js +120 -0
  110. package/dist/commands/update.js.map +1 -0
  111. package/dist/commands/usage.d.ts +3 -0
  112. package/dist/commands/usage.js +37 -0
  113. package/dist/commands/usage.js.map +1 -0
  114. package/dist/commands/webhooks.d.ts +47 -0
  115. package/dist/commands/webhooks.js +156 -0
  116. package/dist/commands/webhooks.js.map +1 -0
  117. package/dist/commands/whoami.d.ts +7 -0
  118. package/dist/commands/whoami.js +17 -0
  119. package/dist/commands/whoami.js.map +1 -0
  120. package/dist/completions.d.ts +13 -0
  121. package/dist/completions.js +120 -0
  122. package/dist/completions.js.map +1 -0
  123. package/dist/config.d.ts +20 -0
  124. package/dist/config.js +98 -0
  125. package/dist/config.js.map +1 -0
  126. package/dist/context.d.ts +14 -0
  127. package/dist/context.js +38 -0
  128. package/dist/context.js.map +1 -0
  129. package/dist/device-flow.d.ts +9 -0
  130. package/dist/device-flow.js +127 -0
  131. package/dist/device-flow.js.map +1 -0
  132. package/dist/harness-preflight.d.ts +24 -0
  133. package/dist/harness-preflight.js +252 -0
  134. package/dist/harness-preflight.js.map +1 -0
  135. package/dist/harnesses.d.ts +11 -0
  136. package/dist/harnesses.js +112 -0
  137. package/dist/harnesses.js.map +1 -0
  138. package/dist/index.d.ts +3 -0
  139. package/dist/index.js +3 -0
  140. package/dist/index.js.map +1 -0
  141. package/dist/login-offer.d.ts +9 -0
  142. package/dist/login-offer.js +36 -0
  143. package/dist/login-offer.js.map +1 -0
  144. package/dist/manifest.d.ts +15 -0
  145. package/dist/manifest.js +142 -0
  146. package/dist/manifest.js.map +1 -0
  147. package/dist/money.d.ts +1 -0
  148. package/dist/money.js +16 -0
  149. package/dist/money.js.map +1 -0
  150. package/dist/output.d.ts +2 -0
  151. package/dist/output.js +20 -0
  152. package/dist/output.js.map +1 -0
  153. package/dist/runtime.d.ts +19 -0
  154. package/dist/runtime.js +95 -0
  155. package/dist/runtime.js.map +1 -0
  156. package/dist/scaffold.d.ts +16 -0
  157. package/dist/scaffold.js +74 -0
  158. package/dist/scaffold.js.map +1 -0
  159. package/dist/setup-scan.d.ts +21 -0
  160. package/dist/setup-scan.js +127 -0
  161. package/dist/setup-scan.js.map +1 -0
  162. package/dist/templates.d.ts +14 -0
  163. package/dist/templates.js +65 -0
  164. package/dist/templates.js.map +1 -0
  165. package/dist/validators.d.ts +10 -0
  166. package/dist/validators.js +116 -0
  167. package/dist/validators.js.map +1 -0
  168. package/dist/version-check.d.ts +25 -0
  169. package/dist/version-check.js +68 -0
  170. package/dist/version-check.js.map +1 -0
  171. package/node_modules/@dharta/sdk/LICENSE +21 -0
  172. package/node_modules/@dharta/sdk/README.md +87 -0
  173. package/node_modules/@dharta/sdk/dist/errors.d.ts +20 -0
  174. package/node_modules/@dharta/sdk/dist/errors.d.ts.map +1 -0
  175. package/node_modules/@dharta/sdk/dist/errors.js +51 -0
  176. package/node_modules/@dharta/sdk/dist/errors.js.map +1 -0
  177. package/node_modules/@dharta/sdk/dist/http.d.ts +26 -0
  178. package/node_modules/@dharta/sdk/dist/http.d.ts.map +1 -0
  179. package/node_modules/@dharta/sdk/dist/http.js +136 -0
  180. package/node_modules/@dharta/sdk/dist/http.js.map +1 -0
  181. package/node_modules/@dharta/sdk/dist/index.d.ts +15 -0
  182. package/node_modules/@dharta/sdk/dist/index.d.ts.map +1 -0
  183. package/node_modules/@dharta/sdk/dist/index.js +21 -0
  184. package/node_modules/@dharta/sdk/dist/index.js.map +1 -0
  185. package/node_modules/@dharta/sdk/dist/resources.d.ts +48 -0
  186. package/node_modules/@dharta/sdk/dist/resources.d.ts.map +1 -0
  187. package/node_modules/@dharta/sdk/dist/resources.js +150 -0
  188. package/node_modules/@dharta/sdk/dist/resources.js.map +1 -0
  189. package/node_modules/@dharta/sdk/dist/types.d.ts +94 -0
  190. package/node_modules/@dharta/sdk/dist/types.d.ts.map +1 -0
  191. package/node_modules/@dharta/sdk/dist/types.js +59 -0
  192. package/node_modules/@dharta/sdk/dist/types.js.map +1 -0
  193. package/node_modules/@dharta/sdk/package.json +32 -0
  194. package/node_modules/@dharta/sdk/src/errors.ts +58 -0
  195. package/node_modules/@dharta/sdk/src/http.ts +166 -0
  196. package/node_modules/@dharta/sdk/src/index.ts +36 -0
  197. package/node_modules/@dharta/sdk/src/resources.ts +197 -0
  198. package/node_modules/@dharta/sdk/src/types.ts +179 -0
  199. package/package.json +38 -0
  200. package/src/agent.ts +147 -0
  201. package/src/api-error.ts +88 -0
  202. package/src/browser.ts +20 -0
  203. package/src/cli.ts +2339 -0
  204. package/src/commands/agents.ts +635 -0
  205. package/src/commands/analytics.ts +181 -0
  206. package/src/commands/api.ts +297 -0
  207. package/src/commands/appearance.ts +79 -0
  208. package/src/commands/artifact.ts +331 -0
  209. package/src/commands/audit-log.ts +125 -0
  210. package/src/commands/auth.ts +186 -0
  211. package/src/commands/caps.ts +302 -0
  212. package/src/commands/create.ts +114 -0
  213. package/src/commands/deploy.ts +1122 -0
  214. package/src/commands/dev.ts +792 -0
  215. package/src/commands/directories.ts +136 -0
  216. package/src/commands/doctor.ts +138 -0
  217. package/src/commands/embed-keys.ts +237 -0
  218. package/src/commands/env.ts +369 -0
  219. package/src/commands/files.ts +124 -0
  220. package/src/commands/git-credential.ts +78 -0
  221. package/src/commands/kartas.ts +439 -0
  222. package/src/commands/keys.ts +206 -0
  223. package/src/commands/login.ts +115 -0
  224. package/src/commands/logs.ts +111 -0
  225. package/src/commands/members.ts +109 -0
  226. package/src/commands/model-keys.ts +278 -0
  227. package/src/commands/open.ts +173 -0
  228. package/src/commands/parity.ts +96 -0
  229. package/src/commands/rollback.ts +45 -0
  230. package/src/commands/schedules.ts +290 -0
  231. package/src/commands/scopes.ts +22 -0
  232. package/src/commands/sessions.ts +225 -0
  233. package/src/commands/setup.ts +1176 -0
  234. package/src/commands/status.ts +94 -0
  235. package/src/commands/update.ts +157 -0
  236. package/src/commands/usage.ts +41 -0
  237. package/src/commands/webhooks.ts +200 -0
  238. package/src/commands/whoami.ts +24 -0
  239. package/src/completions.ts +168 -0
  240. package/src/config.ts +143 -0
  241. package/src/context.ts +59 -0
  242. package/src/device-flow.ts +174 -0
  243. package/src/harness-preflight.ts +293 -0
  244. package/src/harnesses.ts +117 -0
  245. package/src/index.ts +3 -0
  246. package/src/login-offer.ts +49 -0
  247. package/src/manifest.ts +153 -0
  248. package/src/money.ts +15 -0
  249. package/src/output.ts +22 -0
  250. package/src/runtime.ts +127 -0
  251. package/src/scaffold.ts +102 -0
  252. package/src/setup-scan.ts +154 -0
  253. package/src/templates.ts +85 -0
  254. package/src/validators.ts +124 -0
  255. package/src/version-check.ts +75 -0
  256. package/templates/blank/CLAUDE.md +21 -0
  257. package/templates/blank/dharta.toml +11 -0
  258. package/templates/faq-agent/CLAUDE.md +51 -0
  259. package/templates/faq-agent/dharta.toml +11 -0
@@ -0,0 +1,235 @@
1
+ import { resolveRuntime, spawnRuntime } from "../runtime.js";
2
+ import { promises as fs } from "node:fs";
3
+ import * as path from "node:path";
4
+ export async function artifact(args) {
5
+ if (args[0] !== "run") {
6
+ const manifest = path.join(process.cwd(), "dharta.toml");
7
+ try {
8
+ await fs.access(manifest);
9
+ }
10
+ catch {
11
+ throw new Error("No dharta.toml found here. Run `dharta artifact` from an agent project.");
12
+ }
13
+ }
14
+ const runtime = await resolveRuntime();
15
+ const child = spawnRuntime(runtime, ["artifact", ...args], {
16
+ cwd: process.cwd(),
17
+ stdio: "inherit",
18
+ });
19
+ await new Promise((resolve, reject) => {
20
+ child.once("error", reject);
21
+ child.once("exit", (code, signal) => {
22
+ if (code === 0)
23
+ resolve();
24
+ else
25
+ reject(new Error(signal
26
+ ? `Artifact helper stopped by ${signal}.`
27
+ : `Artifact helper exited with status ${code ?? "unknown"}.`));
28
+ });
29
+ });
30
+ }
31
+ export function artifactPutArgs(opts) {
32
+ if ("id" in opts) {
33
+ const args = [
34
+ "put",
35
+ "--id", opts.id,
36
+ "--title", opts.title,
37
+ "--root", opts.root,
38
+ ];
39
+ if (opts.entry)
40
+ args.push("--entry", opts.entry);
41
+ if (opts.run)
42
+ args.push("--run", opts.run);
43
+ if (opts.typeId)
44
+ args.push("--type-id", opts.typeId);
45
+ for (const value of opts.inputs ?? [])
46
+ args.push("--input", value);
47
+ if (opts.agentActivation) {
48
+ for (const value of opts.agentActivation.authorities ?? []) {
49
+ args.push("--agent-authority", value);
50
+ }
51
+ args.push("--agent-budget-cents", String(opts.agentActivation.budgetCents), "--agent-lifetime-seconds", String(opts.agentActivation.lifetimeSeconds), "--agent-descendant-ceiling", String(opts.agentActivation.descendantCeiling), "--agent-activation-mode", opts.agentActivation.activationMode, "--agent-visibility", opts.agentActivation.visibility);
52
+ }
53
+ return args;
54
+ }
55
+ const args = [
56
+ "put",
57
+ "--key", opts.key,
58
+ "--kind", opts.kind,
59
+ "--title", opts.title,
60
+ "--entrypoint", opts.entrypoint,
61
+ ];
62
+ for (const value of opts.render ?? [])
63
+ args.push("--render", value);
64
+ for (const value of opts.evidence ?? [])
65
+ args.push("--evidence", value);
66
+ if (opts.provenance)
67
+ args.push("--provenance", opts.provenance);
68
+ for (const value of opts.continuation ?? [])
69
+ args.push("--continuation", value);
70
+ return args;
71
+ }
72
+ export function registerArtifactCommands(program) {
73
+ const artifactCommand = program
74
+ .command("artifact")
75
+ .description("Designate workspace outputs as durable artifacts.")
76
+ .action(() => artifactCommand.help());
77
+ artifactCommand
78
+ .command("put")
79
+ .description("Create or replace one artifact designation in .dharta/artifacts.json.")
80
+ .option("--key <key>", "Stable key inside this karta")
81
+ .option("--kind <kind>", "Release-declared artifact kind")
82
+ .option("--title <title>", "Human-readable title")
83
+ .option("--entrypoint <path>", "Workspace-relative render entrypoint")
84
+ .option("--render <path>", "Render dependency path or glob", collect, [])
85
+ .option("--evidence <path>", "Evidence dependency path or glob", collect, [])
86
+ .option("--provenance <path>", "Structured provenance resource")
87
+ .option("--continuation <path>", "Continuation dependency path or glob", collect, [])
88
+ .option("--id <id>", "Stable schema-2 Artifact ID")
89
+ .option("--root <path>", "Workspace-relative Artifact root folder")
90
+ .option("--entry <path>", "Passive entry relative to the Artifact root")
91
+ .option("--run <command>", "Opaque HTML-serving shell command")
92
+ .option("--type-id <id>", "Optional release-owned Artifact Type recipe")
93
+ .option("--input <binding>", "Named input as ALIAS=SOURCE:pinned or ALIAS=SOURCE:follow", collect, [])
94
+ .option("--agent-authority <authority>", "Requested child authority (repeatable; requires the complete Agent policy)", collect, [])
95
+ .option("--agent-budget-cents <cents>", "Maximum child budget, 0-10000 cents")
96
+ .option("--agent-lifetime-seconds <seconds>", "Child lifetime, 1-86400 seconds")
97
+ .option("--agent-descendant-ceiling <count>", "Maximum child descendants, 0-8")
98
+ .option("--agent-activation-mode <mode>", "Child mode: resume or new")
99
+ .option("--agent-visibility <visibility>", "Child visibility: headless, inspectable, or user-facing")
100
+ .action(runPut);
101
+ artifactCommand
102
+ .command("remove")
103
+ .description("Remove one artifact designation.")
104
+ .option("--key <key>", "Stable key inside this karta")
105
+ .option("--id <id>", "Stable schema-2 Artifact ID")
106
+ .action(async (opts) => {
107
+ if ((!opts.key && !opts.id) || (opts.key && opts.id)) {
108
+ throw new Error("Exactly one of --key or --id is required. See `dharta artifact remove --help`.");
109
+ }
110
+ return artifact(["remove", opts.id ? "--id" : "--key", opts.id ?? opts.key]);
111
+ });
112
+ artifactCommand
113
+ .command("list")
114
+ .description("List artifact designations from .dharta/artifacts.json.")
115
+ .action(async () => artifact(["list"]));
116
+ const run = artifactCommand
117
+ .command("run")
118
+ .description("Run a Dharta-owned HTML renderer on the assigned loopback port.")
119
+ .action(() => run.help());
120
+ for (const [name, description] of [
121
+ ["markdown-viewer", "Render a Markdown document."],
122
+ ["markdown-editor", "Render a browser-local Markdown working copy."],
123
+ ["pdf-viewer", "Serve a version-pinned PDF."],
124
+ ["image-viewer", "Render an image."],
125
+ ["audio-player", "Render range-capable audio controls."],
126
+ ["video-player", "Render range-capable video controls."],
127
+ ]) {
128
+ run.command(`${name} <path>`)
129
+ .description(description)
130
+ .option("--port <port>", "Loopback port; defaults to DHARTA_ARTIFACT_PORT")
131
+ .action(async (target, options) => {
132
+ await artifact(["run", name, target, ...portArgs(options.port)]);
133
+ });
134
+ }
135
+ run.command("static-html <directory>")
136
+ .description("Serve a contained static HTML directory.")
137
+ .option("--port <port>", "Loopback port; defaults to DHARTA_ARTIFACT_PORT")
138
+ .action(async (directory, options) => {
139
+ await artifact(["run", "static-html", directory, ...portArgs(options.port)]);
140
+ });
141
+ run.command("agent <directory>")
142
+ .description("Validate and launch a generated Agent App through Dharta.")
143
+ .option("--port <port>", "Loopback port; defaults to DHARTA_ARTIFACT_PORT")
144
+ .action(async (directory, options) => {
145
+ await artifact(["run", "agent", directory, ...portArgs(options.port)]);
146
+ });
147
+ run.command("registered-view <renderer> <path>")
148
+ .description("Serve the portable fallback for registered Artifact data.")
149
+ .option("--port <port>", "Loopback port; defaults to DHARTA_ARTIFACT_PORT")
150
+ .action(async (renderer, target, options) => {
151
+ await artifact(["run", "registered-view", renderer, target, ...portArgs(options.port)]);
152
+ });
153
+ }
154
+ async function runPut(opts) {
155
+ if (!opts.title) {
156
+ throw new Error("--title is required. See `dharta artifact put --help`.");
157
+ }
158
+ const requestedAgentPolicy = Boolean(opts.agentAuthority.length
159
+ || opts.agentBudgetCents
160
+ || opts.agentLifetimeSeconds
161
+ || opts.agentDescendantCeiling
162
+ || opts.agentActivationMode
163
+ || opts.agentVisibility);
164
+ const v2 = Boolean(opts.id || opts.root || opts.entry || opts.run || opts.typeId || opts.input.length
165
+ || requestedAgentPolicy);
166
+ const legacy = Boolean(opts.key || opts.kind || opts.entrypoint || opts.render.length || opts.evidence.length
167
+ || opts.provenance || opts.continuation.length);
168
+ if (v2 && legacy) {
169
+ throw new Error("Legacy and schema-2 Artifact options cannot be mixed. See `dharta artifact put --help`.");
170
+ }
171
+ if (v2) {
172
+ if (!opts.id || !opts.root || Boolean(opts.entry) === Boolean(opts.run)) {
173
+ throw new Error("Schema-2 Artifacts require --id, --root, and exactly one of --entry or --run. "
174
+ + "See `dharta artifact put --help`.");
175
+ }
176
+ const requiredAgentPolicy = [
177
+ ["--agent-budget-cents", opts.agentBudgetCents],
178
+ ["--agent-lifetime-seconds", opts.agentLifetimeSeconds],
179
+ ["--agent-descendant-ceiling", opts.agentDescendantCeiling],
180
+ ["--agent-activation-mode", opts.agentActivationMode],
181
+ ["--agent-visibility", opts.agentVisibility],
182
+ ];
183
+ const missingAgentPolicy = requestedAgentPolicy
184
+ ? requiredAgentPolicy
185
+ .filter(([, value]) => value === undefined)
186
+ .map(([name]) => name)
187
+ : [];
188
+ if (missingAgentPolicy.length > 0) {
189
+ throw new Error(`Agent activation requires a complete policy; missing ${missingAgentPolicy.join(", ")}. `
190
+ + "See `dharta artifact put --help`.");
191
+ }
192
+ return artifact(artifactPutArgs({
193
+ id: opts.id,
194
+ title: opts.title,
195
+ root: opts.root,
196
+ ...(opts.entry ? { entry: opts.entry } : {}),
197
+ ...(opts.run ? { run: opts.run } : {}),
198
+ ...(opts.typeId ? { typeId: opts.typeId } : {}),
199
+ inputs: opts.input,
200
+ ...(requestedAgentPolicy
201
+ ? {
202
+ agentActivation: {
203
+ authorities: opts.agentAuthority,
204
+ budgetCents: opts.agentBudgetCents,
205
+ lifetimeSeconds: opts.agentLifetimeSeconds,
206
+ descendantCeiling: opts.agentDescendantCeiling,
207
+ activationMode: opts.agentActivationMode,
208
+ visibility: opts.agentVisibility,
209
+ },
210
+ }
211
+ : {}),
212
+ }));
213
+ }
214
+ if (!opts.key || !opts.kind || !opts.entrypoint) {
215
+ throw new Error("Artifacts require --key, --kind, and --entrypoint. "
216
+ + "See `dharta artifact put --help`.");
217
+ }
218
+ return artifact(artifactPutArgs({
219
+ key: opts.key,
220
+ kind: opts.kind,
221
+ title: opts.title,
222
+ entrypoint: opts.entrypoint,
223
+ render: opts.render,
224
+ evidence: opts.evidence,
225
+ provenance: opts.provenance,
226
+ continuation: opts.continuation,
227
+ }));
228
+ }
229
+ function collect(value, previous) {
230
+ return [...previous, value];
231
+ }
232
+ function portArgs(port) {
233
+ return port ? ["--port", port] : [];
234
+ }
235
+ //# sourceMappingURL=artifact.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"artifact.js","sourceRoot":"","sources":["../../src/commands/artifact.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ import type { CliContext } from "../context.js";
2
+ interface AuditLogResponse {
3
+ data: AuditLogEvent[];
4
+ meta: {
5
+ row_estimate: number;
6
+ limit: number;
7
+ };
8
+ }
9
+ export interface AuditLogEvent {
10
+ id: number;
11
+ created_at: string;
12
+ action: string;
13
+ actor_email: string | null;
14
+ api_key_prefix: string | null;
15
+ subject_type: string | null;
16
+ subject_id: number | null;
17
+ ip_address: string | null;
18
+ user_agent: string | null;
19
+ metadata: Record<string, unknown>;
20
+ }
21
+ export interface AuditLogOptions {
22
+ csv?: boolean;
23
+ action?: string;
24
+ userId?: string;
25
+ from?: string;
26
+ to?: string;
27
+ limit?: string;
28
+ }
29
+ export declare function auditLogData(ctx: CliContext, opts?: AuditLogOptions): Promise<AuditLogResponse | string>;
30
+ export declare function auditLog(ctx: CliContext, opts?: AuditLogOptions): Promise<string>;
31
+ export declare function validateAuditLogInput(opts?: AuditLogOptions): void;
32
+ export {};
@@ -0,0 +1,102 @@
1
+ import { cliFormatRawError } from "../api-error.js";
2
+ import { fmtTs, table } from "../output.js";
3
+ import { parsePositiveInteger, validateDateOnly } from "../validators.js";
4
+ export async function auditLogData(ctx, opts = {}) {
5
+ const normalized = normalizeAuditLogOptions(opts);
6
+ validateAuditLogOptions(normalized);
7
+ const path = auditLogPath(normalized);
8
+ try {
9
+ if (normalized.csv) {
10
+ const res = await ctx.http.raw(path);
11
+ if (!res.ok)
12
+ throw await cliFormatRawError(res);
13
+ return res.text();
14
+ }
15
+ return await ctx.http.request({ path });
16
+ }
17
+ catch (error) {
18
+ throw withAuditLogScopeGuidance(error);
19
+ }
20
+ }
21
+ export async function auditLog(ctx, opts = {}) {
22
+ const res = await auditLogData(ctx, opts);
23
+ if (typeof res === "string")
24
+ return res;
25
+ if (res.data.length === 0)
26
+ return emptyAuditLogMessage(normalizeAuditLogOptions(opts));
27
+ return table(res.data.map((event) => ({
28
+ id: String(event.id),
29
+ time: fmtTs(event.created_at),
30
+ action: event.action,
31
+ actor: event.actor_email ?? event.api_key_prefix ?? "-",
32
+ subject: subjectLabel(event),
33
+ ip: event.ip_address ?? "-",
34
+ })));
35
+ }
36
+ function emptyAuditLogMessage(opts) {
37
+ if (opts.action || opts.userId || opts.from || opts.to) {
38
+ return "No audit events matched those filters. Try widening --from/--to or removing filters.";
39
+ }
40
+ return "No audit events yet.";
41
+ }
42
+ export function validateAuditLogInput(opts = {}) {
43
+ validateAuditLogOptions(normalizeAuditLogOptions(opts));
44
+ }
45
+ function auditLogPath(opts) {
46
+ const params = new URLSearchParams();
47
+ if (opts.action)
48
+ params.set("event_action", opts.action);
49
+ if (opts.userId)
50
+ params.set("user_id", opts.userId);
51
+ if (opts.from)
52
+ params.set("from", opts.from);
53
+ if (opts.to)
54
+ params.set("to", opts.to);
55
+ if (opts.limit)
56
+ params.set("limit", opts.limit);
57
+ const qs = params.toString();
58
+ return `/api/audit_events${opts.csv ? ".csv" : ""}${qs ? `?${qs}` : ""}`;
59
+ }
60
+ function validateAuditLogOptions(opts) {
61
+ if (opts.userId !== undefined)
62
+ parsePositiveInteger(opts.userId, "--user-id");
63
+ if (opts.from !== undefined)
64
+ validateDateOnly(opts.from, "--from");
65
+ if (opts.to !== undefined)
66
+ validateDateOnly(opts.to, "--to");
67
+ if (opts.limit !== undefined)
68
+ parsePositiveInteger(opts.limit, "--limit");
69
+ }
70
+ function normalizeAuditLogOptions(opts) {
71
+ return {
72
+ ...opts,
73
+ action: normalizeOptionalFilter(opts.action, "--action"),
74
+ userId: normalizeOptionalFilter(opts.userId, "--user-id"),
75
+ from: normalizeOptionalFilter(opts.from, "--from"),
76
+ to: normalizeOptionalFilter(opts.to, "--to"),
77
+ limit: normalizeOptionalFilter(opts.limit, "--limit"),
78
+ };
79
+ }
80
+ function normalizeOptionalFilter(value, flag) {
81
+ if (value === undefined)
82
+ return undefined;
83
+ const normalized = value.trim();
84
+ if (normalized.length === 0)
85
+ throw new Error(`${flag} cannot be blank.`);
86
+ return normalized;
87
+ }
88
+ function subjectLabel(event) {
89
+ if (!event.subject_type || event.subject_id === null)
90
+ return "-";
91
+ return `${event.subject_type}#${event.subject_id}`;
92
+ }
93
+ function withAuditLogScopeGuidance(error) {
94
+ if (!(error instanceof Error) || !/audit_log:export/.test(error.message))
95
+ return error;
96
+ error.message +=
97
+ " Audit export is intentionally not included in `dharta login` keys. " +
98
+ "Open `dharta open api-keys` and mint a bounded key with `audit_log:export` plus an expiry, " +
99
+ "then use it with `DHARTA_API_KEY=...` or `dharta login --with-token`.";
100
+ return error;
101
+ }
102
+ //# sourceMappingURL=audit-log.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audit-log.js","sourceRoot":"","sources":["../../src/commands/audit-log.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,47 @@
1
+ export interface Me {
2
+ organization: {
3
+ slug: string;
4
+ name: string;
5
+ };
6
+ api_key: {
7
+ name: string;
8
+ prefix: string;
9
+ scopes: string[];
10
+ created_at: string;
11
+ expires_at?: string | null;
12
+ last_used_at: string | null;
13
+ };
14
+ workspace_git?: {
15
+ base_url: string;
16
+ };
17
+ }
18
+ export interface ProfileStatus {
19
+ source: "environment" | "profile";
20
+ profile?: string;
21
+ default?: boolean;
22
+ base_url: string;
23
+ ok: boolean;
24
+ organization?: {
25
+ slug: string;
26
+ name: string;
27
+ };
28
+ api_key?: {
29
+ name: string;
30
+ prefix: string;
31
+ scopes: string[];
32
+ expires_at?: string | null;
33
+ };
34
+ error?: string;
35
+ }
36
+ export declare function authStatusData(opts?: {
37
+ fetchImpl?: typeof fetch;
38
+ }): Promise<ProfileStatus[]>;
39
+ export declare function authStatus(opts?: {
40
+ fetchImpl?: typeof fetch;
41
+ }): Promise<string>;
42
+ export declare function authToken(): Promise<string>;
43
+ export declare function authLogoutData(profileName?: string): Promise<{
44
+ profile: string;
45
+ path: string;
46
+ }>;
47
+ export declare function authLogout(profileName?: string): Promise<string>;
@@ -0,0 +1,117 @@
1
+ // `dharta auth status|token|logout` (RFC 0013 CLI-1, gh-shaped).
2
+ import { HttpClient } from "@dharta/sdk";
3
+ import { cliFormatError, cliFormatNetworkError } from "../api-error.js";
4
+ import { configPath, loadConfig, removeProfile, DEFAULT_BASE_URL, } from "../config.js";
5
+ import { normalizeNonBlank } from "../validators.js";
6
+ import { formatApiKeyExpiry, formatScopes } from "./scopes.js";
7
+ export async function authStatusData(opts = {}) {
8
+ const statuses = [];
9
+ const envKey = process.env.DHARTA_API_KEY;
10
+ if (envKey) {
11
+ const baseUrl = process.env.DHARTA_BASE_URL || DEFAULT_BASE_URL;
12
+ statuses.push(await describeKey(envKey, baseUrl, "environment", opts.fetchImpl));
13
+ }
14
+ const cfg = await loadConfig();
15
+ for (const [name, profile] of Object.entries(cfg?.profiles ?? {})) {
16
+ statuses.push({
17
+ ...(await describeKey(profile.api_key, profile.base_url || DEFAULT_BASE_URL, "profile", opts.fetchImpl)),
18
+ profile: name,
19
+ default: name === cfg?.default_profile,
20
+ });
21
+ }
22
+ return statuses;
23
+ }
24
+ export async function authStatus(opts = {}) {
25
+ const statuses = await authStatusData(opts);
26
+ if (statuses.length === 0) {
27
+ return "Not logged in. Run `dharta login` to sign in via your browser.";
28
+ }
29
+ const lines = [];
30
+ for (const s of statuses) {
31
+ lines.push(s.source === "environment"
32
+ ? `DHARTA_API_KEY (environment) - ${s.base_url}`
33
+ : `Profile ${s.profile}${s.default ? " (default)" : ""} - ${s.base_url}`);
34
+ if (s.ok && s.organization && s.api_key) {
35
+ lines.push(` Organization: ${s.organization.name} (${s.organization.slug})`, ` Key: ${s.api_key.name} · ${s.api_key.prefix}…`, ` Scopes: ${formatScopes(s.api_key.scopes)}`, ` Expiry: ${formatApiKeyExpiry(s.api_key.expires_at)}`);
36
+ }
37
+ else {
38
+ lines.push(` ${s.error}`);
39
+ }
40
+ }
41
+ return lines.join("\n");
42
+ }
43
+ async function describeKey(apiKey, baseUrl, source, fetchImpl) {
44
+ try {
45
+ const http = new HttpClient({
46
+ apiKey,
47
+ baseUrl,
48
+ fetch: fetchImpl,
49
+ formatError: cliFormatError,
50
+ formatNetworkError: cliFormatNetworkError,
51
+ });
52
+ const me = await http.request({ path: "/me" });
53
+ return {
54
+ source,
55
+ base_url: baseUrl,
56
+ ok: true,
57
+ organization: me.organization,
58
+ api_key: {
59
+ name: me.api_key.name,
60
+ prefix: me.api_key.prefix,
61
+ scopes: me.api_key.scopes,
62
+ expires_at: me.api_key.expires_at,
63
+ },
64
+ };
65
+ }
66
+ catch (error) {
67
+ const status = error.status;
68
+ const credentialProblem = status === 401 || status === 403;
69
+ return {
70
+ source,
71
+ base_url: baseUrl,
72
+ ok: false,
73
+ error: credentialProblem && source === "environment"
74
+ ? "Invalid or revoked credential. Fix or unset DHARTA_API_KEY."
75
+ : credentialProblem
76
+ ? "Invalid or revoked credential. Run `dharta login` to re-authenticate."
77
+ : `Could not check credential: ${formatCause(error)}`,
78
+ };
79
+ }
80
+ }
81
+ function formatCause(error) {
82
+ return error instanceof Error && error.message ? error.message : String(error);
83
+ }
84
+ // Print the active token for piping (gh auth token parity). Environment
85
+ // override wins, matching every other command.
86
+ export async function authToken() {
87
+ const envKey = process.env.DHARTA_API_KEY;
88
+ if (envKey)
89
+ return envKey;
90
+ const cfg = await loadConfig();
91
+ const profile = cfg?.profiles[cfg.default_profile];
92
+ if (!profile) {
93
+ throw new Error("Not logged in. Run `dharta login` to sign in via your browser.");
94
+ }
95
+ return profile.api_key;
96
+ }
97
+ // Remove the stored credential. Local-only by design: the key itself
98
+ // stays valid until revoked on the dashboard, and we say so.
99
+ export async function authLogoutData(profileName) {
100
+ const requestedName = profileName === undefined ? undefined : normalizeNonBlank(profileName, "--profile");
101
+ const cfg = await loadConfig();
102
+ if (!cfg) {
103
+ throw new Error("Not logged in - nothing to remove. `dharta auth status` shows what is stored.");
104
+ }
105
+ const name = requestedName ?? cfg.default_profile;
106
+ const removed = await removeProfile(name);
107
+ if (!removed) {
108
+ throw new Error(`No profile named '${name}' in ${configPath()}. Run \`dharta auth status\` to list profiles.`);
109
+ }
110
+ return { profile: name, path: configPath() };
111
+ }
112
+ export async function authLogout(profileName) {
113
+ const removed = await authLogoutData(profileName);
114
+ return (`Removed profile '${removed.profile}' from ${removed.path}.\n` +
115
+ "The key itself remains valid until you revoke it on the dashboard keys page.");
116
+ }
117
+ //# sourceMappingURL=auth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/commands/auth.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,82 @@
1
+ import type { CliContext } from "../context.js";
2
+ export interface Budget {
3
+ period: string;
4
+ max_cost_cents: number | null;
5
+ stop_usage: boolean;
6
+ alerts_enabled: boolean;
7
+ alert_threshold_pct: number;
8
+ additional_recipient_user_ids: number[];
9
+ max_total_tokens: number | null;
10
+ max_input_tokens: number | null;
11
+ max_output_tokens: number | null;
12
+ }
13
+ export interface BudgetUsage {
14
+ period_cost_cents: number;
15
+ total_tokens: number;
16
+ percent_used: number | null;
17
+ }
18
+ export interface BudgetEnvelope {
19
+ budget: Budget;
20
+ usage: BudgetUsage;
21
+ }
22
+ export interface BudgetSetOptions {
23
+ amount?: string;
24
+ hardStop?: boolean;
25
+ soft?: boolean;
26
+ enableAlerts?: boolean;
27
+ disableAlerts?: boolean;
28
+ alertThreshold?: string;
29
+ recipientUserId?: string[];
30
+ }
31
+ export interface EntityCap {
32
+ id: number;
33
+ cap_cents: number;
34
+ created_at: string;
35
+ updated_at: string;
36
+ }
37
+ export interface InstanceCapEnvelope {
38
+ type: "instance";
39
+ raw_instance_id: string;
40
+ agent_instance_id: string;
41
+ spend_micros: number;
42
+ cap: EntityCap | null;
43
+ changed?: boolean;
44
+ }
45
+ export interface EndUserCapEnvelope {
46
+ type: "end_user";
47
+ end_user_id: string;
48
+ spend_micros: number;
49
+ cap: EntityCap | null;
50
+ changed?: boolean;
51
+ }
52
+ export interface SeatCapEnvelope {
53
+ type: "seat";
54
+ raw_instance_id: string;
55
+ agent_instance_id: string;
56
+ end_user_id: string;
57
+ spend_micros: number;
58
+ cap: EntityCap | null;
59
+ changed?: boolean;
60
+ }
61
+ export interface CapSetOptions {
62
+ amount?: string;
63
+ clear?: boolean;
64
+ }
65
+ export declare function capsBudgetData(ctx: CliContext): Promise<BudgetEnvelope>;
66
+ export declare function capsBudget(ctx: CliContext): Promise<string>;
67
+ export declare function capsBudgetSetData(ctx: CliContext, opts: BudgetSetOptions): Promise<BudgetEnvelope>;
68
+ export declare function capsBudgetSet(ctx: CliContext, opts: BudgetSetOptions): Promise<string>;
69
+ export declare function capsInstanceData(ctx: CliContext, instance: string): Promise<InstanceCapEnvelope>;
70
+ export declare function capsInstance(ctx: CliContext, instance: string): Promise<string>;
71
+ export declare function capsInstanceSetData(ctx: CliContext, instance: string, opts: CapSetOptions): Promise<InstanceCapEnvelope>;
72
+ export declare function capsInstanceSet(ctx: CliContext, instance: string, opts: CapSetOptions): Promise<string>;
73
+ export declare function capsEndUserData(ctx: CliContext, endUserId: string): Promise<EndUserCapEnvelope>;
74
+ export declare function capsEndUser(ctx: CliContext, endUserId: string): Promise<string>;
75
+ export declare function capsEndUserSetData(ctx: CliContext, endUserId: string, opts: CapSetOptions): Promise<EndUserCapEnvelope>;
76
+ export declare function capsEndUserSet(ctx: CliContext, endUserId: string, opts: CapSetOptions): Promise<string>;
77
+ export declare function capsSeatData(ctx: CliContext, instance: string, endUserId: string): Promise<SeatCapEnvelope>;
78
+ export declare function capsSeat(ctx: CliContext, instance: string, endUserId: string): Promise<string>;
79
+ export declare function capsSeatSetData(ctx: CliContext, instance: string, endUserId: string, opts: CapSetOptions): Promise<SeatCapEnvelope>;
80
+ export declare function capsSeatSet(ctx: CliContext, instance: string, endUserId: string, opts: CapSetOptions): Promise<string>;
81
+ export declare function validateBudgetSetOptions(opts: BudgetSetOptions): void;
82
+ export declare function validateCapSetOptions(opts: CapSetOptions): void;