@scotthuang/agent-knock-knock 0.12.29 → 0.12.30

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 (64) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/dist/src/claude-terminal-agent-adapter.js +20 -1
  3. package/dist/src/claude-terminal-agent-adapter.js.map +1 -1
  4. package/dist/src/cli-core.js +50 -35
  5. package/dist/src/cli-core.js.map +1 -1
  6. package/dist/src/codex-terminal-agent-adapter.d.ts +2 -1
  7. package/dist/src/codex-terminal-agent-adapter.js +40 -4
  8. package/dist/src/codex-terminal-agent-adapter.js.map +1 -1
  9. package/dist/src/host-adapter.d.ts +1 -1
  10. package/dist/src/host-adapter.js +1 -1
  11. package/dist/src/host-bridge-tools.js +2 -2
  12. package/dist/src/openclaw-plugin-command-adapter.js +155 -24
  13. package/dist/src/openclaw-plugin-command-adapter.js.map +1 -1
  14. package/dist/src/openclaw-plugin-helpers.d.ts +2 -0
  15. package/dist/src/openclaw-plugin-helpers.js +28 -7
  16. package/dist/src/openclaw-plugin-helpers.js.map +1 -1
  17. package/dist/src/openclaw-plugin-schemas.d.ts +104 -0
  18. package/dist/src/openclaw-plugin-schemas.js +108 -0
  19. package/dist/src/openclaw-plugin-schemas.js.map +1 -1
  20. package/dist/src/openclaw-private-authority-offers.d.ts +2 -0
  21. package/dist/src/openclaw-private-authority-offers.js +12 -0
  22. package/dist/src/openclaw-private-authority-offers.js.map +1 -1
  23. package/dist/src/terminal-agent-adapter.d.ts +34 -0
  24. package/dist/src/terminal-agent-adapter.js +54 -0
  25. package/dist/src/terminal-agent-adapter.js.map +1 -1
  26. package/dist/src/terminal-agent-bridge.d.ts +75 -1
  27. package/dist/src/terminal-agent-bridge.js +759 -149
  28. package/dist/src/terminal-agent-bridge.js.map +1 -1
  29. package/dist/src/terminal-command-cli-adapter.d.ts +2 -1
  30. package/dist/src/terminal-command-cli-adapter.js +46 -8
  31. package/dist/src/terminal-command-cli-adapter.js.map +1 -1
  32. package/dist/src/terminal-dispatch-execution.js +15 -0
  33. package/dist/src/terminal-dispatch-execution.js.map +1 -1
  34. package/dist/src/terminal-identity-authority-cli-adapter.d.ts +1 -0
  35. package/dist/src/terminal-identity-authority-cli-adapter.js +10 -1
  36. package/dist/src/terminal-identity-authority-cli-adapter.js.map +1 -1
  37. package/dist/src/terminal-interaction-authority.d.ts +33 -0
  38. package/dist/src/terminal-interaction-authority.js +3 -0
  39. package/dist/src/terminal-interaction-authority.js.map +1 -0
  40. package/dist/src/terminal-interaction-cli-adapter.d.ts +66 -0
  41. package/dist/src/terminal-interaction-cli-adapter.js +354 -0
  42. package/dist/src/terminal-interaction-cli-adapter.js.map +1 -0
  43. package/dist/src/terminal-interaction-protocol.d.ts +111 -0
  44. package/dist/src/terminal-interaction-protocol.js +432 -0
  45. package/dist/src/terminal-interaction-protocol.js.map +1 -0
  46. package/dist/src/terminal-list-renderer.js +31 -2
  47. package/dist/src/terminal-list-renderer.js.map +1 -1
  48. package/dist/src/terminal-monitor-cli-adapter.js +12 -3
  49. package/dist/src/terminal-monitor-cli-adapter.js.map +1 -1
  50. package/dist/src/terminal-monitor-decision-policy.d.ts +1 -1
  51. package/dist/src/terminal-monitor-state-cli-adapter.js +15 -1
  52. package/dist/src/terminal-monitor-state-cli-adapter.js.map +1 -1
  53. package/dist/src/terminal-mutation-cli-runtime.d.ts +44 -0
  54. package/dist/src/terminal-mutation-cli-runtime.js +41 -0
  55. package/dist/src/terminal-mutation-cli-runtime.js.map +1 -0
  56. package/dist/src/terminal-questionnaire-adapter.d.ts +84 -0
  57. package/dist/src/terminal-questionnaire-adapter.js +677 -0
  58. package/dist/src/terminal-questionnaire-adapter.js.map +1 -0
  59. package/docs/host-bridge-profiles.md +2 -2
  60. package/docs/quickstart-herdr.md +1 -1
  61. package/docs/quickstart-tmux.md +3 -1
  62. package/openclaw.plugin.json +4 -0
  63. package/package.json +1 -1
  64. package/templates/openclaw-skills/agent-knock-knock/SKILL.md +11 -8
@@ -1,5 +1,18 @@
1
1
  import { createHash } from "node:crypto";
2
2
  import { isExecutorKind } from "./executors.js";
3
+ /**
4
+ * Closed semantic decisions that an adapter may expose for a proven native
5
+ * approval prompt. Callers select one of these values; terminal keys, menu
6
+ * indexes, and rendered labels remain adapter-owned transport details.
7
+ */
8
+ export const TERMINAL_APPROVAL_DECISIONS = [
9
+ "approve_once",
10
+ "reject"
11
+ ];
12
+ export function isTerminalApprovalDecision(value) {
13
+ return typeof value === "string" &&
14
+ TERMINAL_APPROVAL_DECISIONS.includes(value);
15
+ }
3
16
  const TERMINAL_APPROVAL_ANSI_ESCAPE_PATTERN = /\x1B(?:\[[0-?]*[ -/]*[@-~]|\][^\x07]*(?:\x07|\x1B\\))/gu;
4
17
  /**
5
18
  * Hash an adapter-verified prompt region without redaction or semantic
@@ -19,6 +32,47 @@ export function normalizeTerminalApprovalPromptRegion(value) {
19
32
  .replace(TERMINAL_APPROVAL_ANSI_ESCAPE_PATTERN, "")
20
33
  .replace(/\r\n?/gu, "\n");
21
34
  }
35
+ /**
36
+ * Normalize an adapter-owned approval offer. Any malformed or ambiguous
37
+ * explicit choice set fails closed. Legacy adapters expose approve_once only.
38
+ */
39
+ export function terminalApprovalChoices(approval) {
40
+ if (!approval.approvable) {
41
+ return [];
42
+ }
43
+ const legacyApprove = {
44
+ ...approval.action,
45
+ decision: approval.action.decision ?? "approve_once"
46
+ };
47
+ const offered = approval.choices?.length
48
+ ? approval.choices
49
+ : [legacyApprove];
50
+ const normalized = offered.map((choice) => ({
51
+ ...choice,
52
+ decision: choice.decision
53
+ }));
54
+ if (legacyApprove.decision !== "approve_once" ||
55
+ normalized.some((choice) => !isTerminalApprovalDecision(choice.decision) ||
56
+ (choice.mode ?? "keys") !== "keys" ||
57
+ choice.keys.length === 0 ||
58
+ !choice.label) ||
59
+ new Set(normalized.map((choice) => choice.decision)).size !==
60
+ normalized.length) {
61
+ return [];
62
+ }
63
+ const approveOnce = normalized.find((choice) => choice.decision === "approve_once");
64
+ if (!approveOnce ||
65
+ approveOnce.label !== legacyApprove.label ||
66
+ approveOnce.requestId !== legacyApprove.requestId ||
67
+ approveOnce.keys.length !== legacyApprove.keys.length ||
68
+ approveOnce.keys.some((key, index) => key !== legacyApprove.keys[index])) {
69
+ return [];
70
+ }
71
+ return normalized;
72
+ }
73
+ export function terminalApprovalActionForDecision(approval, decision) {
74
+ return terminalApprovalChoices(approval).find((choice) => choice.decision === decision);
75
+ }
22
76
  export class TerminalAgentAdapterRegistry {
23
77
  adapters = new Map();
24
78
  constructor(adapters = []) {
@@ -1 +1 @@
1
- {"version":3,"file":"terminal-agent-adapter.js","sourceRoot":"","sources":["../../src/terminal-agent-adapter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"terminal-agent-adapter.js","sourceRoot":"","sources":["../../src/terminal-agent-adapter.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  import type { ExecutorKind } from "./executors.js";
2
- import { type ActiveTerminalProcess, type TerminalAgentAdapter, type TerminalAgentAdapterCapabilities, type TerminalAgentAdapterRegistry, type TerminalCompletionEvidence, type TerminalControlRef, type TerminalDurableCompletionRequest, type TerminalNativeInspectionEvidenceInventoryEntry, type TerminalNativeInspectionObservation, type TerminalNativeInspectionObservationRequest, type TerminalNativeInspectionPlan, type TerminalProcessSnapshot, type TerminalRuntimeIdentity, type TerminalScreenInspection } from "./terminal-agent-adapter.js";
2
+ import { type ActiveTerminalProcess, type TerminalAgentAdapter, type TerminalAgentAdapterCapabilities, type TerminalAgentAdapterRegistry, type TerminalApprovalDecision, type TerminalCompletionEvidence, type TerminalControlRef, type TerminalDurableCompletionRequest, type TerminalNativeInspectionEvidenceInventoryEntry, type TerminalNativeInspectionObservation, type TerminalNativeInspectionObservationRequest, type TerminalNativeInspectionPlan, type TerminalProcessSnapshot, type TerminalRuntimeIdentity, type TerminalScreenInspection } from "./terminal-agent-adapter.js";
3
3
  import { type TerminalDiscoveryDiagnosticLog, type TerminalControlProvider } from "./terminal-control-provider.js";
4
+ import { type TerminalInteractionAnswer, type TerminalInteractionProjection, type TerminalInteractionResponse } from "./terminal-interaction-protocol.js";
4
5
  /** A terminal send failed at a boundary that proves input never started. */
5
6
  export declare class TerminalInputNotStartedError extends Error {
6
7
  readonly code = "AKK_TERMINAL_INPUT_NOT_STARTED";
@@ -63,6 +64,19 @@ export declare class NativeInspectionDismissalError extends Error {
63
64
  cause?: unknown;
64
65
  });
65
66
  }
67
+ export type TerminalInteractionReservedStage = "reservation_uncertain" | "text_uncertain" | "key_uncertain";
68
+ /**
69
+ * A response reservation or terminal input may already have happened. The
70
+ * same interaction must never be dispatched automatically after this error.
71
+ */
72
+ export declare class TerminalInteractionDispatchReservedError extends Error {
73
+ readonly stage: TerminalInteractionReservedStage;
74
+ readonly code = "AKK_TERMINAL_INTERACTION_DISPATCH_RESERVED";
75
+ readonly doNotRetry = true;
76
+ constructor(stage: TerminalInteractionReservedStage, message: string, options?: {
77
+ cause?: unknown;
78
+ });
79
+ }
66
80
  export interface TerminalBridgeStatus {
67
81
  provider: string;
68
82
  target: string;
@@ -85,6 +99,11 @@ export interface TerminalBridgeStatus {
85
99
  request_detail?: string;
86
100
  reason?: string;
87
101
  fingerprint?: string;
102
+ choices?: readonly {
103
+ decision: TerminalApprovalDecision;
104
+ label: string;
105
+ fingerprint: string;
106
+ }[];
88
107
  decision_mode?: "keys";
89
108
  request_id?: string;
90
109
  policy_evidence?: {
@@ -102,8 +121,44 @@ export interface TerminalBridgeStatus {
102
121
  approval?: Record<string, unknown>;
103
122
  error?: string;
104
123
  };
124
+ /** Safe, semantic current-question projection; never terminal keys. */
125
+ interaction_state?: TerminalInteractionProjection;
126
+ /**
127
+ * Owner-private response fence. Public status renderers must remove this
128
+ * sibling field before returning terminal_status to a model or browser.
129
+ */
130
+ interaction_prompt_fingerprint?: string;
105
131
  capability_limitation?: string;
106
132
  }
133
+ export interface TerminalInteractionAuthorizationContext {
134
+ agent: ExecutorKind;
135
+ terminalControl: TerminalControlRef;
136
+ fingerprint: string;
137
+ projection: TerminalInteractionProjection;
138
+ response: TerminalInteractionResponse;
139
+ runtime?: TerminalRuntimeIdentity;
140
+ }
141
+ export interface TerminalInteractionAuthorizationDecision {
142
+ approved: boolean;
143
+ reason?: string;
144
+ }
145
+ export interface TerminalInteractionBeforeDispatchContext {
146
+ agent: ExecutorKind;
147
+ terminalControl: TerminalControlRef;
148
+ fingerprint: string;
149
+ projection: TerminalInteractionProjection;
150
+ response: TerminalInteractionResponse;
151
+ runtime?: TerminalRuntimeIdentity;
152
+ }
153
+ export interface TerminalInteractionResponseExecution {
154
+ responded: boolean;
155
+ blocked: boolean;
156
+ reason?: string;
157
+ interactionId: string;
158
+ questionId?: string;
159
+ responseKind?: TerminalInteractionAnswer["response_kind"];
160
+ outcome?: "submitted_or_advanced" | "custom_text_opened" | "confirmed" | "cancelled";
161
+ }
107
162
  export interface ResolvedTerminalConversation {
108
163
  conversationId: string;
109
164
  agent: ExecutorKind;
@@ -114,6 +169,9 @@ export interface ResolvedTerminalConversation {
114
169
  }
115
170
  export interface TerminalApprovalExecution {
116
171
  approved: boolean;
172
+ /** True after either approve_once or reject was dispatched exactly once. */
173
+ decisionDispatched?: boolean;
174
+ decision?: TerminalApprovalDecision;
117
175
  blocked: boolean;
118
176
  reason?: string;
119
177
  key?: string;
@@ -326,6 +384,7 @@ export interface TerminalApprovalAuthorizationContext {
326
384
  terminalControl: TerminalControlRef;
327
385
  inspection: TerminalScreenInspection;
328
386
  fingerprint?: string;
387
+ decision: TerminalApprovalDecision;
329
388
  runtime?: TerminalRuntimeIdentity;
330
389
  }
331
390
  export interface TerminalApprovalAuthorizationDecision {
@@ -337,6 +396,7 @@ export interface TerminalApprovalKeyDispatchContext {
337
396
  terminalControl: TerminalControlRef;
338
397
  inspection: TerminalScreenInspection;
339
398
  fingerprint: string;
399
+ decision: TerminalApprovalDecision;
340
400
  keys: readonly string[];
341
401
  runtime?: TerminalRuntimeIdentity;
342
402
  }
@@ -351,6 +411,7 @@ export declare class TerminalAgentBridge {
351
411
  readonly terminalProvider: TerminalControlProvider;
352
412
  private readonly verifyIdentity?;
353
413
  private readonly nowMs;
414
+ private readonly now;
354
415
  private readonly sleep;
355
416
  private readonly diagnosticLog?;
356
417
  constructor(options: {
@@ -358,6 +419,7 @@ export declare class TerminalAgentBridge {
358
419
  terminalProvider: TerminalControlProvider;
359
420
  verifyIdentity?: TerminalIdentityVerifier;
360
421
  nowMs?: () => number;
422
+ now?: () => Date;
361
423
  sleep?: (milliseconds: number) => Promise<void>;
362
424
  diagnosticLog?: TerminalDiscoveryDiagnosticLog;
363
425
  });
@@ -465,6 +527,7 @@ export declare class TerminalAgentBridge {
465
527
  requestId?: string;
466
528
  }>;
467
529
  approve(agent: ExecutorKind, terminalControl: TerminalControlRef, options?: {
530
+ decision?: TerminalApprovalDecision;
468
531
  expectedFingerprint?: string;
469
532
  scrollbackLines?: number;
470
533
  runtime?: TerminalRuntimeIdentity;
@@ -478,6 +541,15 @@ export declare class TerminalAgentBridge {
478
541
  */
479
542
  beforeKeyDispatch?: (context: TerminalApprovalKeyDispatchContext) => void | Promise<void>;
480
543
  }): Promise<TerminalApprovalExecution>;
544
+ respondInteraction(agent: ExecutorKind, terminalControl: TerminalControlRef, response: TerminalInteractionResponse, options: {
545
+ agentVersion: string;
546
+ expectedFingerprint: string;
547
+ expectedExpiresAt: string;
548
+ scrollbackLines?: number;
549
+ runtime?: TerminalRuntimeIdentity;
550
+ authorize?: (context: TerminalInteractionAuthorizationContext) => TerminalInteractionAuthorizationDecision | Promise<TerminalInteractionAuthorizationDecision>;
551
+ beforeDispatch?: (context: TerminalInteractionBeforeDispatchContext) => void | Promise<void>;
552
+ }): Promise<TerminalInteractionResponseExecution>;
481
553
  monitorPoll(options: {
482
554
  agent: ExecutorKind;
483
555
  terminalControl: TerminalControlRef;
@@ -491,6 +563,7 @@ export declare class TerminalAgentBridge {
491
563
  durableRequest?: TerminalDurableCompletionRequest;
492
564
  }): Promise<TerminalMonitorPoll>;
493
565
  private captureInspection;
566
+ private captureTerminalInteractionOffer;
494
567
  private verifyTerminalIdentity;
495
568
  }
496
569
  /**
@@ -510,5 +583,6 @@ export declare function exactCodexReadyStyledComposerCapture(screen: string): {
510
583
  export declare function terminalApprovalFingerprint(agent: ExecutorKind, terminalControl: TerminalControlRef, inspection: TerminalScreenInspection, options?: {
511
584
  screen?: string;
512
585
  runtime?: TerminalRuntimeIdentity;
586
+ decision?: TerminalApprovalDecision;
513
587
  }): string | undefined;
514
588
  export {};