@opencow-ai/opencow-agent-sdk 0.4.22 → 0.4.24

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 (44) hide show
  1. package/dist/capabilities/SdkTool.d.ts +5 -0
  2. package/dist/capabilities/lsp/LSPServerManager.d.ts +2 -1
  3. package/dist/capabilities/mcp/types.d.ts +3 -3
  4. package/dist/capabilities/plugins/loadPluginAgents.d.ts +6 -0
  5. package/dist/capabilities/plugins/loadPluginCommands.d.ts +10 -0
  6. package/dist/capabilities/plugins/loadPluginHooks.d.ts +5 -0
  7. package/dist/capabilities/plugins/loadPluginOutputStyles.d.ts +6 -0
  8. package/dist/capabilities/plugins/lspPluginIntegration.d.ts +1 -0
  9. package/dist/capabilities/plugins/mcpPluginIntegration.d.ts +1 -0
  10. package/dist/capabilities/plugins/pluginOptionsStorage.d.ts +1 -0
  11. package/dist/capabilities/plugins/schemas.d.ts +4 -4
  12. package/dist/capabilities/plugins/sdkPluginRuntime.d.ts +35 -0
  13. package/dist/capabilities/todo/types.d.ts +2 -2
  14. package/dist/capabilities/tools/AgentTool/AgentTool.d.ts +9 -8
  15. package/dist/capabilities/tools/AgentTool/agentMerge.d.ts +1 -0
  16. package/dist/capabilities/tools/AgentTool/inputSchema.d.ts +3 -3
  17. package/dist/capabilities/tools/AgentTool/loadAgentsDir.d.ts +1 -0
  18. package/dist/capabilities/tools/AgentTool/runAgent.d.ts +3 -3
  19. package/dist/capabilities/tools/TodoWriteTool/TodoWriteTool.d.ts +10 -10
  20. package/dist/cli.mjs +707 -359
  21. package/dist/client.d.ts +2 -0
  22. package/dist/client.js +6156 -846
  23. package/dist/controller/dispatch/permissionPreDecision.d.ts +22 -0
  24. package/dist/entrypoints/sdk/controlSchemas.d.ts +139 -139
  25. package/dist/entrypoints/sdk/coreSchemas.d.ts +57 -57
  26. package/dist/entrypoints/sdk/runtimeTypes.d.ts +93 -1
  27. package/dist/lib/toolInputNullCoercion.d.ts +1 -1
  28. package/dist/permissions/PermissionMode.d.ts +2 -2
  29. package/dist/permissions/PermissionPromptToolResultSchema.d.ts +1 -1
  30. package/dist/permissions/PermissionUpdateSchema.d.ts +1 -1
  31. package/dist/providers/anthropic/teleport/api.d.ts +3 -3
  32. package/dist/sdk.js +6156 -846
  33. package/dist/session/forkedAgent.d.ts +2 -1
  34. package/dist/session/layout/schemas.d.ts +12 -12
  35. package/dist/session/settings/types.d.ts +3 -3
  36. package/dist/session/state/index.d.ts +1 -1
  37. package/dist/session/state/registries.d.ts +4 -0
  38. package/dist/session/state/types.d.ts +4 -0
  39. package/dist/session/tasks.d.ts +2 -2
  40. package/dist/session/teammateMailbox.d.ts +2 -2
  41. package/dist/types/command.d.ts +2 -0
  42. package/dist/types/plugin.d.ts +2 -0
  43. package/dist/types/toolRuntime.d.ts +18 -0
  44. package/package.json +1 -1
@@ -181,7 +181,8 @@ export type SubagentContextOverrides = {
181
181
  * - abortController: new controller linked to parent (parent abort propagates)
182
182
  * - getAppState: wrapped to set shouldAvoidPermissionPrompts
183
183
  * - All mutation callbacks (setAppState, etc.): no-op
184
- * - Fresh collections: nestedMemoryAttachmentTriggers, toolDecisions
184
+ * - Fresh collections: nestedMemoryAttachmentTriggers, toolDecisions,
185
+ * permissionPreDecisions
185
186
  *
186
187
  * Callers can:
187
188
  * - Override specific fields via the overrides parameter
@@ -124,14 +124,14 @@ export declare const SdkRuleSchema: z.ZodObject<{
124
124
  name?: string;
125
125
  id?: string;
126
126
  content?: string;
127
+ origin?: "local" | "user" | "project" | "managed" | "host-injected";
127
128
  globs?: string[];
128
- origin?: "user" | "project" | "local" | "managed" | "host-injected";
129
129
  }, {
130
130
  name?: string;
131
131
  id?: string;
132
132
  content?: string;
133
+ origin?: "local" | "user" | "project" | "managed" | "host-injected";
133
134
  globs?: string[];
134
- origin?: "user" | "project" | "local" | "managed" | "host-injected";
135
135
  }>;
136
136
  /**
137
137
  * Validates ONLY the three v4-new fields of Options. Existing Options
@@ -215,24 +215,24 @@ export declare const OptionsPatchSchema: z.ZodEffects<z.ZodObject<{
215
215
  name?: string;
216
216
  id?: string;
217
217
  content?: string;
218
+ origin?: "local" | "user" | "project" | "managed" | "host-injected";
218
219
  globs?: string[];
219
- origin?: "user" | "project" | "local" | "managed" | "host-injected";
220
220
  }, {
221
221
  name?: string;
222
222
  id?: string;
223
223
  content?: string;
224
+ origin?: "local" | "user" | "project" | "managed" | "host-injected";
224
225
  globs?: string[];
225
- origin?: "user" | "project" | "local" | "managed" | "host-injected";
226
226
  }>, "many">>;
227
227
  }, "strip", z.ZodTypeAny, {
228
228
  rules?: {
229
229
  name?: string;
230
230
  id?: string;
231
231
  content?: string;
232
+ origin?: "local" | "user" | "project" | "managed" | "host-injected";
232
233
  globs?: string[];
233
- origin?: "user" | "project" | "local" | "managed" | "host-injected";
234
234
  }[];
235
- fileSystemLayer?: "disabled" | "auto";
235
+ fileSystemLayer?: "auto" | "disabled";
236
236
  layoutProfile?: "agents" | "claude" | "gemini" | {
237
237
  reads?: ("agents" | "claude" | "gemini" | {
238
238
  instructionFile?: string;
@@ -252,10 +252,10 @@ export declare const OptionsPatchSchema: z.ZodEffects<z.ZodObject<{
252
252
  name?: string;
253
253
  id?: string;
254
254
  content?: string;
255
+ origin?: "local" | "user" | "project" | "managed" | "host-injected";
255
256
  globs?: string[];
256
- origin?: "user" | "project" | "local" | "managed" | "host-injected";
257
257
  }[];
258
- fileSystemLayer?: "disabled" | "auto";
258
+ fileSystemLayer?: "auto" | "disabled";
259
259
  layoutProfile?: "agents" | "claude" | "gemini" | {
260
260
  reads?: ("agents" | "claude" | "gemini" | {
261
261
  instructionFile?: string;
@@ -275,10 +275,10 @@ export declare const OptionsPatchSchema: z.ZodEffects<z.ZodObject<{
275
275
  name?: string;
276
276
  id?: string;
277
277
  content?: string;
278
+ origin?: "local" | "user" | "project" | "managed" | "host-injected";
278
279
  globs?: string[];
279
- origin?: "user" | "project" | "local" | "managed" | "host-injected";
280
280
  }[];
281
- fileSystemLayer?: "disabled" | "auto";
281
+ fileSystemLayer?: "auto" | "disabled";
282
282
  layoutProfile?: "agents" | "claude" | "gemini" | {
283
283
  reads?: ("agents" | "claude" | "gemini" | {
284
284
  instructionFile?: string;
@@ -298,10 +298,10 @@ export declare const OptionsPatchSchema: z.ZodEffects<z.ZodObject<{
298
298
  name?: string;
299
299
  id?: string;
300
300
  content?: string;
301
+ origin?: "local" | "user" | "project" | "managed" | "host-injected";
301
302
  globs?: string[];
302
- origin?: "user" | "project" | "local" | "managed" | "host-injected";
303
303
  }[];
304
- fileSystemLayer?: "disabled" | "auto";
304
+ fileSystemLayer?: "auto" | "disabled";
305
305
  layoutProfile?: "agents" | "claude" | "gemini" | {
306
306
  reads?: ("agents" | "claude" | "gemini" | {
307
307
  instructionFile?: string;
@@ -20,8 +20,8 @@ export declare const PermissionsSchema: () => z.ZodObject<{
20
20
  default: "default";
21
21
  acceptEdits: "acceptEdits";
22
22
  bypassPermissions: "bypassPermissions";
23
- plan: "plan";
24
23
  dontAsk: "dontAsk";
24
+ plan: "plan";
25
25
  auto: "auto";
26
26
  }>>;
27
27
  disableBypassPermissionsMode: z.ZodOptional<z.ZodEnum<{
@@ -234,8 +234,8 @@ export declare const SettingsSchema: () => z.ZodObject<{
234
234
  default: "default";
235
235
  acceptEdits: "acceptEdits";
236
236
  bypassPermissions: "bypassPermissions";
237
- plan: "plan";
238
237
  dontAsk: "dontAsk";
238
+ plan: "plan";
239
239
  auto: "auto";
240
240
  }>>;
241
241
  disableBypassPermissionsMode: z.ZodOptional<z.ZodEnum<{
@@ -339,8 +339,8 @@ export declare const SettingsSchema: () => z.ZodObject<{
339
339
  allowManagedPermissionRulesOnly: z.ZodOptional<z.ZodBoolean>;
340
340
  allowManagedMcpServersOnly: z.ZodOptional<z.ZodBoolean>;
341
341
  strictPluginOnlyCustomization: z.ZodCatch<z.ZodOptional<z.ZodPipe<z.ZodTransform<unknown, unknown>, z.ZodUnion<readonly [z.ZodBoolean, z.ZodArray<z.ZodEnum<{
342
- skills: "skills";
343
342
  agents: "agents";
343
+ skills: "skills";
344
344
  hooks: "hooks";
345
345
  mcp: "mcp";
346
346
  }>>]>>>>;
@@ -28,7 +28,7 @@ export { clearBetaHeaderLatches, getAfkModeHeaderLatched, getCacheEditingHeaderL
28
28
  export { getAllowedChannels, getAllowedSettingSources, getClientType, getDirectConnectServerUrl, getFileSystemLayer, getFlagSettingsInline, getHasDevChannels, getIsNonInteractiveSession, getQueryEnvForSpawn, getQueryEnvOverrides, getHostProvidedEnvVar, getQueryEnvVar, getQuestionPreviewFormat, getRuntimeMode, getSdkBetas, getSessionSource, isInteractive, isRemoteMode, preferThirdPartyAuthentication, setAllowedChannels, setAllowedSettingSources, setDirectConnectServerUrl, setFlagSettingsInline, setHasDevChannels, setSdkBetas, } from './config.js';
29
29
  export { deleteEnvVar, resolveEnvVar, setEnvVar, } from '../../constants/envVars.js';
30
30
  export type { EnvVarKey } from '../../constants/envVars.js';
31
- export { addInvokedSkill, clearInvokedSkills, clearInvokedSkillsForAgent, clearRegisteredHooks, clearRegisteredPluginHooks, clearSystemPromptSectionState, getAgentColorMap, getCachedClaudeMdContent, getInitJsonSchema, getInvokedSkills, getInvokedSkillsForAgent, getPlanSlugCache, getRegisteredHooks, getSystemPromptSectionCache, registerHookCallbacks, resetSdkInitState, setCachedClaudeMdContent, setInitJsonSchema, setSystemPromptSectionCacheEntry, } from './registries.js';
31
+ export { addInvokedSkill, clearInvokedSkills, clearInvokedSkillsForAgent, clearRegisteredHooks, clearRegisteredPluginHooks, clearSystemPromptSectionState, getAgentColorMap, getCachedClaudeMdContent, getInitJsonSchema, getInvokedSkills, getInvokedSkillsForAgent, getPlanSlugCache, getRegisteredHooks, getSystemPromptSectionCache, registerHookCallbacks, resetSdkInitState, setCachedClaudeMdContent, setExplicitPluginRuntimeContext, setInitJsonSchema, setSystemPromptSectionCacheEntry, tryGetExplicitPluginDataPath, tryGetSessionLspManager, } from './registries.js';
32
32
  export { getProvider } from './provider.js';
33
33
  export { addToInMemoryErrorLog, getInMemoryErrorLog, getLastEmittedDate, getTeleportedSessionInfo, handleAutoModeTransition, handlePlanModeTransition, hasExitedPlanModeInSession, hasShownLspRecommendationThisSession, markFirstTeleportMessageLogged, needsAutoModeExitAttachment, needsPlanModeExitAttachment, setHasExitedPlanMode, setLastEmittedDate, setLspRecommendationShownThisSession, setNeedsAutoModeExitAttachment, setNeedsPlanModeExitAttachment, setTeleportedSessionInfo, } from './diagnostics.js';
34
34
  export { getFeatureFlags, getKairosActive, getScheduledTasksEnabled, getSdkAgentProgressSummariesEnabled, getSessionBypassPermissionsMode, getSessionTrustAccepted, getStrictToolResultPairing, getUserMsgOptIn, isSessionPersistenceDisabled, setScheduledTasksEnabled, } from './featureFlags.js';
@@ -22,6 +22,7 @@
22
22
  import type { HookEvent } from '../../entrypoints/sdk/coreTypes.js';
23
23
  import type { AgentColorName } from 'src/capabilities/tools/AgentTool/agentColorManager.js';
24
24
  import type { InvokedSkillInfo, RegisteredHookMatcher } from './types.js';
25
+ import type { LSPServerManager } from '../../capabilities/lsp/LSPServerManager.js';
25
26
  export declare function getRegisteredHooks(): Partial<Record<HookEvent, RegisteredHookMatcher[]>> | null;
26
27
  /**
27
28
  * Append matcher entries to the hook registry. Multiple calls accumulate
@@ -44,6 +45,9 @@ export declare function setInitJsonSchema(schema: Record<string, unknown>): void
44
45
  * hooks/hooksConfigSnapshot.ts before re-establishing the hook registry.
45
46
  */
46
47
  export declare function resetSdkInitState(): void;
48
+ export declare function setExplicitPluginRuntimeContext(dataPaths: ReadonlyMap<string, string>, lspManager: LSPServerManager | null): void;
49
+ export declare function tryGetExplicitPluginDataPath(pluginId: string): string | undefined;
50
+ export declare function tryGetSessionLspManager(): LSPServerManager | undefined;
47
51
  export declare function addInvokedSkill(skillName: string, skillPath: string, content: string, agentId?: string | null): void;
48
52
  export declare function getInvokedSkills(): Map<string, InvokedSkillInfo>;
49
53
  export declare function getInvokedSkillsForAgent(agentId: string | undefined | null): Map<string, InvokedSkillInfo>;
@@ -286,6 +286,10 @@ export interface QueryRegistries {
286
286
  * Inline `import(...)` avoids cycles.
287
287
  */
288
288
  dynamicSkills: import('../../capabilities/skills/loadSkillsDir.js').DynamicSkillsState;
289
+ /** Host-managed plugin data roots keyed by stable plugin id. */
290
+ pluginDataPaths: Map<string, string>;
291
+ /** Session-scoped LSP manager for explicit SDK plugins; null uses CLI fallback. */
292
+ lspManager: import('../../capabilities/lsp/LSPServerManager.js').LSPServerManager | null;
289
293
  }
290
294
  export interface QueryDiagnostics {
291
295
  inMemoryErrorLog: Array<{
@@ -24,8 +24,8 @@ export declare function notifyTasksUpdated(): void;
24
24
  export declare const TASK_STATUSES: readonly ["pending", "in_progress", "completed"];
25
25
  export declare const TaskStatusSchema: () => z.ZodEnum<{
26
26
  pending: "pending";
27
- completed: "completed";
28
27
  in_progress: "in_progress";
28
+ completed: "completed";
29
29
  }>;
30
30
  export type TaskStatus = z.infer<ReturnType<typeof TaskStatusSchema>>;
31
31
  export declare const TaskSchema: () => z.ZodObject<{
@@ -36,8 +36,8 @@ export declare const TaskSchema: () => z.ZodObject<{
36
36
  owner: z.ZodOptional<z.ZodString>;
37
37
  status: z.ZodEnum<{
38
38
  pending: "pending";
39
- completed: "completed";
40
39
  in_progress: "in_progress";
40
+ completed: "completed";
41
41
  }>;
42
42
  blocks: z.ZodArray<z.ZodString>;
43
43
  blockedBy: z.ZodArray<z.ZodString>;
@@ -250,8 +250,8 @@ export declare const PlanApprovalResponseMessageSchema: () => z.ZodObject<{
250
250
  default: "default";
251
251
  acceptEdits: "acceptEdits";
252
252
  bypassPermissions: "bypassPermissions";
253
- plan: "plan";
254
253
  dontAsk: "dontAsk";
254
+ plan: "plan";
255
255
  }>>;
256
256
  }, z.core.$strip>;
257
257
  export type PlanApprovalResponseMessage = z.infer<ReturnType<typeof PlanApprovalResponseMessageSchema>>;
@@ -397,8 +397,8 @@ export declare const ModeSetRequestMessageSchema: () => z.ZodObject<{
397
397
  default: "default";
398
398
  acceptEdits: "acceptEdits";
399
399
  bypassPermissions: "bypassPermissions";
400
- plan: "plan";
401
400
  dontAsk: "dontAsk";
401
+ plan: "plan";
402
402
  }>;
403
403
  from: z.ZodString;
404
404
  }, z.core.$strip>;
@@ -137,6 +137,8 @@ export type CommandBase = {
137
137
  /** Defaults to false. Only set when the command should be hidden from typeahead/help. */
138
138
  isHidden?: boolean;
139
139
  name: string;
140
+ /** Absolute source markdown path when the command was loaded from disk. */
141
+ sourcePath?: string;
140
142
  aliases?: string[];
141
143
  isMcp?: boolean;
142
144
  argumentHint?: string;
@@ -42,6 +42,8 @@ export type LoadedPlugin = {
42
42
  path: string;
43
43
  source: string;
44
44
  repository: string;
45
+ /** Session-owned data directory for explicitly managed plugins. */
46
+ dataPath?: string;
45
47
  enabled?: boolean;
46
48
  isBuiltin?: boolean;
47
49
  sha?: string;
@@ -130,6 +130,12 @@ export type ToolRuntimeContext = {
130
130
  * nested subagents via agentOptions; the main loop never filters on it.
131
131
  */
132
132
  subagentDisallowedTools?: string[];
133
+ /**
134
+ * 权限决策前置开关(见 Options.preDecidePermissions)。开启后 runTools() 入口
135
+ * 对同批 tool_use 并发预调 canUseTool 并缓存到 permissionPreDecisions;
136
+ * 默认 undefined(关),由 host 显式开启。
137
+ */
138
+ preDecidePermissions?: boolean;
133
139
  };
134
140
  abortController: AbortController;
135
141
  readFileState: FileStateCache;
@@ -184,6 +190,17 @@ export type ToolRuntimeContext = {
184
190
  decision: 'accept' | 'reject';
185
191
  timestamp: number;
186
192
  }>;
193
+ /**
194
+ * 权限预决策缓存(options.preDecidePermissions 开启时由 runTools() 入口填充,
195
+ * 键为 tool_use id)。与 toolDecisions 审计快照不同:本缓存是一次性消费——
196
+ * 执行期 resolveHookPermissionDecision 取出即删,且仅当执行期 input 与缓存
197
+ * input 深比较一致时才采用缓存 promise,否则回退内联询问。预决策拿不到
198
+ * PreToolUse hook 的改写/ask 消息,故 hook 改写 input 后必然 miss 回退。
199
+ */
200
+ permissionPreDecisions?: Map<string, {
201
+ input: Record<string, unknown>;
202
+ promise: Promise<PermissionResult>;
203
+ }>;
187
204
  queryTracking?: QueryChainTracking;
188
205
  requestPrompt?: (sourceName: string, toolInputSummary?: string | null) => (request: PromptRequest) => Promise<PromptResponse>;
189
206
  toolUseId?: string;
@@ -233,6 +250,7 @@ export type ToolRuntime<Input extends AnyObject = AnyObject, Output = unknown, P
233
250
  readonly shouldDefer?: boolean;
234
251
  readonly alwaysLoad?: boolean;
235
252
  readonly strict?: boolean;
253
+ readonly unknownKeys?: 'strip' | 'reject';
236
254
  readonly inputSchema: Input;
237
255
  readonly inputJSONSchema?: ToolInputJSONSchema;
238
256
  outputSchema?: z.ZodType<unknown>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@opencow-ai/opencow-agent-sdk",
3
- "version": "0.4.22",
3
+ "version": "0.4.24",
4
4
  "description": "Claude Code opened to any LLM — OpenAI, Gemini, DeepSeek, Ollama, and 200+ models",
5
5
  "type": "module",
6
6
  "main": "./dist/sdk.js",