chivgent 1.0.1 → 1.1.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 (136) hide show
  1. package/README.md +102 -131
  2. package/README.zh-CN.md +97 -824
  3. package/dist/agent.d.ts +16 -1
  4. package/dist/agent.d.ts.map +1 -1
  5. package/dist/agent.js +95 -43
  6. package/dist/agent.js.map +1 -1
  7. package/dist/auth/oauth.d.ts +51 -0
  8. package/dist/auth/oauth.d.ts.map +1 -0
  9. package/dist/auth/oauth.js +444 -0
  10. package/dist/auth/oauth.js.map +1 -0
  11. package/dist/cli-options.d.ts +8 -5
  12. package/dist/cli-options.d.ts.map +1 -1
  13. package/dist/cli-options.js +36 -3
  14. package/dist/cli-options.js.map +1 -1
  15. package/dist/cli-runtime.d.ts +9 -0
  16. package/dist/cli-runtime.d.ts.map +1 -1
  17. package/dist/cli-runtime.js +32 -6
  18. package/dist/cli-runtime.js.map +1 -1
  19. package/dist/cli.js +57 -10
  20. package/dist/cli.js.map +1 -1
  21. package/dist/context/context-manager.d.ts +21 -0
  22. package/dist/context/context-manager.d.ts.map +1 -1
  23. package/dist/context/context-manager.js +199 -35
  24. package/dist/context/context-manager.js.map +1 -1
  25. package/dist/evals/tools.d.ts.map +1 -1
  26. package/dist/evals/tools.js +4 -2
  27. package/dist/evals/tools.js.map +1 -1
  28. package/dist/events.d.ts +5 -0
  29. package/dist/events.d.ts.map +1 -1
  30. package/dist/events.js.map +1 -1
  31. package/dist/permissions.d.ts +35 -0
  32. package/dist/permissions.d.ts.map +1 -0
  33. package/dist/permissions.js +89 -0
  34. package/dist/permissions.js.map +1 -0
  35. package/dist/prompts.d.ts +1 -1
  36. package/dist/prompts.d.ts.map +1 -1
  37. package/dist/prompts.js +1 -0
  38. package/dist/prompts.js.map +1 -1
  39. package/dist/providers/client.d.ts +1 -1
  40. package/dist/providers/client.d.ts.map +1 -1
  41. package/dist/providers/client.js +19 -1
  42. package/dist/providers/client.js.map +1 -1
  43. package/dist/providers/definitions.d.ts +2 -0
  44. package/dist/providers/definitions.d.ts.map +1 -1
  45. package/dist/providers/definitions.js +3 -1
  46. package/dist/providers/definitions.js.map +1 -1
  47. package/dist/providers/interactive.d.ts +4 -0
  48. package/dist/providers/interactive.d.ts.map +1 -1
  49. package/dist/providers/interactive.js +86 -2
  50. package/dist/providers/interactive.js.map +1 -1
  51. package/dist/providers/oauth-client.d.ts +14 -0
  52. package/dist/providers/oauth-client.d.ts.map +1 -0
  53. package/dist/providers/oauth-client.js +52 -0
  54. package/dist/providers/oauth-client.js.map +1 -0
  55. package/dist/providers/openai-compatible-chat.d.ts +1 -0
  56. package/dist/providers/openai-compatible-chat.d.ts.map +1 -1
  57. package/dist/providers/openai-compatible-chat.js +1 -0
  58. package/dist/providers/openai-compatible-chat.js.map +1 -1
  59. package/dist/providers/openai.d.ts +3 -0
  60. package/dist/providers/openai.d.ts.map +1 -1
  61. package/dist/providers/openai.js +72 -10
  62. package/dist/providers/openai.js.map +1 -1
  63. package/dist/remote/repl.d.ts.map +1 -1
  64. package/dist/remote/repl.js +9 -0
  65. package/dist/remote/repl.js.map +1 -1
  66. package/dist/repl.d.ts +42 -1
  67. package/dist/repl.d.ts.map +1 -1
  68. package/dist/repl.js +255 -12
  69. package/dist/repl.js.map +1 -1
  70. package/dist/session-store.d.ts +22 -1
  71. package/dist/session-store.d.ts.map +1 -1
  72. package/dist/session-store.js +80 -1
  73. package/dist/session-store.js.map +1 -1
  74. package/dist/session.d.ts +19 -0
  75. package/dist/session.d.ts.map +1 -1
  76. package/dist/session.js +106 -4
  77. package/dist/session.js.map +1 -1
  78. package/dist/shell/approval.d.ts +2 -2
  79. package/dist/shell/approval.d.ts.map +1 -1
  80. package/dist/shell/approval.js +2 -2
  81. package/dist/shell/approval.js.map +1 -1
  82. package/dist/shell/docker.d.ts +2 -0
  83. package/dist/shell/docker.d.ts.map +1 -1
  84. package/dist/shell/docker.js +17 -3
  85. package/dist/shell/docker.js.map +1 -1
  86. package/dist/shell/factory.d.ts +9 -0
  87. package/dist/shell/factory.d.ts.map +1 -0
  88. package/dist/shell/factory.js +13 -0
  89. package/dist/shell/factory.js.map +1 -0
  90. package/dist/shell/local.d.ts +4 -0
  91. package/dist/shell/local.d.ts.map +1 -1
  92. package/dist/shell/local.js +16 -1
  93. package/dist/shell/local.js.map +1 -1
  94. package/dist/shell/native.d.ts +15 -0
  95. package/dist/shell/native.d.ts.map +1 -0
  96. package/dist/shell/native.js +99 -0
  97. package/dist/shell/native.js.map +1 -0
  98. package/dist/shell/types.d.ts +1 -0
  99. package/dist/shell/types.d.ts.map +1 -1
  100. package/dist/tools/bash.d.ts +19 -0
  101. package/dist/tools/bash.d.ts.map +1 -1
  102. package/dist/tools/bash.js +30 -11
  103. package/dist/tools/bash.js.map +1 -1
  104. package/dist/tools/edit-file.d.ts.map +1 -1
  105. package/dist/tools/edit-file.js +1 -1
  106. package/dist/tools/edit-file.js.map +1 -1
  107. package/dist/tools/parallel.d.ts +2 -0
  108. package/dist/tools/parallel.d.ts.map +1 -1
  109. package/dist/tools/parallel.js +8 -0
  110. package/dist/tools/parallel.js.map +1 -1
  111. package/dist/tools/write-file.d.ts.map +1 -1
  112. package/dist/tools/write-file.js +1 -1
  113. package/dist/tools/write-file.js.map +1 -1
  114. package/dist/transcript-hash.d.ts +4 -0
  115. package/dist/transcript-hash.d.ts.map +1 -0
  116. package/dist/transcript-hash.js +6 -0
  117. package/dist/transcript-hash.js.map +1 -0
  118. package/dist/tui/activity.d.ts +1 -1
  119. package/dist/tui/activity.d.ts.map +1 -1
  120. package/dist/tui/activity.js +2 -2
  121. package/dist/tui/activity.js.map +1 -1
  122. package/dist/tui/live.d.ts +2 -0
  123. package/dist/tui/live.d.ts.map +1 -1
  124. package/dist/tui/live.js +5 -0
  125. package/dist/tui/live.js.map +1 -1
  126. package/dist/workspace/paths.d.ts.map +1 -1
  127. package/dist/workspace/paths.js +4 -0
  128. package/dist/workspace/paths.js.map +1 -1
  129. package/dist/workspace/types.d.ts +2 -2
  130. package/dist/workspace/types.d.ts.map +1 -1
  131. package/dist/workspace/types.js.map +1 -1
  132. package/dist/workspace.d.ts +2 -2
  133. package/dist/workspace.d.ts.map +1 -1
  134. package/dist/workspace.js +2 -2
  135. package/dist/workspace.js.map +1 -1
  136. package/package.json +6 -2
@@ -1 +1 @@
1
- {"version":3,"file":"openai.js","sourceRoot":"","sources":["../../src/providers/openai.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"openai.js","sourceRoot":"","sources":["../../src/providers/openai.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"repl.d.ts","sourceRoot":"","sources":["../../src/remote/repl.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAEjD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;IAC/B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,cAAc,CAAC;IACtC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,cAAc,CAAC;IACvC,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;IAC9B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAWD;;;;;;GAMG;AACH,wBAAsB,aAAa,CACjC,OAAO,EAAE,iBAAiB,GACzB,OAAO,CAAC,MAAM,CAAC,CAuFjB"}
1
+ {"version":3,"file":"repl.d.ts","sourceRoot":"","sources":["../../src/remote/repl.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAEjD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;IAC/B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,cAAc,CAAC;IACtC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,cAAc,CAAC;IACvC,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;IAC9B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAiBD;;;;;;GAMG;AACH,wBAAsB,aAAa,CACjC,OAAO,EAAE,iBAAiB,GACzB,OAAO,CAAC,MAAM,CAAC,CAyFjB"}
@@ -4,6 +4,12 @@ const HELP = `Commands:
4
4
  /help Show this help
5
5
  /session Show the served session's id, workspace and capabilities
6
6
  /tools List the tools the server offers
7
+ /compact Unavailable for a remote connection
8
+ /plan Unavailable for a remote connection
9
+ /new Unavailable for a remote connection
10
+ /resume Unavailable for a remote connection
11
+ /rename Unavailable for a remote connection
12
+ /status Unavailable for a remote connection
7
13
  /exit Leave this client (the server keeps running)
8
14
 
9
15
  Anything else is sent to the server. Ctrl+C interrupts a running answer; at the prompt it detaches.
@@ -71,6 +77,9 @@ export async function runRemoteRepl(options) {
71
77
  else if (command === "/tools") {
72
78
  write(`${options.remote.toolNames.map((name) => ` ${name}`).join("\n")}\n`);
73
79
  }
80
+ else if (["/compact", "/plan", "/new", "/resume", "/rename", "/status"].includes(command ?? "")) {
81
+ write(`${command} is unavailable over a remote connection. The command was not sent to the server.\n`);
82
+ }
74
83
  else {
75
84
  write(`Unknown command: ${trimmed}. Try /help.\n`);
76
85
  }
@@ -1 +1 @@
1
- {"version":3,"file":"repl.js","sourceRoot":"","sources":["../../src/remote/repl.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"repl.js","sourceRoot":"","sources":["../../src/remote/repl.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAEhD,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAWzC,MAAM,IAAI,GAAG;;;;;;;;;;;;;CAaZ,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,OAA0B;IAE1B,MAAM,KAAK,GAAG,CAAC,IAAY,EAAQ,EAAE;QACnC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC,CAAC;IACF,MAAM,QAAQ,GAAG,eAAe,CAAC;QAC/B,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,QAAQ,EAAE,IAAI;QACd,MAAM,EAAE,WAAW;KACpB,CAAC,CAAC;IAEH,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,IAAI,WAAW,GAAG,KAAK,CAAC;IACxB,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE;QACzB,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,WAAW,GAAG,IAAI,CAAC;YACnB,QAAQ,CAAC,KAAK,EAAE,CAAC;YACjB,OAAO;QACT,CAAC;QACD,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;IAC7B,CAAC,CAAC,CAAC;IAEH,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC;IACvC,KAAK,CACH;QACE,eAAe,OAAO,CAAC,EAAE,EAAE;QAC3B,iBAAiB,OAAO,CAAC,GAAG,EAAE;QAC9B,iBAAiB,OAAO,CAAC,YAAY,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;QACnG,sDAAsD;QACtD,EAAE;QACF,EAAE;KACH,CAAC,IAAI,CAAC,IAAI,CAAC,CACb,CAAC;IACF,QAAQ,CAAC,MAAM,EAAE,CAAC;IAElB,IAAI,KAAK,EAAE,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;QAClC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAC5B,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,QAAQ,CAAC,MAAM,EAAE,CAAC;YAClB,SAAS;QACX,CAAC;QAED,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAC5B,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC3C,IAAI,OAAO,KAAK,OAAO,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;gBAC/C,MAAM;YACR,CAAC;YACD,IAAI,OAAO,KAAK,OAAO,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;gBAC5C,KAAK,CAAC,IAAI,CAAC,CAAC;YACd,CAAC;iBAAM,IAAI,OAAO,KAAK,UAAU,EAAE,CAAC;gBAClC,KAAK,CACH;oBACE,iBAAiB,OAAO,CAAC,EAAE,EAAE;oBAC7B,iBAAiB,OAAO,CAAC,GAAG,EAAE;oBAC9B,iBAAiB,OAAO,CAAC,UAAU,EAAE;oBACrC,iBAAiB,OAAO,CAAC,YAAY,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;oBACnG,EAAE;iBACH,CAAC,IAAI,CAAC,IAAI,CAAC,CACb,CAAC;YACJ,CAAC;iBAAM,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;gBAChC,KAAK,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC/E,CAAC;iBAAM,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,OAAO,IAAI,EAAE,CAAC,EAAE,CAAC;gBAClG,KAAK,CAAC,GAAG,OAAO,qFAAqF,CAAC,CAAC;YACzG,CAAC;iBAAM,CAAC;gBACN,KAAK,CAAC,oBAAoB,OAAO,gBAAgB,CAAC,CAAC;YACrD,CAAC;YACD,QAAQ,CAAC,MAAM,EAAE,CAAC;YAClB,SAAS;QACX,CAAC;QAED,OAAO,GAAG,IAAI,CAAC;QACf,IAAI,CAAC;YACH,MAAM,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACvC,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;YACzE,KAAK,CAAC,GAAG,OAAO,IAAI,CAAC,CAAC;YACtB,iEAAiE;YACjE,IAAI,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAC,EAAE,CAAC;gBAC9C,QAAQ,CAAC,KAAK,EAAE,CAAC;gBACjB,OAAO,CAAC,CAAC;YACX,CAAC;QACH,CAAC;gBAAS,CAAC;YACT,OAAO,GAAG,KAAK,CAAC;QAClB,CAAC;QACD,QAAQ,CAAC,MAAM,EAAE,CAAC;IACpB,CAAC;IAED,QAAQ,CAAC,KAAK,EAAE,CAAC;IACjB,OAAO,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/B,CAAC"}
package/dist/repl.d.ts CHANGED
@@ -4,6 +4,7 @@ import type { OutputStream } from "./render.js";
4
4
  import type { RegisteredCommand } from "./extensions/api.js";
5
5
  import type { LiveRegion } from "./tui/live.js";
6
6
  import type { ShellApprovalGate } from "./shell/approval.js";
7
+ import { type PermissionMode, type PermissionPolicy } from "./permissions.js";
7
8
  export declare const REPL_PROMPT = "\u203A ";
8
9
  export type SlashCommandOutcome = "handled" | "exit" | "not-a-command"
9
10
  /** The REPL runs the sign-in flow, which needs to read from the terminal. */
@@ -19,6 +20,23 @@ export type SlashCommandOutcome = "handled" | "exit" | "not-a-command"
19
20
  } | {
20
21
  readonly kind: "endpoint";
21
22
  readonly argument: string;
23
+ } | {
24
+ readonly kind: "compact";
25
+ } | {
26
+ readonly kind: "rename";
27
+ readonly title: string;
28
+ } | {
29
+ readonly kind: "plan";
30
+ readonly enabled: boolean;
31
+ } | {
32
+ readonly kind: "permission-mode";
33
+ readonly mode: PermissionMode;
34
+ } | {
35
+ readonly kind: "new-session";
36
+ readonly title?: string;
37
+ } | {
38
+ readonly kind: "resume-session";
39
+ readonly id?: string;
22
40
  }
23
41
  /** An extension command matched; the REPL runs it, since it may be async. */
24
42
  | {
@@ -37,6 +55,20 @@ export interface SlashCommandContext {
37
55
  readonly providers?: ProviderControl;
38
56
  readonly width?: number;
39
57
  readonly color?: boolean;
58
+ readonly compactionEnabled?: boolean;
59
+ readonly providerName?: string;
60
+ readonly modelName?: string;
61
+ readonly permissions?: readonly string[];
62
+ readonly permissionPolicy?: PermissionPolicy;
63
+ readonly sessionOptions?: {
64
+ readonly list?: () => Promise<readonly {
65
+ readonly id: string;
66
+ readonly title?: string;
67
+ }[]>;
68
+ readonly create?: (title?: string) => Promise<AgentSession>;
69
+ readonly resume?: (id: string) => Promise<AgentSession | undefined>;
70
+ };
71
+ readonly sessionFileForSession?: (session: AgentSession) => string | undefined;
40
72
  }
41
73
  export interface ProviderSelection {
42
74
  readonly ok: boolean;
@@ -61,9 +93,11 @@ export interface SignIn {
61
93
  needsApiKey?(): Promise<boolean>;
62
94
  /** Saves the key and puts it to use, or returns why it could not. */
63
95
  submit(apiKey: string): Promise<string | undefined>;
96
+ oauth?(provider: "openai" | "xai", signal?: AbortSignal): Promise<string | undefined>;
97
+ signOut?(): Promise<string | undefined>;
64
98
  unavailableMessage?(): string;
65
99
  }
66
- export declare const BUILT_IN_COMMANDS: readonly ["help", "session", "tools", "diff", "compose", "editor", "review", "gitdiff", "clear", "exit", "quit", "login", "provider", "model", "endpoint"];
100
+ export declare const BUILT_IN_COMMANDS: readonly ["help", "session", "status", "compact", "plan", "permissions", "new", "resume", "rename", "tools", "diff", "compose", "editor", "review", "gitdiff", "clear", "exit", "quit", "login", "logout", "provider", "model", "endpoint"];
67
101
  /**
68
102
  * Interprets one line of REPL input. Returns `not-a-command` when the line is
69
103
  * an ordinary prompt for the model.
@@ -86,6 +120,13 @@ export interface ReplOptions {
86
120
  readonly extensionCommands?: readonly RegisteredCommand[];
87
121
  readonly signIn?: SignIn;
88
122
  readonly providers?: ProviderControl;
123
+ readonly sessionOptions?: SlashCommandContext["sessionOptions"];
124
+ readonly compactionEnabled?: boolean;
125
+ readonly providerName?: string;
126
+ readonly modelName?: string;
127
+ readonly permissions?: readonly string[];
128
+ readonly permissionPolicy?: PermissionPolicy;
129
+ readonly sessionFileForSession?: SlashCommandContext["sessionFileForSession"];
89
130
  }
90
131
  /**
91
132
  * Reads prompts until the user leaves. Ctrl+C cancels a running answer, keeping
@@ -1 +1 @@
1
- {"version":3,"file":"repl.d.ts","sourceRoot":"","sources":["../src/repl.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"repl.d.ts","sourceRoot":"","sources":["../src/repl.ts"],"names":[],"mappings":"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"}
package/dist/repl.js CHANGED
@@ -9,10 +9,19 @@ import { formatTokens } from "./providers/usage.js";
9
9
  import { approvalPreview, commandReviewable } from "./tui/activity.js";
10
10
  import { terminalWidth } from "./tui/live.js";
11
11
  import { formatDiffPage, mostRecentSuccessfulPatch } from "./tui/diff.js";
12
+ import { describePermissionMode, parsePermissionMode } from "./permissions.js";
13
+ import { HeuristicTokenEstimator } from "./context/token-estimator.js";
12
14
  export const REPL_PROMPT = "› ";
13
15
  export const BUILT_IN_COMMANDS = [
14
16
  "help",
15
17
  "session",
18
+ "status",
19
+ "compact",
20
+ "plan",
21
+ "permissions",
22
+ "new",
23
+ "resume",
24
+ "rename",
16
25
  "tools",
17
26
  "diff",
18
27
  "compose",
@@ -23,6 +32,7 @@ export const BUILT_IN_COMMANDS = [
23
32
  "exit",
24
33
  "quit",
25
34
  "login",
35
+ "logout",
26
36
  "provider",
27
37
  "model",
28
38
  "endpoint",
@@ -30,6 +40,13 @@ export const BUILT_IN_COMMANDS = [
30
40
  const HELP = `Commands:
31
41
  /help Show this help
32
42
  /session Show the current session id, workspace, and size
43
+ /status Show live session, model, permissions, plan state, and usage
44
+ /compact Summarise older history for the model; keeps the full transcript
45
+ /plan [on|off] Toggle restricted read-only Plan Mode
46
+ /permissions [ask-first|workspace|unrestricted] Inspect or change this process's policy
47
+ /new [title] Save this session and start a fresh session
48
+ /resume [id] Switch to a saved session in this workspace
49
+ /rename TITLE Set the current session title
33
50
  /tools List the tools available to the model
34
51
  /diff [N] Review the latest successful apply_patch, page N
35
52
  /compose Write a multi-line prompt (/send to submit, /cancel to discard)
@@ -41,6 +58,8 @@ const HELP = `Commands:
41
58
  /model Show or change the current model: /model MODEL
42
59
  /endpoint Set the URL for an OpenAI-compatible Provider
43
60
  /login Store a key for the current Provider; /login NAME switches first
61
+ /login oauth [openai|xai] Sign in with a subscription
62
+ /logout Sign out of the current OAuth subscription
44
63
  /exit Leave chivgent (Ctrl+C or Ctrl+D also works)
45
64
 
46
65
  Anything else is sent to the model. Ctrl+C stops a running answer; at the prompt it exits.
@@ -73,6 +92,66 @@ export function handleSlashCommand(line, context) {
73
92
  case "/session":
74
93
  context.write(describeSession(context));
75
94
  return "handled";
95
+ case "/status":
96
+ context.write(describeStatus(context));
97
+ return "handled";
98
+ case "/compact":
99
+ return { kind: "compact" };
100
+ case "/rename": {
101
+ const title = trimmed.slice("/rename".length).trim();
102
+ if (!title || title.length > 120 || /[\x00-\x1f\x7f]/.test(title)) {
103
+ context.write("Usage: /rename <title> (1–120 characters, no control characters)\n");
104
+ return "handled";
105
+ }
106
+ return { kind: "rename", title };
107
+ }
108
+ case "/plan": {
109
+ const argument = trimmed.slice("/plan".length).trim().toLowerCase();
110
+ if (argument && argument !== "on" && argument !== "off") {
111
+ context.write("Usage: /plan [on|off]\n");
112
+ }
113
+ else {
114
+ const enabled = argument === "on" ? true : argument === "off" ? false : !context.session.planMode;
115
+ return { kind: "plan", enabled };
116
+ }
117
+ return "handled";
118
+ }
119
+ case "/permissions": {
120
+ const argument = trimmed.slice("/permissions".length).trim().toLowerCase();
121
+ if (context.permissionPolicy === undefined) {
122
+ context.write("Named permission modes are unavailable because this session uses legacy capability flags. Start with --permission-mode to enable them.\n");
123
+ }
124
+ else if (!argument) {
125
+ context.write(`Permission mode: ${context.permissionPolicy.mode}\n${describePermissionMode(context.permissionPolicy.mode)}\nMode changes last for this process and are not restored from saved sessions.\n`);
126
+ }
127
+ else {
128
+ try {
129
+ return { kind: "permission-mode", mode: parsePermissionMode(argument) };
130
+ }
131
+ catch {
132
+ context.write("Usage: /permissions [ask-first|workspace|unrestricted]\n");
133
+ }
134
+ }
135
+ return "handled";
136
+ }
137
+ case "/new":
138
+ if (context.sessionOptions?.create === undefined)
139
+ context.write("/new is unavailable in this session.\n");
140
+ else {
141
+ const title = trimmed.slice("/new".length).trim();
142
+ if (title.length > 120 || /[\x00-\x1f\x7f]/.test(title)) {
143
+ context.write("Usage: /new [title] (title must be at most 120 characters, without control characters)\n");
144
+ return "handled";
145
+ }
146
+ return { kind: "new-session", ...(title ? { title } : {}) };
147
+ }
148
+ return "handled";
149
+ case "/resume":
150
+ if (context.sessionOptions?.resume === undefined)
151
+ context.write("/resume is unavailable in this session.\n");
152
+ else
153
+ return { kind: "resume-session", ...(trimmed.slice("/resume".length).trim() ? { id: trimmed.slice("/resume".length).trim() } : {}) };
154
+ return "handled";
76
155
  case "/tools":
77
156
  context.write(`${context.session.toolNames.map((name) => ` ${name}`).join("\n")}\n`);
78
157
  return "handled";
@@ -143,6 +222,12 @@ export function handleSlashCommand(line, context) {
143
222
  return "handled";
144
223
  }
145
224
  return { kind: "login", providerArgument: trimmed.slice("/login".length).trim() };
225
+ case "/logout":
226
+ if (context.signIn?.signOut === undefined) {
227
+ context.write("OAuth sign-out is unavailable in this session.\n");
228
+ return "handled";
229
+ }
230
+ return { kind: "login", providerArgument: "__logout__" };
146
231
  case "/exit":
147
232
  case "/quit":
148
233
  return "exit";
@@ -184,9 +269,34 @@ function describeSession(context) {
184
269
  `messages: ${context.session.messages.length}`,
185
270
  ...describeUsage(context),
186
271
  ];
187
- if (context.sessionFile !== undefined) {
188
- lines.push(`log: ${context.sessionFile}`);
272
+ const sessionFile = context.sessionFileForSession?.(context.session) ?? context.sessionFile;
273
+ if (sessionFile !== undefined) {
274
+ lines.push(`log: ${sessionFile}`);
275
+ }
276
+ return `${lines.join("\n")}\n`;
277
+ }
278
+ function describeStatus(context) {
279
+ const usage = describeUsage(context);
280
+ let contextEstimate = "unavailable";
281
+ try {
282
+ contextEstimate = `approximately ${new HeuristicTokenEstimator().estimateMessages(context.session.messages)} tokens (transcript only; excludes system prompt and tool schemas)`;
189
283
  }
284
+ catch { /* inaccessible estimates are reported explicitly */ }
285
+ const lines = [
286
+ `provider: ${context.providers?.provider ?? context.providerName ?? "unavailable"}`,
287
+ `model: ${context.providers === undefined ? context.modelName ?? "unavailable" : context.providers.model ?? "unavailable"}`,
288
+ `cwd: ${context.session.cwd}`,
289
+ `session: ${context.session.id}${context.session.title ? ` · ${context.session.title}` : ""}`,
290
+ `plan: ${context.session.planMode ? "on (writes and Shell blocked for this session)" : "off"}`,
291
+ ...(context.permissionPolicy === undefined ? [] : [`permissions: ${context.permissionPolicy.mode} (${describePermissionMode(context.permissionPolicy.mode)})`]),
292
+ ...(context.permissionPolicy === undefined ? [
293
+ `file write grant: ${context.permissions === undefined ? "unavailable" : context.permissions.includes("file-write") ? "enabled" : "disabled"}`,
294
+ `Shell grant: ${context.permissions === undefined ? "unavailable" : context.permissions.includes("shell") ? "enabled" : "disabled"}`,
295
+ `network grant: ${context.permissions === undefined ? "unavailable" : !context.permissions.includes("shell") ? "unavailable (Shell disabled)" : context.permissions.includes("network") ? "enabled" : "disabled"}`,
296
+ ] : []),
297
+ ...usage,
298
+ `context: ${contextEstimate}`,
299
+ ];
190
300
  return `${lines.join("\n")}\n`;
191
301
  }
192
302
  /**
@@ -239,6 +349,7 @@ async function runSignIn(readline, readNextLine, write, signIn) {
239
349
  * its transcript and log; at an idle prompt it closes the REPL.
240
350
  */
241
351
  export async function runRepl(options) {
352
+ let activeSession = options.session;
242
353
  const write = (text) => {
243
354
  options.stderr.write(text);
244
355
  };
@@ -410,7 +521,7 @@ export async function runRepl(options) {
410
521
  };
411
522
  // Approval and normal input share the same readline iterator.
412
523
  if (options.shellApproval !== undefined) {
413
- options.shellApproval.setHandler(async (command, signal) => {
524
+ options.shellApproval.setHandler(async (command, signal, context) => {
414
525
  if (signal?.aborted)
415
526
  return false;
416
527
  menu?.clear();
@@ -419,7 +530,7 @@ export async function runRepl(options) {
419
530
  tuiInput?.setBusy(false);
420
531
  try {
421
532
  const width = terminalWidth({ columns: options.output.columns });
422
- write(approvalPreview(command, width));
533
+ write(approvalPreview(command, width, context ?? "Shell command"));
423
534
  if (!commandReviewable(command, width)) {
424
535
  write(" Denied: command cannot be fully reviewed at this width. Ask for a shorter command.\n");
425
536
  return false;
@@ -510,7 +621,7 @@ export async function runRepl(options) {
510
621
  let resolveDraft;
511
622
  const pending = new Promise(resolve => { resolveDraft = resolve; });
512
623
  const output = options.output;
513
- const recent = options.session.messages
624
+ const recent = activeSession.messages
514
625
  .filter((message) => message.role === "user")
515
626
  .map(message => message.content)
516
627
  .filter(message => message.length > 0)
@@ -546,7 +657,7 @@ export async function runRepl(options) {
546
657
  };
547
658
  /** Read-only patch viewer, safe and separate from the model's tool calls. */
548
659
  const inspectPatch = async (override, label) => {
549
- const patch = override ?? mostRecentSuccessfulPatch(options.session.messages);
660
+ const patch = override ?? mostRecentSuccessfulPatch(activeSession.messages);
550
661
  if (patch === undefined) {
551
662
  write("No successfully applied patch found in this session.\n");
552
663
  return;
@@ -586,7 +697,7 @@ export async function runRepl(options) {
586
697
  }
587
698
  const mode = line.endsWith("--staged") ? "staged" : "working";
588
699
  // Explicit user confirmation before starting any local Git process.
589
- const root = terminalText(options.session.cwd);
700
+ const root = terminalText(activeSession.cwd);
590
701
  write(`\nRead-only local Git diff (${mode}) in:\n${root}\nNo network, hooks, external diff or file writes. Approve once? [y/N]\n`);
591
702
  tuiInput.acceptLine();
592
703
  tuiInput.setApprovalMode(true);
@@ -606,7 +717,7 @@ export async function runRepl(options) {
606
717
  return;
607
718
  }
608
719
  try {
609
- const diff = await (options.gitDiffReader ?? readLiveGitDiff)(options.session.cwd, mode);
720
+ const diff = await (options.gitDiffReader ?? readLiveGitDiff)(activeSession.cwd, mode);
610
721
  if (diff.trim().length === 0) {
611
722
  write(`No ${mode} tracked Git changes found.\n`);
612
723
  return;
@@ -681,23 +792,68 @@ export async function runRepl(options) {
681
792
  line = draft;
682
793
  }
683
794
  const outcome = fromComposer || fromEditor ? "not-a-command" : handleSlashCommand(line, {
684
- session: options.session,
795
+ session: activeSession,
685
796
  write,
686
797
  width: terminalWidth({ columns: options.output.columns }),
687
798
  color: options.tui === true && process.env.NO_COLOR === undefined && process.env.TERM !== "dumb",
688
799
  ...(options.sessionFile === undefined
689
800
  ? {}
690
801
  : { sessionFile: options.sessionFile }),
802
+ ...(options.sessionFileForSession === undefined ? {} : { sessionFileForSession: options.sessionFileForSession }),
691
803
  ...(options.extensionCommands === undefined
692
804
  ? {}
693
805
  : { extensionCommands: options.extensionCommands }),
694
806
  ...(options.signIn === undefined ? {} : { signIn: options.signIn }),
695
807
  ...(options.providers === undefined ? {} : { providers: options.providers }),
808
+ ...(options.compactionEnabled === undefined ? {} : { compactionEnabled: options.compactionEnabled }),
809
+ ...(options.providerName === undefined ? {} : { providerName: options.providerName }),
810
+ ...(options.modelName === undefined ? {} : { modelName: options.modelName }),
811
+ ...(options.permissions === undefined ? {} : { permissions: options.permissions }),
812
+ ...(options.permissionPolicy === undefined ? {} : { permissionPolicy: options.permissionPolicy }),
813
+ ...(options.sessionOptions === undefined ? {} : { sessionOptions: options.sessionOptions }),
696
814
  });
697
815
  if (outcome === "exit") {
698
816
  break;
699
817
  }
700
818
  if (typeof outcome === "object" && outcome.kind === "login") {
819
+ if (outcome.providerArgument === "__logout__") {
820
+ const result = await options.signIn?.signOut?.();
821
+ write(`${result ?? "Signed out of the current OAuth subscription."}\n`);
822
+ showPrompt();
823
+ continue;
824
+ }
825
+ if (outcome.providerArgument === "oauth" || /^oauth\s+(openai|xai)$/.test(outcome.providerArgument)) {
826
+ const [, requested] = outcome.providerArgument.split(/\s+/, 2);
827
+ const target = requested ?? options.providers?.provider ?? options.providerName;
828
+ if (target !== "openai" && target !== "xai") {
829
+ write("Use /login oauth openai or /login oauth xai.\n");
830
+ showPrompt();
831
+ continue;
832
+ }
833
+ if (options.signIn?.oauth === undefined) {
834
+ write("OAuth sign-in is unavailable in this session.\n");
835
+ showPrompt();
836
+ continue;
837
+ }
838
+ if (options.providers && options.providers.provider !== target) {
839
+ const selected = await options.providers.select(target);
840
+ write(selected.message);
841
+ if (!selected.ok) {
842
+ showPrompt();
843
+ continue;
844
+ }
845
+ }
846
+ controller = new AbortController();
847
+ try {
848
+ const failure = await options.signIn.oauth(target, controller.signal);
849
+ write(failure ?? `Signed in to ${target} subscription for this session. API keys remain preferred on the next launch.\n`);
850
+ }
851
+ finally {
852
+ controller = undefined;
853
+ }
854
+ showPrompt();
855
+ continue;
856
+ }
701
857
  if (outcome.providerArgument.length > 0) {
702
858
  if (options.providers === undefined) {
703
859
  write("Provider switching is unavailable in this session.\n");
@@ -736,12 +892,99 @@ export async function runRepl(options) {
736
892
  showPrompt();
737
893
  continue;
738
894
  }
739
- if (typeof outcome === "object") {
895
+ if (typeof outcome === "object" && outcome.kind === "compact") {
896
+ if (options.compactionEnabled === false)
897
+ write("Manual compaction is unavailable because --no-compaction is active.\n");
898
+ else {
899
+ controller = new AbortController();
900
+ tuiInput?.setBusy(true);
901
+ write("Compacting older conversation history… Ctrl+C cancels.\n");
902
+ try {
903
+ const compacted = await activeSession.compact(controller.signal);
904
+ write(compacted ? "Compaction checkpoint saved. Full transcript retained.\n" : "Nothing new to compact; existing checkpoint retained.\n");
905
+ }
906
+ catch (error) {
907
+ write(`Compaction failed: ${error instanceof Error ? error.message : String(error)}\n`);
908
+ }
909
+ finally {
910
+ controller = undefined;
911
+ tuiInput?.setBusy(false);
912
+ }
913
+ }
914
+ showPrompt();
915
+ continue;
916
+ }
917
+ if (typeof outcome === "object" && outcome.kind === "rename") {
918
+ try {
919
+ await activeSession.rename(outcome.title);
920
+ write(`Session renamed: ${activeSession.title}\n`);
921
+ }
922
+ catch (error) {
923
+ write(`Rename failed: ${error instanceof Error ? error.message : String(error)}\n`);
924
+ }
925
+ showPrompt();
926
+ continue;
927
+ }
928
+ if (typeof outcome === "object" && outcome.kind === "plan") {
929
+ try {
930
+ await activeSession.setPlanMode(outcome.enabled);
931
+ write(`Plan Mode ${activeSession.planMode ? "on" : "off"}. ${activeSession.planMode ? "Only built-in read tools and update_plan may execute." : "Session capabilities restored."}\n`);
932
+ }
933
+ catch (error) {
934
+ write(`Could not change Plan Mode: ${error instanceof Error ? error.message : String(error)}\n`);
935
+ }
936
+ showPrompt();
937
+ continue;
938
+ }
939
+ if (typeof outcome === "object" && outcome.kind === "permission-mode") {
940
+ options.permissionPolicy?.setMode(outcome.mode);
941
+ write(`Permission mode set to ${outcome.mode}. ${describePermissionMode(outcome.mode)} This mode lasts for this process and will not be restored from a saved session.\n`);
942
+ showPrompt();
943
+ continue;
944
+ }
945
+ if (typeof outcome === "object" && outcome.kind === "new-session") {
946
+ try {
947
+ const next = await options.sessionOptions?.create?.(outcome.title);
948
+ if (next === undefined)
949
+ throw new Error("Session creation is unavailable.");
950
+ activeSession = next;
951
+ write(`Started session ${next.id}${next.title ? ` · ${next.title}` : ""}. Previous session saved.\n`);
952
+ }
953
+ catch (error) {
954
+ write(`Could not start a new session: ${error instanceof Error ? error.message : String(error)}\n`);
955
+ }
956
+ showPrompt();
957
+ continue;
958
+ }
959
+ if (typeof outcome === "object" && outcome.kind === "resume-session") {
960
+ try {
961
+ let id = outcome.id;
962
+ if (!id) {
963
+ const items = await options.sessionOptions?.list?.();
964
+ if (!items?.length)
965
+ throw new Error("No saved sessions in this workspace.");
966
+ write(`Saved sessions in ${activeSession.cwd}:\n${items.map(item => ` ${item.id}${item.title ? ` · ${item.title}` : ""}`).join("\n")}\nUse /resume ID to switch.\n`);
967
+ }
968
+ else {
969
+ const next = await options.sessionOptions?.resume?.(id);
970
+ if (next === undefined)
971
+ throw new Error(`Unknown session in this workspace: ${id}`);
972
+ activeSession = next;
973
+ write(`Resumed session ${next.id}${next.title ? ` · ${next.title}` : ""}.\n`);
974
+ }
975
+ }
976
+ catch (error) {
977
+ write(`Could not resume session: ${error instanceof Error ? error.message : String(error)}\n`);
978
+ }
979
+ showPrompt();
980
+ continue;
981
+ }
982
+ if (typeof outcome === "object" && outcome.kind === "extension") {
740
983
  // An extension command runs here rather than inside the parser so it may
741
984
  // be async, and so a throwing command cannot take the REPL down.
742
985
  try {
743
986
  await outcome.command.run({
744
- session: options.session,
987
+ session: activeSession,
745
988
  write,
746
989
  argument: outcome.argument,
747
990
  });
@@ -768,7 +1011,7 @@ export async function runRepl(options) {
768
1011
  tuiInput?.setBusy(true);
769
1012
  try {
770
1013
  const signal = controller.signal;
771
- const prompt = () => options.session.prompt(line, { signal });
1014
+ const prompt = () => activeSession.prompt(line, { signal });
772
1015
  if (options.tui)
773
1016
  await withoutEcho(readline, prompt);
774
1017
  else