deepclause-sdk 0.0.89 → 0.1.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 (329) hide show
  1. package/README.md +481 -941
  2. package/dist/agent.d.ts +19 -2
  3. package/dist/agent.d.ts.map +1 -1
  4. package/dist/agent.js +75 -21
  5. package/dist/agent.js.map +1 -1
  6. package/dist/cli/config.d.ts +385 -178
  7. package/dist/cli/config.d.ts.map +1 -1
  8. package/dist/cli/config.js +161 -188
  9. package/dist/cli/config.js.map +1 -1
  10. package/dist/cli/index.d.ts +3 -2
  11. package/dist/cli/index.d.ts.map +1 -1
  12. package/dist/cli/index.js +85 -411
  13. package/dist/cli/index.js.map +1 -1
  14. package/dist/cli/login.d.ts +29 -0
  15. package/dist/cli/login.d.ts.map +1 -0
  16. package/dist/cli/login.js +184 -0
  17. package/dist/cli/login.js.map +1 -0
  18. package/dist/cli/readline.d.ts +6 -0
  19. package/dist/cli/readline.d.ts.map +1 -0
  20. package/dist/cli/readline.js +15 -0
  21. package/dist/cli/readline.js.map +1 -0
  22. package/dist/cli/repl-bin.d.ts +9 -0
  23. package/dist/cli/repl-bin.d.ts.map +1 -0
  24. package/dist/cli/repl-bin.js +16 -0
  25. package/dist/cli/repl-bin.js.map +1 -0
  26. package/dist/cli/repl.d.ts +216 -0
  27. package/dist/cli/repl.d.ts.map +1 -0
  28. package/dist/cli/repl.js +1392 -0
  29. package/dist/cli/repl.js.map +1 -0
  30. package/dist/cli/run.d.ts +17 -18
  31. package/dist/cli/run.d.ts.map +1 -1
  32. package/dist/cli/run.js +202 -183
  33. package/dist/cli/run.js.map +1 -1
  34. package/dist/cli/set-backend.d.ts +53 -0
  35. package/dist/cli/set-backend.d.ts.map +1 -0
  36. package/dist/cli/set-backend.js +259 -0
  37. package/dist/cli/set-backend.js.map +1 -0
  38. package/dist/cli/visualize.d.ts +42 -0
  39. package/dist/cli/visualize.d.ts.map +1 -0
  40. package/dist/cli/visualize.js +150 -0
  41. package/dist/cli/visualize.js.map +1 -0
  42. package/dist/compiler.d.ts +5 -52
  43. package/dist/compiler.d.ts.map +1 -1
  44. package/dist/compiler.js +4 -768
  45. package/dist/compiler.js.map +1 -1
  46. package/dist/index.d.ts +27 -2
  47. package/dist/index.d.ts.map +1 -1
  48. package/dist/index.js +18 -2
  49. package/dist/index.js.map +1 -1
  50. package/dist/prolog/bridge.d.ts +5 -1
  51. package/dist/prolog/bridge.d.ts.map +1 -1
  52. package/dist/prolog/bridge.js +10 -1
  53. package/dist/prolog/bridge.js.map +1 -1
  54. package/dist/prolog-src/deepclause_analysis.pl +10 -2
  55. package/dist/prolog-src/deepclause_mi.pl +2440 -49
  56. package/dist/repl/agent.d.ts +90 -0
  57. package/dist/repl/agent.d.ts.map +1 -0
  58. package/dist/repl/agent.js +410 -0
  59. package/dist/repl/agent.js.map +1 -0
  60. package/dist/repl/auth.d.ts +45 -0
  61. package/dist/repl/auth.d.ts.map +1 -0
  62. package/dist/repl/auth.js +116 -0
  63. package/dist/repl/auth.js.map +1 -0
  64. package/dist/repl/backend.d.ts +321 -0
  65. package/dist/repl/backend.d.ts.map +1 -0
  66. package/dist/repl/backend.js +415 -0
  67. package/dist/repl/backend.js.map +1 -0
  68. package/dist/repl/compaction.d.ts +122 -0
  69. package/dist/repl/compaction.d.ts.map +1 -0
  70. package/dist/repl/compaction.js +318 -0
  71. package/dist/repl/compaction.js.map +1 -0
  72. package/dist/repl/export.d.ts +30 -0
  73. package/dist/repl/export.d.ts.map +1 -0
  74. package/dist/repl/export.js +23 -0
  75. package/dist/repl/export.js.map +1 -0
  76. package/dist/repl/frames.d.ts +21 -0
  77. package/dist/repl/frames.d.ts.map +1 -0
  78. package/dist/repl/frames.js +79 -0
  79. package/dist/repl/frames.js.map +1 -0
  80. package/dist/repl/harness-tools.d.ts +99 -0
  81. package/dist/repl/harness-tools.d.ts.map +1 -0
  82. package/dist/repl/harness-tools.js +192 -0
  83. package/dist/repl/harness-tools.js.map +1 -0
  84. package/dist/repl/highlight.d.ts +30 -0
  85. package/dist/repl/highlight.d.ts.map +1 -0
  86. package/dist/repl/highlight.js +285 -0
  87. package/dist/repl/highlight.js.map +1 -0
  88. package/dist/repl/history.d.ts +234 -0
  89. package/dist/repl/history.d.ts.map +1 -0
  90. package/dist/repl/history.js +661 -0
  91. package/dist/repl/history.js.map +1 -0
  92. package/dist/repl/imagegen.d.ts +29 -0
  93. package/dist/repl/imagegen.d.ts.map +1 -0
  94. package/dist/repl/imagegen.js +84 -0
  95. package/dist/repl/imagegen.js.map +1 -0
  96. package/dist/repl/index.d.ts +130 -0
  97. package/dist/repl/index.d.ts.map +1 -0
  98. package/dist/repl/index.js +112 -0
  99. package/dist/repl/index.js.map +1 -0
  100. package/dist/repl/judge.d.ts +51 -0
  101. package/dist/repl/judge.d.ts.map +1 -0
  102. package/dist/repl/judge.js +58 -0
  103. package/dist/repl/judge.js.map +1 -0
  104. package/dist/repl/markdown.d.ts +25 -0
  105. package/dist/repl/markdown.d.ts.map +1 -0
  106. package/dist/repl/markdown.js +103 -0
  107. package/dist/repl/markdown.js.map +1 -0
  108. package/dist/repl/model-resolver.d.ts +59 -0
  109. package/dist/repl/model-resolver.d.ts.map +1 -0
  110. package/dist/repl/model-resolver.js +156 -0
  111. package/dist/repl/model-resolver.js.map +1 -0
  112. package/dist/repl/picker.d.ts +34 -0
  113. package/dist/repl/picker.d.ts.map +1 -0
  114. package/dist/repl/picker.js +81 -0
  115. package/dist/repl/picker.js.map +1 -0
  116. package/dist/repl/project-context.d.ts +16 -0
  117. package/dist/repl/project-context.d.ts.map +1 -0
  118. package/dist/repl/project-context.js +23 -0
  119. package/dist/repl/project-context.js.map +1 -0
  120. package/dist/repl/render.d.ts +187 -0
  121. package/dist/repl/render.d.ts.map +1 -0
  122. package/dist/repl/render.js +808 -0
  123. package/dist/repl/render.js.map +1 -0
  124. package/dist/repl/session.d.ts +424 -0
  125. package/dist/repl/session.d.ts.map +1 -0
  126. package/dist/repl/session.js +1473 -0
  127. package/dist/repl/session.js.map +1 -0
  128. package/dist/repl/status.d.ts +100 -0
  129. package/dist/repl/status.d.ts.map +1 -0
  130. package/dist/repl/status.js +218 -0
  131. package/dist/repl/status.js.map +1 -0
  132. package/dist/repl/tools.d.ts +53 -0
  133. package/dist/repl/tools.d.ts.map +1 -0
  134. package/dist/repl/tools.js +307 -0
  135. package/dist/repl/tools.js.map +1 -0
  136. package/dist/repl/toolset.d.ts +32 -0
  137. package/dist/repl/toolset.d.ts.map +1 -0
  138. package/dist/repl/toolset.js +82 -0
  139. package/dist/repl/toolset.js.map +1 -0
  140. package/dist/repl/tui/editor.d.ts +17 -0
  141. package/dist/repl/tui/editor.d.ts.map +1 -0
  142. package/dist/repl/tui/editor.js +39 -0
  143. package/dist/repl/tui/editor.js.map +1 -0
  144. package/dist/repl/tui/status-bar.d.ts +26 -0
  145. package/dist/repl/tui/status-bar.d.ts.map +1 -0
  146. package/dist/repl/tui/status-bar.js +47 -0
  147. package/dist/repl/tui/status-bar.js.map +1 -0
  148. package/dist/repl/tui/theme.d.ts +30 -0
  149. package/dist/repl/tui/theme.d.ts.map +1 -0
  150. package/dist/repl/tui/theme.js +81 -0
  151. package/dist/repl/tui/theme.js.map +1 -0
  152. package/dist/repl/tui/transcript.d.ts +41 -0
  153. package/dist/repl/tui/transcript.d.ts.map +1 -0
  154. package/dist/repl/tui/transcript.js +139 -0
  155. package/dist/repl/tui/transcript.js.map +1 -0
  156. package/dist/runner.d.ts +143 -13
  157. package/dist/runner.d.ts.map +1 -1
  158. package/dist/runner.js +532 -290
  159. package/dist/runner.js.map +1 -1
  160. package/dist/sdk.d.ts.map +1 -1
  161. package/dist/sdk.js +0 -32
  162. package/dist/sdk.js.map +1 -1
  163. package/dist/system/assets/docs/AGENT_PROMPT.md +1447 -0
  164. package/dist/system/assets/docs/DML_AUTHORING.md +195 -0
  165. package/dist/system/assets/docs/DML_REFERENCE.md +344 -72
  166. package/dist/system/assets/docs/HARNESS_EXAMPLES.md +172 -0
  167. package/dist/system/assets/docs/HARNESS_PATTERNS.md +562 -0
  168. package/dist/system/assets/docs/META_PROMPT.md +68 -0
  169. package/dist/system/assets/docs/PROLOG_SNIPPETS.md +117 -0
  170. package/dist/system/assets/index.d.ts +9 -17
  171. package/dist/system/assets/index.d.ts.map +1 -1
  172. package/dist/system/assets/index.js +26 -85
  173. package/dist/system/assets/index.js.map +1 -1
  174. package/dist/system/runtime/agentvm-manager.d.ts +9 -2
  175. package/dist/system/runtime/agentvm-manager.d.ts.map +1 -1
  176. package/dist/system/runtime/agentvm-manager.js +70 -44
  177. package/dist/system/runtime/agentvm-manager.js.map +1 -1
  178. package/dist/system/runtime/media.d.ts +23 -0
  179. package/dist/system/runtime/media.d.ts.map +1 -0
  180. package/dist/system/runtime/media.js +55 -0
  181. package/dist/system/runtime/media.js.map +1 -0
  182. package/dist/system/runtime/shell-limits.d.ts +21 -0
  183. package/dist/system/runtime/shell-limits.d.ts.map +1 -0
  184. package/dist/system/runtime/shell-limits.js +39 -0
  185. package/dist/system/runtime/shell-limits.js.map +1 -0
  186. package/dist/system/runtime/shell-manager.d.ts +8 -3
  187. package/dist/system/runtime/shell-manager.d.ts.map +1 -1
  188. package/dist/system/runtime/shell-manager.js +56 -39
  189. package/dist/system/runtime/shell-manager.js.map +1 -1
  190. package/dist/system/runtime/shell-tool-events.js +5 -0
  191. package/dist/system/runtime/shell-tool-events.js.map +1 -1
  192. package/dist/system/runtime/token-usage.d.ts +2 -0
  193. package/dist/system/runtime/token-usage.d.ts.map +1 -1
  194. package/dist/system/runtime/token-usage.js +7 -0
  195. package/dist/system/runtime/token-usage.js.map +1 -1
  196. package/dist/tools.d.ts +3 -21
  197. package/dist/tools.d.ts.map +1 -1
  198. package/dist/tools.js +14 -168
  199. package/dist/tools.js.map +1 -1
  200. package/dist/types.d.ts +136 -119
  201. package/dist/types.d.ts.map +1 -1
  202. package/dist/validate.d.ts +19 -0
  203. package/dist/validate.d.ts.map +1 -0
  204. package/dist/validate.js +338 -0
  205. package/dist/validate.js.map +1 -0
  206. package/dist/visualize/ascii.d.ts +55 -0
  207. package/dist/visualize/ascii.d.ts.map +1 -0
  208. package/dist/visualize/ascii.js +242 -0
  209. package/dist/visualize/ascii.js.map +1 -0
  210. package/dist/visualize/display.d.ts +24 -0
  211. package/dist/visualize/display.d.ts.map +1 -0
  212. package/dist/visualize/display.js +29 -0
  213. package/dist/visualize/display.js.map +1 -0
  214. package/dist/visualize/graphics.d.ts +35 -0
  215. package/dist/visualize/graphics.d.ts.map +1 -0
  216. package/dist/visualize/graphics.js +96 -0
  217. package/dist/visualize/graphics.js.map +1 -0
  218. package/dist/visualize/image.d.ts +38 -0
  219. package/dist/visualize/image.d.ts.map +1 -0
  220. package/dist/visualize/image.js +95 -0
  221. package/dist/visualize/image.js.map +1 -0
  222. package/dist/visualize/index.d.ts +59 -0
  223. package/dist/visualize/index.d.ts.map +1 -0
  224. package/dist/visualize/index.js +198 -0
  225. package/dist/visualize/index.js.map +1 -0
  226. package/dist/visualize/raster.d.ts +23 -0
  227. package/dist/visualize/raster.d.ts.map +1 -0
  228. package/dist/visualize/raster.js +47 -0
  229. package/dist/visualize/raster.js.map +1 -0
  230. package/dist/visualize/svg.d.ts +39 -0
  231. package/dist/visualize/svg.d.ts.map +1 -0
  232. package/dist/visualize/svg.js +148 -0
  233. package/dist/visualize/svg.js.map +1 -0
  234. package/dist/visualize/transcode.d.ts +13 -0
  235. package/dist/visualize/transcode.d.ts.map +1 -0
  236. package/dist/visualize/transcode.js +40 -0
  237. package/dist/visualize/transcode.js.map +1 -0
  238. package/docs/images/repl.png +0 -0
  239. package/package.json +19 -15
  240. package/src/prolog-src/deepclause_analysis.pl +10 -2
  241. package/src/prolog-src/deepclause_mi.pl +2440 -49
  242. package/dist/cli/commands.d.ts +0 -42
  243. package/dist/cli/commands.d.ts.map +0 -1
  244. package/dist/cli/commands.js +0 -246
  245. package/dist/cli/commands.js.map +0 -1
  246. package/dist/cli/compile.d.ts +0 -99
  247. package/dist/cli/compile.d.ts.map +0 -1
  248. package/dist/cli/compile.js +0 -363
  249. package/dist/cli/compile.js.map +0 -1
  250. package/dist/cli/default-skills.d.ts +0 -10
  251. package/dist/cli/default-skills.d.ts.map +0 -1
  252. package/dist/cli/default-skills.js +0 -206
  253. package/dist/cli/default-skills.js.map +0 -1
  254. package/dist/cli/interactive.d.ts +0 -2
  255. package/dist/cli/interactive.d.ts.map +0 -1
  256. package/dist/cli/interactive.js +0 -20
  257. package/dist/cli/interactive.js.map +0 -1
  258. package/dist/cli/mcp.d.ts +0 -56
  259. package/dist/cli/mcp.d.ts.map +0 -1
  260. package/dist/cli/mcp.js +0 -138
  261. package/dist/cli/mcp.js.map +0 -1
  262. package/dist/cli/prompt.d.ts +0 -2
  263. package/dist/cli/prompt.d.ts.map +0 -1
  264. package/dist/cli/prompt.js +0 -2
  265. package/dist/cli/prompt.js.map +0 -1
  266. package/dist/cli/search.d.ts +0 -19
  267. package/dist/cli/search.d.ts.map +0 -1
  268. package/dist/cli/search.js +0 -189
  269. package/dist/cli/search.js.map +0 -1
  270. package/dist/cli/tool-args.d.ts +0 -2
  271. package/dist/cli/tool-args.d.ts.map +0 -1
  272. package/dist/cli/tool-args.js +0 -39
  273. package/dist/cli/tool-args.js.map +0 -1
  274. package/dist/cli/tools.d.ts +0 -36
  275. package/dist/cli/tools.d.ts.map +0 -1
  276. package/dist/cli/tools.js +0 -229
  277. package/dist/cli/tools.js.map +0 -1
  278. package/dist/cli/tui/index.d.ts +0 -22
  279. package/dist/cli/tui/index.d.ts.map +0 -1
  280. package/dist/cli/tui/index.js +0 -29
  281. package/dist/cli/tui/index.js.map +0 -1
  282. package/dist/cli/tui.d.ts +0 -167
  283. package/dist/cli/tui.d.ts.map +0 -1
  284. package/dist/cli/tui.js +0 -5228
  285. package/dist/cli/tui.js.map +0 -1
  286. package/dist/compiler_prompt.d.ts +0 -20
  287. package/dist/compiler_prompt.d.ts.map +0 -1
  288. package/dist/compiler_prompt.js +0 -870
  289. package/dist/compiler_prompt.js.map +0 -1
  290. package/dist/deepclause-cli.skill +0 -0
  291. package/dist/prolog-src/deepclause_mi.pl.bak +0 -570
  292. package/dist/system/assets/docs/CONDUCTOR_PROMPT.md +0 -105
  293. package/dist/system/assets/docs/DML_COMPILER_PROMPT.md +0 -700
  294. package/dist/system/assets/docs/TUI.md +0 -150
  295. package/dist/system/assets/recipes/deepclause-coding-workflow/SKILL.md +0 -100
  296. package/dist/system/assets/skills/conductor.dml +0 -76
  297. package/dist/system/assets/skills/deep-planner.dml +0 -412
  298. package/dist/system/assets/skills/plan.dml +0 -429
  299. package/dist/system/assets/skills/security-planner.dml +0 -337
  300. package/dist/system/assets/skills/skill-creator.dml +0 -187
  301. package/dist/system/runtime/catalog-recipes.d.ts +0 -24
  302. package/dist/system/runtime/catalog-recipes.d.ts.map +0 -1
  303. package/dist/system/runtime/catalog-recipes.js +0 -273
  304. package/dist/system/runtime/catalog-recipes.js.map +0 -1
  305. package/dist/system/runtime/catalog-skills.d.ts +0 -50
  306. package/dist/system/runtime/catalog-skills.d.ts.map +0 -1
  307. package/dist/system/runtime/catalog-skills.js +0 -152
  308. package/dist/system/runtime/catalog-skills.js.map +0 -1
  309. package/dist/system/runtime/conductor.d.ts +0 -105
  310. package/dist/system/runtime/conductor.d.ts.map +0 -1
  311. package/dist/system/runtime/conductor.js +0 -732
  312. package/dist/system/runtime/conductor.js.map +0 -1
  313. package/dist/system/runtime/console-capture.d.ts +0 -9
  314. package/dist/system/runtime/console-capture.d.ts.map +0 -1
  315. package/dist/system/runtime/console-capture.js +0 -67
  316. package/dist/system/runtime/console-capture.js.map +0 -1
  317. package/dist/system/runtime/dml-executor.d.ts +0 -52
  318. package/dist/system/runtime/dml-executor.d.ts.map +0 -1
  319. package/dist/system/runtime/dml-executor.js +0 -203
  320. package/dist/system/runtime/dml-executor.js.map +0 -1
  321. package/dist/system/runtime/runtime-tools.d.ts +0 -31
  322. package/dist/system/runtime/runtime-tools.d.ts.map +0 -1
  323. package/dist/system/runtime/runtime-tools.js +0 -312
  324. package/dist/system/runtime/runtime-tools.js.map +0 -1
  325. package/dist/system/runtime/skill-creator.d.ts +0 -38
  326. package/dist/system/runtime/skill-creator.d.ts.map +0 -1
  327. package/dist/system/runtime/skill-creator.js +0 -763
  328. package/dist/system/runtime/skill-creator.js.map +0 -1
  329. package/src/prolog-src/deepclause_mi.pl.bak +0 -570
@@ -0,0 +1,90 @@
1
+ /**
2
+ * The REPL authoring agent.
3
+ *
4
+ * This is a normal TypeScript agent loop over the injected `LLMBackend`: a
5
+ * system prompt plus harness tools. It replaces the old DML `task_named` meta
6
+ * frame for authoring, so the runtime's frame machinery is only used for
7
+ * DML-internal `task/N` calls.
8
+ */
9
+ import type { DMLEvent, LLMBackend, MemoryMessage, ToolDefinition } from '../types.js';
10
+ import { type CompactionSettings, type CompactMemoryResult } from './compaction.js';
11
+ import { type ModelCatalogEntry } from './model-resolver.js';
12
+ export interface HarnessAgentOptions {
13
+ tools: Map<string, ToolDefinition>;
14
+ llmBackend: LLMBackend;
15
+ model: string;
16
+ temperature?: number;
17
+ maxTokens?: number;
18
+ streaming?: boolean;
19
+ /** Maximum model calls for one `run` (0 = unlimited). */
20
+ maxModelCalls?: number;
21
+ /**
22
+ * Ask the human a question mid-turn (used to ask whether to extend the
23
+ * model-call budget). Returns undefined when there is no interactive channel.
24
+ */
25
+ askInput?: (prompt: string, options?: string[]) => Promise<string | undefined>;
26
+ contextWindow?: number;
27
+ compaction?: {
28
+ settings: CompactionSettings;
29
+ auto: boolean;
30
+ };
31
+ /** Workspace root, so a `.deepclause/system/AGENT_PROMPT.md` override is used. */
32
+ workspacePath?: string;
33
+ /** The session's active model (`provider:model`), shown to the agent. */
34
+ currentModel?: string;
35
+ /** Models available this session (via `with_model/2`). */
36
+ modelCatalog?: ModelCatalogEntry[];
37
+ /** Pre-loaded documentation for the `reference` tool (handled by the controller). */
38
+ knownMessages?: MemoryMessage[];
39
+ }
40
+ export interface HarnessAgentRunOptions {
41
+ signal?: AbortSignal;
42
+ }
43
+ /** Generate the `TOOLS` section of the system prompt from the tool schemas. */
44
+ export declare function describeTools(tools: Map<string, ToolDefinition>): string;
45
+ /**
46
+ * Build the authoring agent's system prompt from the single bundled prompt file
47
+ * (or a `.deepclause/system/AGENT_PROMPT.md` override). The file is used as-is —
48
+ * no template substitution — plus the workspace `AGENTS.md` when present.
49
+ */
50
+ export declare function buildAgentSystemPrompt(options?: {
51
+ workspacePath?: string;
52
+ currentModel?: string;
53
+ modelCatalog?: ModelCatalogEntry[];
54
+ }): Promise<string>;
55
+ /**
56
+ * A multi-turn authoring agent. `run` yields `DMLEvent`s (streaming text,
57
+ * reasoning, tool calls, usage, errors) and follows the tool loop until the
58
+ * model calls `finish` or the budget runs out.
59
+ */
60
+ export declare class HarnessAgent {
61
+ readonly tools: Map<string, ToolDefinition>;
62
+ private readonly options;
63
+ private messages;
64
+ /** User messages delivered while a turn is running (pi-style steering). */
65
+ private readonly pendingSteers;
66
+ /** Aborts the in-flight model call when a steer arrives so it is seen now. */
67
+ private steerAbort?;
68
+ constructor(options: HarnessAgentOptions);
69
+ /** The persisted conversation (real user/assistant turns only, no host nudges). */
70
+ getMessages(): MemoryMessage[];
71
+ /**
72
+ * Deliver a message into the running turn (pi-style steering). It is queued
73
+ * and injected before the next model call; when a model call is in flight it
74
+ * is aborted so the steer is seen immediately.
75
+ */
76
+ steer(text: string): void;
77
+ /**
78
+ * Compact the agent's own conversation. `force` ignores the threshold (used by
79
+ * the manual `compact.` command); the loop hook checks the threshold itself.
80
+ */
81
+ compactMemory(force?: boolean, signal?: AbortSignal, customInstructions?: string): Promise<CompactMemoryResult>;
82
+ /**
83
+ * Ask the human whether to continue after the model-call budget is exhausted.
84
+ * Returns false when there is no interactive channel (autonomous runs keep the
85
+ * current abort behaviour).
86
+ */
87
+ private askBudgetExtension;
88
+ run(request: string, options?: HarnessAgentRunOptions): AsyncGenerator<DMLEvent>;
89
+ }
90
+ //# sourceMappingURL=agent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../src/repl/agent.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,KAAK,EACV,QAAQ,EACR,UAAU,EAIV,aAAa,EACb,cAAc,EACf,MAAM,aAAa,CAAC;AACrB,OAAO,EAAgC,KAAK,kBAAkB,EAAE,KAAK,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAClH,OAAO,EAA2B,KAAK,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAEtF,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IACnC,UAAU,EAAE,UAAU,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,yDAAyD;IACzD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;OAGG;IACH,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IAC/E,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE;QAAE,QAAQ,EAAE,kBAAkB,CAAC;QAAC,IAAI,EAAE,OAAO,CAAA;KAAE,CAAC;IAC7D,kFAAkF;IAClF,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,yEAAyE;IACzE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,0DAA0D;IAC1D,YAAY,CAAC,EAAE,iBAAiB,EAAE,CAAC;IACnC,qFAAqF;IACrF,aAAa,CAAC,EAAE,aAAa,EAAE,CAAC;CACjC;AAED,MAAM,WAAW,sBAAsB;IACrC,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAID,+EAA+E;AAC/E,wBAAgB,aAAa,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,GAAG,MAAM,CAWxE;AAED;;;;GAIG;AACH,wBAAsB,sBAAsB,CAAC,OAAO,GAAE;IACpD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,iBAAiB,EAAE,CAAC;CAC/B,GAAG,OAAO,CAAC,MAAM,CAAC,CA4BvB;AAqDD;;;;GAIG;AACH,qBAAa,YAAY;IACvB,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IAC5C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAsB;IAC9C,OAAO,CAAC,QAAQ,CAAsB;IACtC,2EAA2E;IAC3E,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAgB;IAC9C,8EAA8E;IAC9E,OAAO,CAAC,UAAU,CAAC,CAAkB;gBAEzB,OAAO,EAAE,mBAAmB;IAWxC,mFAAmF;IACnF,WAAW,IAAI,aAAa,EAAE;IAQ9B;;;;OAIG;IACH,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAOzB;;;OAGG;IACG,aAAa,CAAC,KAAK,UAAQ,EAAE,MAAM,CAAC,EAAE,WAAW,EAAE,kBAAkB,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAqBnH;;;;OAIG;YACW,kBAAkB;IAgBzB,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,sBAA2B,GAAG,cAAc,CAAC,QAAQ,CAAC;CAuN5F"}
@@ -0,0 +1,410 @@
1
+ /**
2
+ * The REPL authoring agent.
3
+ *
4
+ * This is a normal TypeScript agent loop over the injected `LLMBackend`: a
5
+ * system prompt plus harness tools. It replaces the old DML `task_named` meta
6
+ * frame for authoring, so the runtime's frame machinery is only used for
7
+ * DML-internal `task/N` calls.
8
+ */
9
+ import { readAgentPromptAsset } from '../system/assets/index.js';
10
+ import { loadProjectContext } from './project-context.js';
11
+ import { compactMemory, shouldCompact } from './compaction.js';
12
+ import { formatModelCatalogEntry } from './model-resolver.js';
13
+ const MAX_TOOL_RESULT_CHARS = 8000;
14
+ /** Generate the `TOOLS` section of the system prompt from the tool schemas. */
15
+ export function describeTools(tools) {
16
+ const lines = [];
17
+ for (const [name, tool] of tools) {
18
+ const properties = (tool.parameters.properties ?? {});
19
+ const required = new Set(tool.parameters.required ?? []);
20
+ const params = Object.entries(properties)
21
+ .map(([param, schema]) => `${param}${required.has(param) ? '' : '?'}: ${schema.type ?? 'any'}`)
22
+ .join(', ');
23
+ lines.push(`- ${name}(${params}): ${tool.description}`);
24
+ }
25
+ return lines.join('\n');
26
+ }
27
+ /**
28
+ * Build the authoring agent's system prompt from the single bundled prompt file
29
+ * (or a `.deepclause/system/AGENT_PROMPT.md` override). The file is used as-is —
30
+ * no template substitution — plus the workspace `AGENTS.md` when present.
31
+ */
32
+ export async function buildAgentSystemPrompt(options = {}) {
33
+ let prompt = '';
34
+ try {
35
+ prompt = await readAgentPromptAsset({ workspacePath: options.workspacePath });
36
+ }
37
+ catch {
38
+ prompt = 'You are an agent with access to a DML REPL.';
39
+ }
40
+ // The models this session can switch to with `with_model/2`, with catalog prices.
41
+ const catalog = options.modelCatalog ?? [];
42
+ if (options.currentModel || catalog.length > 0) {
43
+ const shown = catalog.slice(0, 60).map(formatModelCatalogEntry);
44
+ prompt += [
45
+ '',
46
+ 'AVAILABLE MODELS (price = USD per 1M tokens, input/output)',
47
+ options.currentModel ? `- current: ${options.currentModel}` : '',
48
+ shown.length > 0 ? `- with_model targets: ${shown.join(', ')}${catalog.length > shown.length ? ', …' : ''}` : '',
49
+ '- Pick the cheapest model that can do the job; use `with_model/2` to route calls.',
50
+ '- Other models may be configured with `deepclause login`; a `with_model` spec must name one of these.',
51
+ ].filter(Boolean).join('\n') + '\n';
52
+ }
53
+ // Append a workspace `AGENTS.md` so repo-specific rules always apply.
54
+ const project = await loadProjectContext(options.workspacePath);
55
+ if (project) {
56
+ prompt += `\n\nPROJECT INSTRUCTIONS (AGENTS.md)\n${project.content}\n`;
57
+ }
58
+ return prompt;
59
+ }
60
+ /** Project the agent's message list onto `MemoryMessage[]` for compaction. */
61
+ function toMemoryMessages(messages) {
62
+ const out = [];
63
+ for (const message of messages) {
64
+ if (message.role === 'system') {
65
+ out.push({ role: 'system', content: message.content });
66
+ }
67
+ else if (message.role === 'user') {
68
+ out.push({ role: 'user', content: message.content });
69
+ }
70
+ else if (message.role === 'assistant') {
71
+ const calls = (message.toolCalls ?? [])
72
+ .map((call) => `${call.name}(${JSON.stringify(call.arguments)})`)
73
+ .join(', ');
74
+ out.push({ role: 'assistant', content: calls ? `${message.content}\n[tool calls: ${calls}]` : message.content });
75
+ }
76
+ else {
77
+ out.push({ role: 'user', content: `[tool result: ${message.toolName ?? 'tool'}] ${message.content}` });
78
+ }
79
+ }
80
+ return out;
81
+ }
82
+ function fromMemoryMessages(messages) {
83
+ return messages.map((message) => ({ role: message.role, content: message.content }));
84
+ }
85
+ function stringifyToolResult(result) {
86
+ let text;
87
+ if (typeof result === 'string') {
88
+ text = result;
89
+ }
90
+ else {
91
+ try {
92
+ text = JSON.stringify(result);
93
+ }
94
+ catch {
95
+ text = String(result);
96
+ }
97
+ }
98
+ return text.length > MAX_TOOL_RESULT_CHARS
99
+ ? `${text.slice(0, MAX_TOOL_RESULT_CHARS)}\n… [truncated]`
100
+ : text;
101
+ }
102
+ /** A tool that returned `{ ok: false }` or `{ error }` should render as failed. */
103
+ function toolResultFailure(result) {
104
+ if (!result || typeof result !== 'object')
105
+ return undefined;
106
+ const record = result;
107
+ if (record.ok === false) {
108
+ return typeof record.error === 'string' && record.error ? record.error : 'failed';
109
+ }
110
+ if (typeof record.error === 'string' && record.error)
111
+ return record.error;
112
+ return undefined;
113
+ }
114
+ /**
115
+ * A multi-turn authoring agent. `run` yields `DMLEvent`s (streaming text,
116
+ * reasoning, tool calls, usage, errors) and follows the tool loop until the
117
+ * model calls `finish` or the budget runs out.
118
+ */
119
+ export class HarnessAgent {
120
+ tools;
121
+ options;
122
+ messages;
123
+ /** User messages delivered while a turn is running (pi-style steering). */
124
+ pendingSteers = [];
125
+ /** Aborts the in-flight model call when a steer arrives so it is seen now. */
126
+ steerAbort;
127
+ constructor(options) {
128
+ this.options = options;
129
+ this.tools = options.tools;
130
+ this.messages = options.knownMessages
131
+ ? options.knownMessages
132
+ // Defensively drop any older host nudge persisted as a user message.
133
+ .filter((message) => message.content.trim() !== 'Continue: call a tool, or call finish when done.')
134
+ .map((message) => ({ role: message.role, content: message.content }))
135
+ : [];
136
+ }
137
+ /** The persisted conversation (real user/assistant turns only, no host nudges). */
138
+ getMessages() {
139
+ return this.messages
140
+ .filter((message) => message.role === 'system' || message.role === 'user' || message.role === 'assistant')
141
+ // Drop assistant turns that only carry tool calls (empty text).
142
+ .filter((message) => message.role !== 'assistant' || (message.content ?? '').trim() !== '')
143
+ .map((message) => ({ role: message.role, content: message.content }));
144
+ }
145
+ /**
146
+ * Deliver a message into the running turn (pi-style steering). It is queued
147
+ * and injected before the next model call; when a model call is in flight it
148
+ * is aborted so the steer is seen immediately.
149
+ */
150
+ steer(text) {
151
+ const trimmed = text.trim();
152
+ if (!trimmed)
153
+ return;
154
+ this.pendingSteers.push(trimmed);
155
+ this.steerAbort?.abort();
156
+ }
157
+ /**
158
+ * Compact the agent's own conversation. `force` ignores the threshold (used by
159
+ * the manual `compact.` command); the loop hook checks the threshold itself.
160
+ */
161
+ async compactMemory(force = false, signal, customInstructions) {
162
+ const settings = this.options.compaction?.settings;
163
+ if (!settings?.enabled) {
164
+ return { applied: false, reason: 'disabled', messages: this.getMessages(), tokensBefore: 0, tokensAfter: 0 };
165
+ }
166
+ const result = await compactMemory({
167
+ messages: toMemoryMessages(this.messages),
168
+ backend: this.options.llmBackend,
169
+ model: this.options.model,
170
+ contextWindow: this.options.contextWindow,
171
+ settings,
172
+ signal,
173
+ customInstructions,
174
+ force,
175
+ });
176
+ if (result.applied) {
177
+ this.messages = fromMemoryMessages(result.messages);
178
+ }
179
+ return result;
180
+ }
181
+ /**
182
+ * Ask the human whether to continue after the model-call budget is exhausted.
183
+ * Returns false when there is no interactive channel (autonomous runs keep the
184
+ * current abort behaviour).
185
+ */
186
+ async askBudgetExtension(used) {
187
+ const ask = this.options.askInput;
188
+ if (!ask) {
189
+ return false;
190
+ }
191
+ const perChunk = this.options.maxModelCalls ?? 0;
192
+ const answer = await ask(`The authoring turn has reached its model-call budget (${used} calls).\n`
193
+ + `Continue for another ${perChunk} calls? [yes/no]\n`
194
+ + 'change the limit: repl.maxModelCalls in .deepclause/config.json '
195
+ + '("repl": { "maxModelCalls": N }), or pass --max-model-calls N; 0 means unlimited', ['yes', 'no']);
196
+ return /^(y|yes)$/i.test((answer ?? '').trim());
197
+ }
198
+ async *run(request, options = {}) {
199
+ const { llmBackend, tools } = this.options;
200
+ const streaming = this.options.streaming ?? true;
201
+ const maxModelCalls = this.options.maxModelCalls ?? 0;
202
+ const settings = this.options.compaction?.settings;
203
+ const autoCompact = this.options.compaction?.auto ?? false;
204
+ const systemPrompt = await buildAgentSystemPrompt({
205
+ workspacePath: this.options.workspacePath,
206
+ currentModel: this.options.currentModel,
207
+ modelCatalog: this.options.modelCatalog,
208
+ });
209
+ this.messages.push({ role: 'user', content: request });
210
+ const backendTools = [...tools].map(([name, tool]) => ({
211
+ name,
212
+ description: tool.description,
213
+ parameters: tool.parameters,
214
+ }));
215
+ let calls = 0;
216
+ // The model-call budget for this turn; `0` means unlimited. It grows by
217
+ // `maxModelCalls` each time the human agrees to continue.
218
+ let budget = maxModelCalls;
219
+ let finished = false;
220
+ let lastText = '';
221
+ let lastInputTokens;
222
+ const maxIterations = 1000;
223
+ while (!finished && calls < maxIterations) {
224
+ if (options.signal?.aborted)
225
+ break;
226
+ if (budget > 0 && calls >= budget) {
227
+ const extend = await this.askBudgetExtension(budget);
228
+ if (!extend) {
229
+ yield {
230
+ type: 'error',
231
+ content: `authoring turn stopped: model-call budget exhausted (${budget} calls). `
232
+ + 'Raise repl.maxModelCalls in .deepclause/config.json (or pass --max-model-calls); 0 = unlimited.',
233
+ };
234
+ break;
235
+ }
236
+ budget += maxModelCalls;
237
+ }
238
+ calls += 1;
239
+ // Inject any steering messages submitted during the previous iteration.
240
+ while (this.pendingSteers.length > 0) {
241
+ this.messages.push({ role: 'user', content: this.pendingSteers.shift() });
242
+ }
243
+ if (autoCompact && settings?.enabled && this.options.contextWindow) {
244
+ if (shouldCompact(lastInputTokens ?? 0, this.options.contextWindow, settings)) {
245
+ const result = await this.compactMemory(true, options.signal);
246
+ if (result.applied) {
247
+ yield {
248
+ type: 'memory_compaction',
249
+ content: `compact agent.before_model_call applied ${result.tokensBefore} -> ${result.tokensAfter} tokens`,
250
+ compactionScope: 'session',
251
+ compactionTrigger: 'before_model_call',
252
+ compactionAction: 'applied',
253
+ beforeTokens: result.tokensBefore,
254
+ afterTokens: result.tokensAfter,
255
+ };
256
+ }
257
+ }
258
+ }
259
+ yield { type: 'model_call', modelCallState: 'started', modelId: this.options.model };
260
+ // Stream deltas live via a queue while the (single) backend call runs.
261
+ const streamQueue = [];
262
+ let wake = null;
263
+ let settled = false;
264
+ let response;
265
+ let failure;
266
+ const push = (event) => {
267
+ streamQueue.push(event);
268
+ if (wake) {
269
+ const resolve = wake;
270
+ wake = null;
271
+ resolve();
272
+ }
273
+ };
274
+ const requestMessages = [
275
+ { role: 'system', content: systemPrompt },
276
+ ...this.messages,
277
+ ];
278
+ this.steerAbort = new AbortController();
279
+ const callSignal = options.signal
280
+ ? AbortSignal.any([options.signal, this.steerAbort.signal])
281
+ : this.steerAbort.signal;
282
+ const completion = llmBackend.complete({
283
+ messages: requestMessages,
284
+ tools: backendTools,
285
+ temperature: this.options.temperature,
286
+ maxTokens: this.options.maxTokens,
287
+ signal: callSignal,
288
+ onText: streaming ? (chunk) => push({ type: 'stream', content: chunk }) : undefined,
289
+ onReasoning: streaming ? (chunk) => push({ type: 'reasoning', content: chunk }) : undefined,
290
+ }).then((value) => { response = value; settled = true; if (wake) {
291
+ const r = wake;
292
+ wake = null;
293
+ r();
294
+ } }, (error) => { failure = error; settled = true; if (wake) {
295
+ const r = wake;
296
+ wake = null;
297
+ r();
298
+ } });
299
+ while (true) {
300
+ while (streamQueue.length > 0)
301
+ yield streamQueue.shift();
302
+ if (settled)
303
+ break;
304
+ await new Promise((resolve) => { wake = resolve; });
305
+ }
306
+ while (streamQueue.length > 0)
307
+ yield streamQueue.shift();
308
+ await completion;
309
+ if (failure || !response) {
310
+ const steered = Boolean(this.steerAbort?.signal.aborted) && !options.signal?.aborted;
311
+ this.steerAbort = undefined;
312
+ if (steered && this.pendingSteers.length > 0) {
313
+ // A steer interrupted this call; re-run with the queued message.
314
+ continue;
315
+ }
316
+ yield { type: 'model_call', modelCallState: 'failed', modelId: this.options.model };
317
+ yield { type: 'error', content: failure instanceof Error ? failure.message : String(failure) };
318
+ return;
319
+ }
320
+ this.steerAbort = undefined;
321
+ yield { type: 'model_call', modelCallState: 'completed', modelId: this.options.model };
322
+ if (response.usage) {
323
+ lastInputTokens = (response.usage.inputTokens ?? 0)
324
+ + (response.usage.cacheReadTokens ?? 0)
325
+ + (response.usage.cacheWriteTokens ?? 0);
326
+ yield { type: 'usage', usage: response.usage, usageSource: 'llm', usageModel: this.options.model };
327
+ }
328
+ if (response.text) {
329
+ lastText = response.text;
330
+ }
331
+ const toolCalls = response.toolCalls ?? [];
332
+ this.messages.push({
333
+ role: 'assistant',
334
+ content: response.text,
335
+ toolCalls,
336
+ providerData: response.providerData,
337
+ });
338
+ if (toolCalls.length === 0) {
339
+ // No tool call: the model answered directly or stopped; end the turn.
340
+ finished = true;
341
+ break;
342
+ }
343
+ for (const call of toolCalls) {
344
+ yield { type: 'tool_call', toolName: call.name, toolArgs: call.arguments, toolState: 'starting' };
345
+ // `finish` is not offered to the model any more; a turn ends when the
346
+ // model replies without tool calls. Tolerate a stray `finish` (older
347
+ // transcripts, tests) as an explicit stop.
348
+ if (call.name === 'finish') {
349
+ finished = true;
350
+ yield { type: 'tool_call', toolName: 'finish', toolArgs: call.arguments, toolState: 'completed', toolSummary: 'done' };
351
+ this.messages.push({ role: 'tool', content: '{"finished":true}', toolCallId: call.id, toolName: 'finish' });
352
+ break;
353
+ }
354
+ const tool = tools.get(call.name);
355
+ if (!tool) {
356
+ const message = `Tool not found: ${call.name}`;
357
+ yield { type: 'tool_call', toolName: call.name, toolState: 'failed', toolError: message };
358
+ this.messages.push({ role: 'tool', content: JSON.stringify({ error: message }), toolCallId: call.id, toolName: call.name });
359
+ continue;
360
+ }
361
+ let result;
362
+ let toolFailure;
363
+ let toolSettled = false;
364
+ const toolEvents = [];
365
+ let toolWake = null;
366
+ const wakeTool = () => {
367
+ if (toolWake) {
368
+ const resolve = toolWake;
369
+ toolWake = null;
370
+ resolve();
371
+ }
372
+ };
373
+ const toolStartedAt = Date.now();
374
+ const toolPromise = tool.execute(call.arguments, {
375
+ signal: options.signal,
376
+ onEvent: (event) => { toolEvents.push(event); wakeTool(); },
377
+ }).then((value) => { result = value; toolSettled = true; wakeTool(); }, (error) => { toolFailure = error; toolSettled = true; wakeTool(); });
378
+ // Stream events the tool produces (e.g. an `execute` child frame) live.
379
+ while (true) {
380
+ while (toolEvents.length > 0)
381
+ yield toolEvents.shift();
382
+ if (toolSettled)
383
+ break;
384
+ await new Promise((resolve) => { toolWake = resolve; });
385
+ }
386
+ while (toolEvents.length > 0)
387
+ yield toolEvents.shift();
388
+ await toolPromise;
389
+ const failureMessage = toolFailure
390
+ ? (toolFailure instanceof Error ? toolFailure.message : String(toolFailure))
391
+ : toolResultFailure(result);
392
+ const text = stringifyToolResult(failureMessage ? { error: failureMessage } : result);
393
+ if (failureMessage) {
394
+ yield { type: 'tool_call', toolName: call.name, toolArgs: call.arguments, toolState: 'failed', toolError: text.slice(0, 200), toolDurationMs: Date.now() - toolStartedAt };
395
+ }
396
+ else {
397
+ yield { type: 'tool_call', toolName: call.name, toolArgs: call.arguments, toolState: 'completed', toolSummary: text.slice(0, 200), toolDurationMs: Date.now() - toolStartedAt };
398
+ }
399
+ this.messages.push({ role: 'tool', content: text, toolCallId: call.id, toolName: call.name });
400
+ }
401
+ }
402
+ if (!finished && !options.signal?.aborted) {
403
+ yield { type: 'log', content: 'authoring agent reached its iteration limit without finishing' };
404
+ }
405
+ if (!streaming && lastText) {
406
+ yield { type: 'output', content: lastText };
407
+ }
408
+ }
409
+ }
410
+ //# sourceMappingURL=agent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent.js","sourceRoot":"","sources":["../../src/repl/agent.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,45 @@
1
+ /**
2
+ * pi login/logout, ported to a plain terminal.
3
+ *
4
+ * This is the headless equivalent of pi's `/login`: enumerate providers with
5
+ * their auth methods and configured status, run `runtime.login(provider, type,
6
+ * interaction)` (which persists the credential), and render the auth
7
+ * events (`auth_url`, `device_code`, `progress`, `info`) that the flow emits.
8
+ *
9
+ * The interaction is a superset of pi-ai's `AuthInteraction`; the shapes are
10
+ * re-declared structurally so this module does not depend on pi-ai types.
11
+ */
12
+ import type { PiAuthInteractionLike, PiRuntimeHandle } from './backend.js';
13
+ export interface LoginProviderOption {
14
+ id: string;
15
+ name: string;
16
+ authType: 'oauth' | 'api_key';
17
+ configured: boolean;
18
+ source?: string;
19
+ /** OAuth backed by a provider subscription rather than a direct account. */
20
+ subscription: boolean;
21
+ }
22
+ /** Port of pi's login dialog to a plain terminal (readline + stdout). */
23
+ export declare function createTerminalAuthInteraction(): PiAuthInteractionLike;
24
+ /** Interaction that answers every prompt with a fixed API key. */
25
+ export declare function apiKeyInteraction(apiKey: string): PiAuthInteractionLike;
26
+ /**
27
+ * Providers that support login, one entry per auth method (mirrors pi's
28
+ * `getLoginProviderOptions`).
29
+ */
30
+ export declare function listLoginProviders(handle: PiRuntimeHandle, options?: {
31
+ authType?: 'oauth' | 'api_key';
32
+ }): LoginProviderOption[];
33
+ /**
34
+ * Run pi's login for a provider. `type` selects the auth method when a provider
35
+ * offers both; otherwise the only available method is used. `apiKey` short-
36
+ * circuits the interaction.
37
+ */
38
+ export declare function loginToProvider(handle: PiRuntimeHandle, providerId: string, options: {
39
+ interaction: PiAuthInteractionLike;
40
+ type?: 'api_key' | 'oauth';
41
+ apiKey?: string;
42
+ }): Promise<void>;
43
+ /** Remove a stored credential (pi `/logout`). */
44
+ export declare function logoutProvider(handle: PiRuntimeHandle, providerId: string): Promise<void>;
45
+ //# sourceMappingURL=auth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/repl/auth.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,OAAO,KAAK,EAEV,qBAAqB,EACrB,eAAe,EAChB,MAAM,cAAc,CAAC;AAEtB,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,OAAO,GAAG,SAAS,CAAC;IAC9B,UAAU,EAAE,OAAO,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,4EAA4E;IAC5E,YAAY,EAAE,OAAO,CAAC;CACvB;AA0BD,yEAAyE;AACzE,wBAAgB,6BAA6B,IAAI,qBAAqB,CAqBrE;AAED,kEAAkE;AAClE,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,qBAAqB,CAOvE;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,eAAe,EACvB,OAAO,GAAE;IAAE,QAAQ,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;CAAO,GAC/C,mBAAmB,EAAE,CAiBvB;AAED;;;;GAIG;AACH,wBAAsB,eAAe,CACnC,MAAM,EAAE,eAAe,EACvB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE;IAAE,WAAW,EAAE,qBAAqB,CAAC;IAAC,IAAI,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GAC3F,OAAO,CAAC,IAAI,CAAC,CAaf;AAED,iDAAiD;AACjD,wBAAsB,cAAc,CAAC,MAAM,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE/F"}