@xenosystem/agent-sdk 0.10.31 → 0.10.33

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 (50) hide show
  1. package/README.md +1 -1
  2. package/dist/artifacts/index.cjs +1 -1
  3. package/dist/artifacts/index.js +1 -1
  4. package/dist/automation/index.cjs +1 -1
  5. package/dist/automation/index.d.cts +14 -0
  6. package/dist/automation/index.d.ts +14 -0
  7. package/dist/automation/index.js +1 -1
  8. package/dist/control-plane/index.cjs +1 -1
  9. package/dist/control-plane/index.js +1 -1
  10. package/dist/electron/index.cjs +211 -198
  11. package/dist/electron/index.d.cts +60 -5
  12. package/dist/electron/index.d.ts +60 -5
  13. package/dist/electron/index.js +211 -198
  14. package/dist/electron/metafile-cjs.json +1 -1
  15. package/dist/electron/metafile-esm.json +1 -1
  16. package/dist/governance/index.cjs +24 -24
  17. package/dist/governance/index.js +24 -24
  18. package/dist/governance/metafile-cjs.json +1 -1
  19. package/dist/governance/metafile-esm.json +1 -1
  20. package/dist/hooks/index.cjs +4 -4
  21. package/dist/hooks/index.d.cts +18 -0
  22. package/dist/hooks/index.d.ts +18 -0
  23. package/dist/hooks/index.js +4 -4
  24. package/dist/hooks/metafile-cjs.json +1 -1
  25. package/dist/hooks/metafile-esm.json +1 -1
  26. package/dist/hosted/index.cjs +1 -1
  27. package/dist/hosted/index.d.cts +21 -3
  28. package/dist/hosted/index.d.ts +21 -3
  29. package/dist/hosted/index.js +1 -1
  30. package/dist/hosted/metafile-cjs.json +1 -1
  31. package/dist/hosted/metafile-esm.json +1 -1
  32. package/dist/index.cjs +420 -384
  33. package/dist/index.d.cts +331 -30
  34. package/dist/index.d.ts +331 -30
  35. package/dist/index.js +422 -386
  36. package/dist/mcp/index.cjs +21 -21
  37. package/dist/mcp/index.d.cts +253 -186
  38. package/dist/mcp/index.d.ts +253 -186
  39. package/dist/mcp/index.js +21 -21
  40. package/dist/mcp/metafile-cjs.json +1 -1
  41. package/dist/mcp/metafile-esm.json +1 -1
  42. package/dist/metafile-cjs.json +1 -1
  43. package/dist/metafile-esm.json +1 -1
  44. package/dist/session/index.cjs +15 -15
  45. package/dist/session/index.js +12 -12
  46. package/dist/session/metafile-cjs.json +1 -1
  47. package/dist/session/metafile-esm.json +1 -1
  48. package/dist/skills/index.d.cts +14 -0
  49. package/dist/skills/index.d.ts +14 -0
  50. package/package.json +2 -2
@@ -299,10 +299,42 @@ interface ToolPolicyProjection {
299
299
  approvalKey?: string;
300
300
  riskLevel?: "low" | "medium" | "high";
301
301
  }
302
+ interface ToolAnnotationHints {
303
+ title?: string;
304
+ readOnlyHint?: boolean;
305
+ destructiveHint?: boolean;
306
+ idempotentHint?: boolean;
307
+ openWorldHint?: boolean;
308
+ }
309
+ interface ToolOrigin {
310
+ kind: "mcp";
311
+ server: string;
312
+ tool: string;
313
+ }
314
+ interface PermissionToolMetadata {
315
+ readOnly?: boolean;
316
+ annotations?: ToolAnnotationHints;
317
+ origin?: ToolOrigin;
318
+ }
319
+ interface PlanModeReadOnlyClaim {
320
+ toolName: string;
321
+ input: Record<string, unknown>;
322
+ source: "annotation" | "declaration";
323
+ origin?: ToolOrigin;
324
+ annotations?: ToolAnnotationHints;
325
+ }
326
+ interface PlanModeToolPolicy {
327
+ honourReadOnlyAnnotations?: boolean;
328
+ honourReadOnlyDeclarations?: boolean;
329
+ allowTools?: readonly string[];
330
+ validateReadOnlyClaim?: (claim: PlanModeReadOnlyClaim) => boolean | Promise<boolean>;
331
+ }
302
332
  interface RegisteredTool {
303
333
  definition: ToolDefinition;
304
334
  execute: ToolExecutor;
305
335
  readOnly?: boolean;
336
+ annotations?: ToolAnnotationHints;
337
+ origin?: ToolOrigin;
306
338
  projectPolicyInput?: (input: Record<string, unknown>, context?: ToolPolicyProjectionContext) => ToolPolicyProjection | {
307
339
  error: ToolResult;
308
340
  };
@@ -677,18 +709,37 @@ interface PermissionCheckContext {
677
709
  ephemeralInputPreview?: string;
678
710
  onWaitStart?: () => void;
679
711
  onWaitEnd?: () => void;
712
+ tool?: PermissionToolMetadata;
713
+ }
714
+ interface DerivedPermissionEngineOptions {
715
+ mode?: "default" | "plan";
716
+ rules?: PermissionConfig["rules"];
680
717
  }
681
718
  declare class PermissionEngine {
682
- private config;
719
+ protected config: PermissionConfig;
683
720
  private workingDirectory;
684
721
  private sessionAllowed;
685
722
  private sessionAllowedDirectories;
686
723
  private persistentAllowed;
687
724
  private persistentAllowedDirectories;
688
- private promptFn?;
689
- private decisionHook?;
725
+ protected promptFn?: PermissionPromptFn;
726
+ protected decisionHook?: PermissionDecisionHook;
727
+ protected planModeToolPolicy?: PlanModeToolPolicy;
690
728
  constructor(config?: Partial<PermissionConfig>, promptFn?: PermissionPromptFn, decisionHook?: PermissionDecisionHook);
691
729
  fork(promptFn?: PermissionPromptFn | undefined): PermissionEngine;
730
+ setPlanModeToolPolicy(policy: PlanModeToolPolicy | undefined): void;
731
+ get planModePolicy(): PlanModeToolPolicy | undefined;
732
+ deriveChild(options?: DerivedPermissionEngineOptions): PermissionEngine;
733
+ protected planModeVerdict(toolName: string, canonicalToolName: string, input: Record<string, unknown>, tool: PermissionToolMetadata | undefined): Promise<{
734
+ kind: "refuse";
735
+ reason: string;
736
+ } | {
737
+ kind: "admit";
738
+ reason: string;
739
+ } | {
740
+ kind: "defer";
741
+ }>;
742
+ private planModeReadOnlyAdmission;
692
743
  get mode(): PermissionConfig["mode"];
693
744
  setMode(mode: PermissionConfig["mode"]): void;
694
745
  setWorkingDirectory(cwd: string): void;
@@ -701,7 +752,10 @@ declare class PermissionEngine {
701
752
  reason: string;
702
753
  }>;
703
754
  private checkElevatedBash;
704
- private finalizeDecision;
755
+ protected finalizeDecision(toolName: string, input: Record<string, unknown>, allowed: boolean, reason: string, traceId?: string, requesterLabel?: string): Promise<{
756
+ allowed: boolean;
757
+ reason: string;
758
+ }>;
705
759
  classifyAutoPermission(toolName: string, input: Record<string, unknown>): AutoPermissionDecision;
706
760
  private contentDigest;
707
761
  private bashScopeSuffix;
@@ -715,7 +769,7 @@ declare class PermissionEngine {
715
769
  private promptUser;
716
770
  private getToolDetail;
717
771
  private getCommandPrefix;
718
- private matchesRule;
772
+ protected matchesRule(ruleTool: string, pattern: string | undefined, toolName: string, input: Record<string, unknown>): boolean;
719
773
  private matchesBashPattern;
720
774
  private matchesWildcard;
721
775
  private isCredentialLikePath;
@@ -1471,6 +1525,7 @@ interface AgentLoopConfig {
1471
1525
  maxIterations: number;
1472
1526
  reserveFinalSynthesisTurn?: boolean;
1473
1527
  turnTokenBudget?: number;
1528
+ continuationCheckpoints?: boolean;
1474
1529
  systemPrompt: string;
1475
1530
  requesterLabel?: string;
1476
1531
  ownerSessionId?: string;
@@ -299,10 +299,42 @@ interface ToolPolicyProjection {
299
299
  approvalKey?: string;
300
300
  riskLevel?: "low" | "medium" | "high";
301
301
  }
302
+ interface ToolAnnotationHints {
303
+ title?: string;
304
+ readOnlyHint?: boolean;
305
+ destructiveHint?: boolean;
306
+ idempotentHint?: boolean;
307
+ openWorldHint?: boolean;
308
+ }
309
+ interface ToolOrigin {
310
+ kind: "mcp";
311
+ server: string;
312
+ tool: string;
313
+ }
314
+ interface PermissionToolMetadata {
315
+ readOnly?: boolean;
316
+ annotations?: ToolAnnotationHints;
317
+ origin?: ToolOrigin;
318
+ }
319
+ interface PlanModeReadOnlyClaim {
320
+ toolName: string;
321
+ input: Record<string, unknown>;
322
+ source: "annotation" | "declaration";
323
+ origin?: ToolOrigin;
324
+ annotations?: ToolAnnotationHints;
325
+ }
326
+ interface PlanModeToolPolicy {
327
+ honourReadOnlyAnnotations?: boolean;
328
+ honourReadOnlyDeclarations?: boolean;
329
+ allowTools?: readonly string[];
330
+ validateReadOnlyClaim?: (claim: PlanModeReadOnlyClaim) => boolean | Promise<boolean>;
331
+ }
302
332
  interface RegisteredTool {
303
333
  definition: ToolDefinition;
304
334
  execute: ToolExecutor;
305
335
  readOnly?: boolean;
336
+ annotations?: ToolAnnotationHints;
337
+ origin?: ToolOrigin;
306
338
  projectPolicyInput?: (input: Record<string, unknown>, context?: ToolPolicyProjectionContext) => ToolPolicyProjection | {
307
339
  error: ToolResult;
308
340
  };
@@ -677,18 +709,37 @@ interface PermissionCheckContext {
677
709
  ephemeralInputPreview?: string;
678
710
  onWaitStart?: () => void;
679
711
  onWaitEnd?: () => void;
712
+ tool?: PermissionToolMetadata;
713
+ }
714
+ interface DerivedPermissionEngineOptions {
715
+ mode?: "default" | "plan";
716
+ rules?: PermissionConfig["rules"];
680
717
  }
681
718
  declare class PermissionEngine {
682
- private config;
719
+ protected config: PermissionConfig;
683
720
  private workingDirectory;
684
721
  private sessionAllowed;
685
722
  private sessionAllowedDirectories;
686
723
  private persistentAllowed;
687
724
  private persistentAllowedDirectories;
688
- private promptFn?;
689
- private decisionHook?;
725
+ protected promptFn?: PermissionPromptFn;
726
+ protected decisionHook?: PermissionDecisionHook;
727
+ protected planModeToolPolicy?: PlanModeToolPolicy;
690
728
  constructor(config?: Partial<PermissionConfig>, promptFn?: PermissionPromptFn, decisionHook?: PermissionDecisionHook);
691
729
  fork(promptFn?: PermissionPromptFn | undefined): PermissionEngine;
730
+ setPlanModeToolPolicy(policy: PlanModeToolPolicy | undefined): void;
731
+ get planModePolicy(): PlanModeToolPolicy | undefined;
732
+ deriveChild(options?: DerivedPermissionEngineOptions): PermissionEngine;
733
+ protected planModeVerdict(toolName: string, canonicalToolName: string, input: Record<string, unknown>, tool: PermissionToolMetadata | undefined): Promise<{
734
+ kind: "refuse";
735
+ reason: string;
736
+ } | {
737
+ kind: "admit";
738
+ reason: string;
739
+ } | {
740
+ kind: "defer";
741
+ }>;
742
+ private planModeReadOnlyAdmission;
692
743
  get mode(): PermissionConfig["mode"];
693
744
  setMode(mode: PermissionConfig["mode"]): void;
694
745
  setWorkingDirectory(cwd: string): void;
@@ -701,7 +752,10 @@ declare class PermissionEngine {
701
752
  reason: string;
702
753
  }>;
703
754
  private checkElevatedBash;
704
- private finalizeDecision;
755
+ protected finalizeDecision(toolName: string, input: Record<string, unknown>, allowed: boolean, reason: string, traceId?: string, requesterLabel?: string): Promise<{
756
+ allowed: boolean;
757
+ reason: string;
758
+ }>;
705
759
  classifyAutoPermission(toolName: string, input: Record<string, unknown>): AutoPermissionDecision;
706
760
  private contentDigest;
707
761
  private bashScopeSuffix;
@@ -715,7 +769,7 @@ declare class PermissionEngine {
715
769
  private promptUser;
716
770
  private getToolDetail;
717
771
  private getCommandPrefix;
718
- private matchesRule;
772
+ protected matchesRule(ruleTool: string, pattern: string | undefined, toolName: string, input: Record<string, unknown>): boolean;
719
773
  private matchesBashPattern;
720
774
  private matchesWildcard;
721
775
  private isCredentialLikePath;
@@ -1471,6 +1525,7 @@ interface AgentLoopConfig {
1471
1525
  maxIterations: number;
1472
1526
  reserveFinalSynthesisTurn?: boolean;
1473
1527
  turnTokenBudget?: number;
1528
+ continuationCheckpoints?: boolean;
1474
1529
  systemPrompt: string;
1475
1530
  requesterLabel?: string;
1476
1531
  ownerSessionId?: string;