@oh-my-pi/pi-coding-agent 15.11.3 → 15.11.4

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 (103) hide show
  1. package/CHANGELOG.md +54 -0
  2. package/dist/cli.js +353 -294
  3. package/dist/types/config/api-key-resolver.d.ts +9 -3
  4. package/dist/types/config/keybindings.d.ts +1 -1
  5. package/dist/types/config/model-discovery.d.ts +6 -4
  6. package/dist/types/config/model-registry.d.ts +7 -4
  7. package/dist/types/config/settings-schema.d.ts +458 -155
  8. package/dist/types/export/html/template.generated.d.ts +1 -1
  9. package/dist/types/mnemopi/config.d.ts +3 -1
  10. package/dist/types/modes/components/settings-defs.d.ts +9 -2
  11. package/dist/types/modes/components/settings-selector.d.ts +9 -4
  12. package/dist/types/modes/components/tool-execution.d.ts +12 -1
  13. package/dist/types/modes/components/transcript-container.d.ts +12 -0
  14. package/dist/types/modes/controllers/input-controller.d.ts +9 -1
  15. package/dist/types/modes/theme/theme.d.ts +23 -3
  16. package/dist/types/session/agent-session.d.ts +14 -7
  17. package/dist/types/session/auth-storage.d.ts +1 -1
  18. package/dist/types/session/snapcompact-inline.d.ts +28 -0
  19. package/dist/types/slash-commands/helpers/active-oauth-account.d.ts +14 -0
  20. package/dist/types/system-prompt.d.ts +3 -1
  21. package/dist/types/task/render.d.ts +16 -6
  22. package/dist/types/tools/gh.d.ts +3 -0
  23. package/dist/types/tools/render-utils.d.ts +8 -16
  24. package/dist/types/utils/session-color.d.ts +15 -3
  25. package/dist/types/web/kagi.d.ts +1 -2
  26. package/dist/types/web/search/providers/codex.d.ts +1 -1
  27. package/dist/types/web/search/providers/gemini.d.ts +9 -6
  28. package/package.json +11 -11
  29. package/src/auto-thinking/classifier.ts +1 -5
  30. package/src/commit/model-selection.ts +3 -6
  31. package/src/config/api-key-resolver.ts +10 -3
  32. package/src/config/keybindings.ts +1 -1
  33. package/src/config/model-discovery.ts +60 -46
  34. package/src/config/model-registry.ts +21 -8
  35. package/src/config/model-resolver.ts +57 -3
  36. package/src/config/settings-schema.ts +601 -153
  37. package/src/eval/completion-bridge.ts +1 -5
  38. package/src/export/html/template.generated.ts +1 -1
  39. package/src/export/html/template.js +13 -6
  40. package/src/internal-urls/docs-index.generated.ts +5 -5
  41. package/src/internal-urls/issue-pr-protocol.ts +10 -4
  42. package/src/memories/index.ts +2 -10
  43. package/src/mnemopi/backend.ts +30 -8
  44. package/src/mnemopi/config.ts +6 -1
  45. package/src/mnemopi/state.ts +6 -0
  46. package/src/modes/components/extensions/inspector-panel.ts +6 -2
  47. package/src/modes/components/plan-review-overlay.ts +15 -17
  48. package/src/modes/components/plugin-settings.ts +22 -5
  49. package/src/modes/components/settings-defs.ts +19 -4
  50. package/src/modes/components/settings-selector.ts +493 -93
  51. package/src/modes/components/status-line/component.ts +3 -1
  52. package/src/modes/components/status-line/segments.ts +3 -1
  53. package/src/modes/components/tool-execution.ts +69 -12
  54. package/src/modes/components/transcript-container.ts +26 -0
  55. package/src/modes/components/tree-selector.ts +16 -6
  56. package/src/modes/controllers/command-controller.ts +37 -7
  57. package/src/modes/controllers/event-controller.ts +1 -0
  58. package/src/modes/controllers/input-controller.ts +68 -6
  59. package/src/modes/controllers/selector-controller.ts +81 -61
  60. package/src/modes/interactive-mode.ts +4 -2
  61. package/src/modes/rpc/rpc-mode.ts +2 -1
  62. package/src/modes/shared.ts +2 -0
  63. package/src/modes/theme/theme.ts +100 -7
  64. package/src/modes/utils/context-usage.ts +3 -1
  65. package/src/modes/utils/hotkeys-markdown.ts +1 -1
  66. package/src/modes/utils/ui-helpers.ts +9 -5
  67. package/src/prompts/system/personalities/default.md +26 -0
  68. package/src/prompts/system/personalities/friendly.md +17 -0
  69. package/src/prompts/system/personalities/pragmatic.md +15 -0
  70. package/src/prompts/system/snapcompact-system-frames-note.md +1 -0
  71. package/src/prompts/system/snapcompact-system-stub.md +1 -0
  72. package/src/prompts/system/snapcompact-toolresult-note.md +1 -0
  73. package/src/prompts/system/system-prompt.md +5 -22
  74. package/src/prompts/tools/task.md +3 -3
  75. package/src/sdk.ts +22 -1
  76. package/src/session/agent-session.ts +91 -24
  77. package/src/session/auth-storage.ts +1 -0
  78. package/src/session/session-dump-format.ts +8 -1
  79. package/src/session/session-manager.ts +5 -5
  80. package/src/session/snapcompact-inline.ts +187 -0
  81. package/src/slash-commands/helpers/active-oauth-account.ts +44 -0
  82. package/src/slash-commands/helpers/usage-report.ts +24 -3
  83. package/src/system-prompt.ts +15 -1
  84. package/src/task/render.ts +29 -19
  85. package/src/tool-discovery/tool-index.ts +2 -0
  86. package/src/tools/bash.ts +10 -3
  87. package/src/tools/eval-render.ts +13 -8
  88. package/src/tools/gh.ts +39 -1
  89. package/src/tools/image-gen.ts +114 -78
  90. package/src/tools/inspect-image.ts +1 -5
  91. package/src/tools/job.ts +25 -5
  92. package/src/tools/read.ts +1 -57
  93. package/src/tools/render-utils.ts +29 -31
  94. package/src/tools/ssh.ts +3 -3
  95. package/src/tools/tts.ts +40 -20
  96. package/src/utils/clipboard.ts +56 -4
  97. package/src/utils/commit-message-generator.ts +1 -5
  98. package/src/utils/session-color.ts +83 -9
  99. package/src/utils/title-generator.ts +1 -1
  100. package/src/web/kagi.ts +26 -27
  101. package/src/web/search/providers/codex.ts +42 -40
  102. package/src/web/search/providers/gemini.ts +42 -22
  103. package/src/web/search/providers/perplexity.ts +22 -10
@@ -1,4 +1,6 @@
1
- import type { ApiKeyResolver, AuthStorage } from "@oh-my-pi/pi-ai";
1
+ import type { Api, ApiKeyResolver, AuthStorage, Model } from "@oh-my-pi/pi-ai";
2
+ /** Model slice accepted by the model-form `resolver(model, sessionId)` overload. */
3
+ export type ApiKeyResolverModel = Pick<Model<Api>, "provider" | "baseUrl" | "id">;
2
4
  export interface ApiKeyResolverOptions {
3
5
  /** Session id for credential stickiness; read at resolve time by the caller. */
4
6
  sessionId?: string;
@@ -25,10 +27,14 @@ export interface ApiKeyResolverRegistry {
25
27
  * policy: initial → resolve; step (b) → force-refresh same account; step (c)
26
28
  * → rotate to a sibling credential, then re-resolve.
27
29
  *
28
- * The resolver is stateless (safe to reuse across requests). Callers that
29
- * need the initial key for a guard can call `resolveApiKeyOnce(resolver)`.
30
+ * Two call forms: `resolver(provider, options?)` for provider-scoped keys,
31
+ * and `resolver(model, sessionId?)` which derives `baseUrl`/`modelId` from
32
+ * the model. The resolver is stateless (safe to reuse across requests).
33
+ * Callers that need the initial key for a guard can call
34
+ * `resolveApiKeyOnce(resolver)`.
30
35
  */
31
36
  resolver(provider: string, options?: ApiKeyResolverOptions): ApiKeyResolver;
37
+ resolver(model: ApiKeyResolverModel, sessionId?: string): ApiKeyResolver;
32
38
  }
33
39
  /**
34
40
  * Default implementation of {@link ApiKeyResolverRegistry.resolver}.
@@ -239,7 +239,7 @@ export declare const KEYBINDINGS: {
239
239
  };
240
240
  readonly "app.clipboard.pasteImage": {
241
241
  readonly defaultKeys: KeyId[];
242
- readonly description: "Paste image from clipboard";
242
+ readonly description: "Paste image or text from clipboard";
243
243
  };
244
244
  readonly "app.clipboard.pasteTextRaw": {
245
245
  readonly defaultKeys: ["ctrl+shift+v", "alt+shift+v"];
@@ -5,7 +5,7 @@
5
5
  * `discoverModelsByProviderType` with a `DiscoveryContext`; built-in provider
6
6
  * discovery lives in pi-catalog's provider-models.
7
7
  */
8
- import type { FetchImpl } from "@oh-my-pi/pi-ai";
8
+ import { type ApiKey, type FetchImpl } from "@oh-my-pi/pi-ai";
9
9
  import type { Api, Model } from "@oh-my-pi/pi-ai/types";
10
10
  import type { ModelSpec } from "@oh-my-pi/pi-catalog/types";
11
11
  import type { ProviderDiscovery } from "./models-config-schema";
@@ -28,10 +28,12 @@ export interface DiscoveryContext {
28
28
  /** Injected fetch implementation (tests stub this). */
29
29
  fetch: FetchImpl;
30
30
  /**
31
- * Resolve a provider's API key for `Authorization: Bearer …`. Returns
32
- * undefined when no key is stored or it is a local/no-auth sentinel.
31
+ * Resolve a provider's bearer credential for `Authorization: Bearer …`.
32
+ * Returns undefined when no key is stored or it is a local/no-auth
33
+ * sentinel; otherwise an {@link ApiKey} whose resolver participates in the
34
+ * central force-refresh/rotate auth-retry policy on 401/usage-limit.
33
35
  */
34
- getBearerApiKey(provider: string): Promise<string | undefined>;
36
+ getBearerApiKeyResolver(provider: string): Promise<ApiKey | undefined>;
35
37
  }
36
38
  export declare function discoverModelsByProviderType(providerConfig: DiscoveryProviderConfig, ctx: DiscoveryContext): Promise<Model<Api>[]>;
37
39
  export declare function discoverOllamaModels(providerConfig: DiscoveryProviderConfig, ctx: DiscoveryContext): Promise<Model<Api>[]>;
@@ -5,7 +5,7 @@ import type { ApiKeyResolver, FetchImpl } from "@oh-my-pi/pi-ai";
5
5
  import type { OAuthCredentials, OAuthLoginCallbacks } from "@oh-my-pi/pi-ai/oauth/types";
6
6
  import { type CanonicalModelIndex, type CanonicalModelRecord, type CanonicalModelVariant, type ModelEquivalenceConfig } from "@oh-my-pi/pi-catalog/identity";
7
7
  import type { AuthStorage } from "../session/auth-storage";
8
- import { type ApiKeyResolverOptions } from "./api-key-resolver";
8
+ import { type ApiKeyResolverModel, type ApiKeyResolverOptions } from "./api-key-resolver";
9
9
  import type { ConfigError } from "./config-file";
10
10
  export type { CanonicalModelIndex, CanonicalModelRecord, CanonicalModelVariant, ModelEquivalenceConfig };
11
11
  export declare const kNoAuth = "N/A";
@@ -153,11 +153,14 @@ export declare class ModelRegistry {
153
153
  signal?: AbortSignal;
154
154
  }): Promise<string | undefined>;
155
155
  /**
156
- * Build an {@link ApiKeyResolver} for this provider, implementing the
157
- * central a/b/c auth-retry policy. Callers that need the initial key for
158
- * a guard can call `resolveApiKeyOnce(resolver)`.
156
+ * Build an {@link ApiKeyResolver} implementing the central a/b/c auth-retry
157
+ * policy. Accepts a provider id with options, or a model with an optional
158
+ * session id (`resolver(model, sessionId)`) which derives `baseUrl`/`modelId`
159
+ * from the model. Callers that need the initial key for a guard can call
160
+ * `resolveApiKeyOnce(resolver)`.
159
161
  */
160
162
  resolver(provider: string, options?: ApiKeyResolverOptions): ApiKeyResolver;
163
+ resolver(model: ApiKeyResolverModel, sessionId?: string): ApiKeyResolver;
161
164
  /**
162
165
  * Check if a model is using OAuth credentials (subscription).
163
166
  */