@jmfederico/pi-web 1.202607.2 → 1.202608.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 (103) hide show
  1. package/README.md +1 -1
  2. package/dist/client/assets/{CodeViewer-B4M13447.js → CodeViewer-D91Sp61M.js} +1 -1
  3. package/dist/client/assets/{TerminalPanel-Bmvj-Ecn.js → TerminalPanel-fYrKc3jh.js} +2 -2
  4. package/dist/client/assets/{UnifiedDiffViewer-C0hygwRo.js → UnifiedDiffViewer-BafLWGtF.js} +1 -1
  5. package/dist/client/assets/index-CA8q9_o7.js +4025 -0
  6. package/dist/client/index.html +1 -1
  7. package/dist/config.js +39 -0
  8. package/dist/config.js.map +1 -1
  9. package/dist/pi-web-plugins/info/infoInternals.js +208 -0
  10. package/dist/pi-web-plugins/info/pi-web-plugin.js +12 -15
  11. package/dist/pi-web-plugins/relays/markdownDocument.js +81 -0
  12. package/dist/pi-web-plugins/relays/package.json +9 -0
  13. package/dist/pi-web-plugins/relays/pi-web-plugin.js +44 -0
  14. package/dist/pi-web-plugins/relays/relayDiscovery.js +228 -0
  15. package/dist/pi-web-plugins/relays/relaysPanelElement.js +550 -0
  16. package/dist/pi-web-plugins/relays/vendor/README.md +24 -0
  17. package/dist/pi-web-plugins/relays/vendor/marked.esm.js +76 -0
  18. package/dist/plugin-api.d.ts +7 -1
  19. package/dist/server/app.js +0 -22
  20. package/dist/server/app.js.map +1 -1
  21. package/dist/server/browserMessageProjection.js +0 -2
  22. package/dist/server/browserMessageProjection.js.map +1 -1
  23. package/dist/server/configRoutes.js +13 -11
  24. package/dist/server/configRoutes.js.map +1 -1
  25. package/dist/server/machines/machineProxyRoutes.js +2 -13
  26. package/dist/server/machines/machineProxyRoutes.js.map +1 -1
  27. package/dist/server/piWebStatus.js +12 -38
  28. package/dist/server/piWebStatus.js.map +1 -1
  29. package/dist/server/sessiond/agentHttpDispatcher.js +108 -0
  30. package/dist/server/sessiond/agentHttpDispatcher.js.map +1 -0
  31. package/dist/server/sessiond/agentProcessEnvironment.js +62 -0
  32. package/dist/server/sessiond/agentProcessEnvironment.js.map +1 -0
  33. package/dist/server/sessiond/sessionServiceDependencies.js +33 -0
  34. package/dist/server/sessiond/sessionServiceDependencies.js.map +1 -0
  35. package/dist/server/sessiond.js +145 -116
  36. package/dist/server/sessiond.js.map +1 -1
  37. package/dist/server/sessions/askUserTool.js +102 -0
  38. package/dist/server/sessions/askUserTool.js.map +1 -0
  39. package/dist/server/sessions/authRoutes.js +0 -10
  40. package/dist/server/sessions/authRoutes.js.map +1 -1
  41. package/dist/server/sessions/authService.js +0 -24
  42. package/dist/server/sessions/authService.js.map +1 -1
  43. package/dist/server/sessions/extensionDialogWaiters.js +76 -0
  44. package/dist/server/sessions/extensionDialogWaiters.js.map +1 -0
  45. package/dist/server/sessions/globalProviderPolicy.js +79 -10
  46. package/dist/server/sessions/globalProviderPolicy.js.map +1 -1
  47. package/dist/server/sessions/messagePaging.js +2 -2
  48. package/dist/server/sessions/messagePaging.js.map +1 -1
  49. package/dist/server/sessions/modelCatalogRefresher.js +8 -0
  50. package/dist/server/sessions/modelCatalogRefresher.js.map +1 -1
  51. package/dist/server/sessions/oauthLoginFlowService.js +2 -5
  52. package/dist/server/sessions/oauthLoginFlowService.js.map +1 -1
  53. package/dist/server/sessions/parentSessionLocator.js +75 -0
  54. package/dist/server/sessions/parentSessionLocator.js.map +1 -0
  55. package/dist/server/sessions/pendingAskStore.js +275 -0
  56. package/dist/server/sessions/pendingAskStore.js.map +1 -0
  57. package/dist/server/sessions/pendingExtensionDialogStore.js +196 -0
  58. package/dist/server/sessions/pendingExtensionDialogStore.js.map +1 -0
  59. package/dist/server/sessions/piSessionManagerGateway.js +182 -2
  60. package/dist/server/sessions/piSessionManagerGateway.js.map +1 -1
  61. package/dist/server/sessions/piSessionService.js +721 -203
  62. package/dist/server/sessions/piSessionService.js.map +1 -1
  63. package/dist/server/sessions/sessionFileHeader.js +117 -0
  64. package/dist/server/sessions/sessionFileHeader.js.map +1 -0
  65. package/dist/server/sessions/sessionRoutes.js +169 -54
  66. package/dist/server/sessions/sessionRoutes.js.map +1 -1
  67. package/dist/server/sessions/sessionSummaryScanner.js +619 -0
  68. package/dist/server/sessions/sessionSummaryScanner.js.map +1 -0
  69. package/dist/server/sessions/spawnSessionTool.js +8 -1
  70. package/dist/server/sessions/spawnSessionTool.js.map +1 -1
  71. package/dist/server/sessions/spawnSubsessionTool.js +7 -1
  72. package/dist/server/sessions/spawnSubsessionTool.js.map +1 -1
  73. package/dist/server/sessions/spawnTargetResolver.js +3 -16
  74. package/dist/server/sessions/spawnTargetResolver.js.map +1 -1
  75. package/dist/server/workspaces/effectivePathAccess.js +0 -19
  76. package/dist/server/workspaces/effectivePathAccess.js.map +1 -1
  77. package/dist/server/workspaces/gitWorktreeDiscovery.js +9 -0
  78. package/dist/server/workspaces/gitWorktreeDiscovery.js.map +1 -1
  79. package/dist/server/workspaces/projectWorkspaceCwds.js +22 -0
  80. package/dist/server/workspaces/projectWorkspaceCwds.js.map +1 -0
  81. package/dist/server/workspaces/workspaceDeletionRoutes.js +30 -4
  82. package/dist/server/workspaces/workspaceDeletionRoutes.js.map +1 -1
  83. package/dist/server/workspaces/workspaceService.js +15 -2
  84. package/dist/server/workspaces/workspaceService.js.map +1 -1
  85. package/dist/sessiond/config.js +2 -2
  86. package/dist/sessiond/config.js.map +1 -1
  87. package/dist/shared/activity.js +9 -1
  88. package/dist/shared/activity.js.map +1 -1
  89. package/dist/shared/apiTypes.d.ts +300 -24
  90. package/dist/shared/apiTypes.js +30 -15
  91. package/dist/shared/apiTypes.js.map +1 -1
  92. package/dist/shared/capabilities.js +10 -41
  93. package/dist/shared/capabilities.js.map +1 -1
  94. package/dist/shared/federatedRoutes.js +4 -3
  95. package/dist/shared/federatedRoutes.js.map +1 -1
  96. package/docs/config.md +115 -11
  97. package/docs/plugins.md +82 -14
  98. package/package.json +11 -9
  99. package/dist/client/assets/index-TvPsRyS1.js +0 -3545
  100. package/dist/server/sessiond/sessionDaemonStartup.js +0 -49
  101. package/dist/server/sessiond/sessionDaemonStartup.js.map +0 -1
  102. package/dist/server/sessions/sessionArchiveMigration.js +0 -590
  103. package/dist/server/sessions/sessionArchiveMigration.js.map +0 -1
@@ -1,20 +1,12 @@
1
1
  export type MachineKind = "local" | "remote";
2
2
  export type MachineStatus = "unknown" | "online" | "offline" | "error";
3
- export declare const PI_WEB_CAPABILITIES: {
4
- readonly sessionsDeleteArchived: "sessions.deleteArchived";
5
- readonly sessionsBulkMutations: "sessions.bulkMutations";
6
- readonly sessionsCleanup: "sessions.cleanup";
7
- readonly sessionsReload: "sessions.reload";
8
- readonly sessionsClearQueue: "sessions.clearQueue";
9
- readonly sessionsPersistedState: "sessions.persistedState";
10
- readonly sessionsNotifications: "sessions.notifications";
11
- readonly sessionsUnread: "sessions.unread";
12
- readonly promptAttachments: "prompt.attachments";
13
- readonly workspaceFileSuggestions: "workspace.fileSuggestions";
14
- readonly piPackagesManage: "piPackages.manage";
15
- readonly selectedMachineSettings: "settings.selectedMachine";
16
- readonly agentProfileConfig: "settings.agentProfile";
17
- };
3
+ /**
4
+ * Registry of feature-gating capabilities. Currently empty: every component is
5
+ * expected to run the current version, so no capability is advertised. Add an
6
+ * entry here (plus the runtime/requirements entries in `capabilities.ts`) when
7
+ * a future feature needs rolling-version gating again.
8
+ */
9
+ export declare const PI_WEB_CAPABILITIES: {};
18
10
  export type PiWebCapability = typeof PI_WEB_CAPABILITIES[keyof typeof PI_WEB_CAPABILITIES];
19
11
  export interface Machine {
20
12
  id: string;
@@ -86,6 +78,18 @@ export interface PiWebConfigValues {
86
78
  * while the capability stabilizes. Requires spawnSessions to be enabled.
87
79
  */
88
80
  subsessions?: boolean;
81
+ /**
82
+ * When true, LLMs can post a question set to the browser via the ask_user
83
+ * tool. On by default; set to `false` to remove the tool from the runtime.
84
+ */
85
+ askUser?: boolean;
86
+ /**
87
+ * How long an extension dialog may wait for an answer before the daemon
88
+ * auto-cancels it, in milliseconds. Applies only when the extension set no
89
+ * `timeout` of its own (the sooner of the two wins); `0` waits forever.
90
+ * Tuning knob only — extension dialogs are always enabled.
91
+ */
92
+ extensionDialogsTimeoutMs?: number;
89
93
  /** Desired Pi-compatible agent profile and companion CLI (Pi by default). */
90
94
  agent?: PiWebAgentConfig;
91
95
  }
@@ -137,6 +141,7 @@ export interface PiWebConfigEnvOverrides {
137
141
  allowedHosts: boolean;
138
142
  spawnSessions: boolean;
139
143
  subsessions: boolean;
144
+ askUser: boolean;
140
145
  agentCommand: boolean;
141
146
  agentDir: boolean;
142
147
  /** The configured directory environment source, even when Pi compatibility is inactive for the desired command. */
@@ -168,8 +173,8 @@ export interface Workspace {
168
173
  isMain: boolean;
169
174
  isGitRepo: boolean;
170
175
  isGitWorktree: boolean;
171
- /** Workspace-effective project/global settings needed by workspace UI features. */
172
- effectiveConfig?: WorkspaceEffectiveConfig;
176
+ /** Workspace-effective project/global settings needed by workspace UI features. Always present on current server workspace responses. */
177
+ effectiveConfig: WorkspaceEffectiveConfig;
173
178
  }
174
179
  export interface SessionRef {
175
180
  id: string;
@@ -295,6 +300,21 @@ export interface SessionInfo extends SessionRef {
295
300
  messageCount: number;
296
301
  firstMessage: string;
297
302
  parentSessionPath?: string;
303
+ /**
304
+ * Working directory of the parent session, read from the parent session file
305
+ * header. Only populated when the parent is outside this listing's cwd, so a
306
+ * child whose parent lives in another worktree can point at it instead of
307
+ * only reporting that the parent is unavailable here.
308
+ */
309
+ parentSessionCwd?: string;
310
+ /** Session id of an out-of-cwd parent, so the browser can select it after switching workspace. */
311
+ parentSessionId?: string;
312
+ /**
313
+ * Number of sessions in other workspaces of the same project that record this
314
+ * session as their parent. Only set when non-zero, so a parent can show that
315
+ * it has children which are not nested beneath it in this workspace.
316
+ */
317
+ childSessionsElsewhere?: number;
298
318
  archived?: boolean;
299
319
  archivedAt?: string;
300
320
  }
@@ -306,7 +326,7 @@ export interface ArchiveSessionsResponse {
306
326
  }
307
327
  export interface SessionBulkMutationRef {
308
328
  id: string;
309
- cwd?: string;
329
+ cwd: string;
310
330
  }
311
331
  export interface SessionBulkMutationRequest {
312
332
  sessions: SessionBulkMutationRef[];
@@ -365,11 +385,244 @@ export interface SessionActivity {
365
385
  label: string;
366
386
  detail?: string;
367
387
  at: string;
388
+ /**
389
+ * Set only on the startup window's own reports. A startup phase is genuinely
390
+ * in progress, so it is published as `active` and rendered like any other
391
+ * activity, but *starting* a session is not *working* in it: there is nothing
392
+ * to stop, nothing that blocks reloading from disk, and no workspace-level
393
+ * work to report. `isSessionActive()` reads this to keep the two apart.
394
+ */
395
+ startup?: boolean;
368
396
  }
369
397
  export interface QueuedSessionMessage {
370
398
  kind: "steer" | "followUp";
371
399
  text: string;
372
400
  }
401
+ /**
402
+ * `customType` of the follow-up custom message that carries a closed ask back to
403
+ * the model and into the transcript. Its `details` are an {@link AskUserOutcome}.
404
+ */
405
+ export declare const ASK_USER_ANSWERS_CUSTOM_TYPE = "pi-web.ask.answers";
406
+ /** Largest question set one `ask_user` call may post. */
407
+ export declare const ASK_USER_QUESTION_LIMIT = 20;
408
+ /** Largest option list one question may offer. */
409
+ export declare const ASK_USER_OPTION_LIMIT = 12;
410
+ /** Length bound for ids: the ask id, question ids, and option values. */
411
+ export declare const ASK_USER_ID_MAX_LENGTH = 128;
412
+ /** Length bound for model-authored prose: questions, details, and option labels. */
413
+ export declare const ASK_USER_TEXT_MAX_LENGTH = 1000;
414
+ /** Length bound for the free text a user types as a custom answer. */
415
+ export declare const ASK_USER_OTHER_TEXT_MAX_LENGTH = 4000;
416
+ /** One selectable option of an {@link AskUserQuestion}. */
417
+ export interface AskUserQuestionOption {
418
+ /** Stable machine value reported back to the model. */
419
+ value: string;
420
+ /** Short human label rendered in the browser. */
421
+ label: string;
422
+ /** Optional clarifying line rendered under the label. */
423
+ detail?: string;
424
+ }
425
+ /**
426
+ * One question of an `ask_user` set. Questions are never required: the user may
427
+ * submit while leaving any of them untouched, and unanswered questions are
428
+ * reported to the model as such.
429
+ */
430
+ export interface AskUserQuestion {
431
+ /** Unique within the ask; used as the answer key. */
432
+ id: string;
433
+ /** The question itself, as one plain-text line. */
434
+ question: string;
435
+ /** Optional supporting context rendered under the question. */
436
+ detail?: string;
437
+ /** Offered options; may be empty when only free text makes sense. */
438
+ options: AskUserQuestionOption[];
439
+ /** When true, several options may be selected at once. */
440
+ multiple?: boolean;
441
+ }
442
+ /**
443
+ * The open, unanswered question set of a session. Daemon-owned and reported in
444
+ * {@link SessionStatus}, so a reconnecting or reloading browser rehydrates it
445
+ * without depending on having seen the `ask.opened` event.
446
+ */
447
+ export interface PendingAskUser {
448
+ askId: string;
449
+ askedAt: string;
450
+ questions: AskUserQuestion[];
451
+ }
452
+ /** Why an ask stopped being the session's open ask. */
453
+ export type AskUserCloseReason = "submitted" | "superseded" | "cancelled";
454
+ /**
455
+ * What the user replied to one question. Absent from a submission means the
456
+ * question was left untouched; an empty `values` with no `otherText` means the
457
+ * same thing.
458
+ */
459
+ export interface AskUserAnswer {
460
+ /** Matches an {@link AskUserQuestion.id} of the open ask. */
461
+ id: string;
462
+ /** Selected {@link AskUserQuestionOption.value} entries; several only when the question allows it. */
463
+ values: string[];
464
+ /** Free text typed as the question's custom answer. */
465
+ otherText?: string;
466
+ }
467
+ /** One submit of the open ask: answers for some or all of its questions. */
468
+ export interface AskUserSubmission {
469
+ answers: AskUserAnswer[];
470
+ }
471
+ /**
472
+ * One question of a closed ask paired with what came back for it. Carries the
473
+ * question itself so the record renders without the original ask still existing.
474
+ */
475
+ export interface AskUserQuestionRecord {
476
+ question: AskUserQuestion;
477
+ /** True when at least one option was selected or custom text was given. */
478
+ answered: boolean;
479
+ values: string[];
480
+ otherText?: string;
481
+ }
482
+ /**
483
+ * The complete result of an ask, computed when it closes. Shared by the
484
+ * model-facing follow-up message and the browser's read-only record, so both
485
+ * report the same answered and unanswered questions.
486
+ */
487
+ export interface AskUserOutcome {
488
+ askId: string;
489
+ reason: AskUserCloseReason;
490
+ askedAt: string;
491
+ closedAt: string;
492
+ questions: AskUserQuestionRecord[];
493
+ answeredCount: number;
494
+ /** Ids of the questions left unanswered, in the order they were asked. */
495
+ unansweredIds: string[];
496
+ /** One line, for example `Answered 3 of 5; unanswered: q2, q5`. */
497
+ summary: string;
498
+ }
499
+ /**
500
+ * Result of the browser closing an ask by submitting or cancelling it.
501
+ *
502
+ * `"stale"` is an ordinary race rather than an error: the named ask was already
503
+ * submitted, superseded by a newer one, or gone with its session runtime. The
504
+ * browser drops its card and trusts `sessionStatus`, which is returned in both
505
+ * cases so closing an ask needs no follow-up status request.
506
+ */
507
+ export interface AskUserCloseResponse {
508
+ result: "closed" | "stale";
509
+ /** Present only when this call is the one that closed the ask. */
510
+ outcome?: AskUserOutcome;
511
+ sessionStatus: SessionStatus;
512
+ }
513
+ /** Length bound for extension-dialog ids. */
514
+ export declare const EXTENSION_DIALOG_ID_MAX_LENGTH = 128;
515
+ /** Length bound for extension-authored dialog prose: titles, messages, options, placeholders. */
516
+ export declare const EXTENSION_DIALOG_TEXT_MAX_LENGTH = 1000;
517
+ /** Largest option list one `select` dialog may offer. */
518
+ export declare const EXTENSION_DIALOG_OPTION_LIMIT = 24;
519
+ /** Length bound for the text a user types into an `input` dialog. */
520
+ export declare const EXTENSION_DIALOG_INPUT_MAX_LENGTH = 4000;
521
+ /** Which extension UI dialog primitive a pending dialog belongs to. */
522
+ export type ExtensionDialogKind = "confirm" | "select" | "input";
523
+ /**
524
+ * The value a user gave in an extension dialog: a boolean for `confirm`, the
525
+ * chosen option for `select`, the typed text for `input`. Absent when the
526
+ * dialog closed without an answer.
527
+ */
528
+ export type ExtensionDialogAnswer = boolean | string;
529
+ /**
530
+ * Why a dialog stopped being open. `"answered"` carries an
531
+ * {@link ExtensionDialogAnswer}; every other reason is a close without one.
532
+ */
533
+ export type ExtensionDialogCloseReason = "answered" | "cancelled" | "timeout" | "aborted" | "session-ended";
534
+ /**
535
+ * One open extension dialog of a session, opened by `ctx.ui.confirm()`,
536
+ * `ctx.ui.select()`, or `ctx.ui.input()`. Daemon-owned and reported in
537
+ * {@link SessionStatus.pendingDialogs}, so a reconnecting or reloading browser
538
+ * rehydrates it without depending on having seen the `dialog.opened` event.
539
+ *
540
+ * Unlike asks, several dialogs may be open per session at once: each dialog is
541
+ * an independent blocking wait inside extension code, so opening never
542
+ * supersedes an existing one.
543
+ */
544
+ export interface PendingExtensionDialog {
545
+ dialogId: string;
546
+ kind: ExtensionDialogKind;
547
+ title: string;
548
+ /** Supporting line of a `confirm` dialog. */
549
+ message?: string;
550
+ /** Offered choices of a `select` dialog. */
551
+ options?: string[];
552
+ /** Placeholder text of an `input` dialog. */
553
+ placeholder?: string;
554
+ askedAt: string;
555
+ /**
556
+ * When the dialog auto-cancels, as ISO: the sooner of the extension's own
557
+ * `timeout` and the daemon's `extensionDialogsTimeoutMs` default. Absent
558
+ * when the dialog waits forever.
559
+ */
560
+ timeoutAt?: string;
561
+ /** Opened while a run was in flight, so `agent_end` settles it as `"aborted"`. */
562
+ runScoped: boolean;
563
+ }
564
+ /**
565
+ * The complete result of a closed extension dialog. Unlike an ask outcome it
566
+ * stays small — the dialog itself is not embedded, because a settled card is a
567
+ * browser-local record that stays until the user dismisses it; reloads
568
+ * rehydrate open dialogs from {@link SessionStatus.pendingDialogs} alone.
569
+ */
570
+ export interface ExtensionDialogOutcome {
571
+ dialogId: string;
572
+ reason: ExtensionDialogCloseReason;
573
+ /** Present only when `reason` is `"answered"`. */
574
+ answer?: ExtensionDialogAnswer;
575
+ askedAt: string;
576
+ closedAt: string;
577
+ }
578
+ /**
579
+ * Browser request to answer an open extension dialog with the user's value.
580
+ * `cwd` rides along as the standard session-lookup field, as on every other
581
+ * session route; whether the value fits the dialog's kind is the store's call,
582
+ * so an ill-fitting answer is a 400 that leaves the dialog open.
583
+ */
584
+ export interface ExtensionDialogAnswerRequest {
585
+ cwd?: string;
586
+ dialogId: string;
587
+ value: ExtensionDialogAnswer;
588
+ }
589
+ /** Browser request to dismiss an open extension dialog without an answer. */
590
+ export interface ExtensionDialogCancelRequest {
591
+ cwd?: string;
592
+ dialogId: string;
593
+ }
594
+ /**
595
+ * Result of the browser answering or cancelling an extension dialog. Mirrors
596
+ * {@link AskUserCloseResponse}: `"stale"` is an ordinary lost race — another
597
+ * browser, a timeout, or a teardown closed the dialog first — not an error.
598
+ * The browser drops its card and trusts `sessionStatus`, which is returned in
599
+ * both cases so closing a dialog needs no follow-up status request.
600
+ */
601
+ export interface ExtensionDialogCloseResponse {
602
+ result: "closed" | "stale";
603
+ /** Present only when this call is the one that closed the dialog. */
604
+ outcome?: ExtensionDialogOutcome;
605
+ sessionStatus: SessionStatus;
606
+ }
607
+ /**
608
+ * Progress of the session startup window, where the daemon is still
609
+ * constructing the agent session and no `PiAgentSession` exists yet, so
610
+ * `activity.update` cannot be published for it.
611
+ *
612
+ * `startupToken` is the opaque label a create request supplied, echoed back so a
613
+ * browser row still waiting for a session id recognises its own construction.
614
+ * The daemon never interprets it and it never becomes the session id:
615
+ * `activity.sessionId` always carries the real id, which is how an *open* of a
616
+ * session the browser already knows is routed instead.
617
+ *
618
+ * `activity.phase === "idle"` means the startup window ended with nothing left
619
+ * to report, so a browser that substituted its own text should restore it.
620
+ */
621
+ export interface SessionStartupProgressEvent {
622
+ type: "session.startup";
623
+ startupToken?: string;
624
+ activity: SessionActivity;
625
+ }
373
626
  /**
374
627
  * A pi-native image attachment carried with a prompt. The wire format mirrors
375
628
  * pi's own `ImageContent` shape (`{ type: "image", data, mimeType }`) so these
@@ -428,7 +681,7 @@ export interface AuthProviderOption {
428
681
  name: string;
429
682
  authType: AuthType;
430
683
  status: AuthProviderStatus;
431
- /** Additive hint: use the generic AuthInteraction transport instead of the legacy one-secret form. */
684
+ /** Present when the provider logs in through the generic AuthInteraction flow. */
432
685
  loginFlow?: "interactive";
433
686
  }
434
687
  export interface AuthProvidersResponse {
@@ -453,9 +706,7 @@ export interface OAuthFlowState {
453
706
  message: string;
454
707
  placeholder?: string;
455
708
  allowEmpty?: boolean;
456
- /** Additive semantic detail; legacy peers continue to use `kind`. */
457
- promptType?: "text" | "secret" | "manual_code";
458
- kind: "prompt" | "manual";
709
+ promptType: "text" | "secret" | "manual_code";
459
710
  };
460
711
  select?: {
461
712
  requestId: string;
@@ -534,6 +785,17 @@ export interface SessionStatus {
534
785
  * there are none. See {@link SessionWarning}.
535
786
  */
536
787
  warnings?: SessionWarning[];
788
+ /**
789
+ * The session's open `ask_user` question set, when one is waiting for the
790
+ * user. Daemon-owned, so it survives browser reload and web/API restarts.
791
+ */
792
+ pendingAsk?: PendingAskUser;
793
+ /**
794
+ * The session's open extension dialogs, oldest first, when any are waiting
795
+ * for the user. Daemon-owned, so they survive browser reload and web/API
796
+ * restarts. Several may be open at once; the UI presents them as a queue.
797
+ */
798
+ pendingDialogs?: PendingExtensionDialog[];
537
799
  }
538
800
  export interface WorkspaceActivity {
539
801
  cwd: string;
@@ -920,10 +1182,24 @@ type SessionUiEventBody = {
920
1182
  type: "command.output";
921
1183
  level: "info" | "success" | "error";
922
1184
  message: string;
923
- notificationId?: string;
924
1185
  } | SessionNotificationInboxEvent | {
925
1186
  type: "session.error";
926
1187
  message: string;
1188
+ } | {
1189
+ type: "ask.opened";
1190
+ ask: PendingAskUser;
1191
+ } | {
1192
+ type: "ask.closed";
1193
+ askId: string;
1194
+ reason: AskUserCloseReason;
1195
+ } | {
1196
+ type: "dialog.opened";
1197
+ dialog: PendingExtensionDialog;
1198
+ } | {
1199
+ type: "dialog.closed";
1200
+ dialogId: string;
1201
+ reason: ExtensionDialogCloseReason;
1202
+ answer?: ExtensionDialogAnswer;
927
1203
  } | {
928
1204
  type: "session.name";
929
1205
  sessionId: string;
@@ -937,5 +1213,5 @@ type SessionUiEventBody = {
937
1213
  };
938
1214
  export type GlobalSessionEvent = Extract<SessionUiEventBody, {
939
1215
  type: "status.update" | "activity.update" | "session.name" | "session.created";
940
- }> | SessionNotificationSummaryEvent | SessionUnreadEvent;
1216
+ }> | SessionNotificationSummaryEvent | SessionUnreadEvent | SessionStartupProgressEvent;
941
1217
  export type RealtimeEvent = GlobalSessionEvent | TerminalUiEvent | WorkspaceActivityUiEvent;
@@ -1,18 +1,10 @@
1
- export const PI_WEB_CAPABILITIES = {
2
- sessionsDeleteArchived: "sessions.deleteArchived",
3
- sessionsBulkMutations: "sessions.bulkMutations",
4
- sessionsCleanup: "sessions.cleanup",
5
- sessionsReload: "sessions.reload",
6
- sessionsClearQueue: "sessions.clearQueue",
7
- sessionsPersistedState: "sessions.persistedState",
8
- sessionsNotifications: "sessions.notifications",
9
- sessionsUnread: "sessions.unread",
10
- promptAttachments: "prompt.attachments",
11
- workspaceFileSuggestions: "workspace.fileSuggestions",
12
- piPackagesManage: "piPackages.manage",
13
- selectedMachineSettings: "settings.selectedMachine",
14
- agentProfileConfig: "settings.agentProfile",
15
- };
1
+ /**
2
+ * Registry of feature-gating capabilities. Currently empty: every component is
3
+ * expected to run the current version, so no capability is advertised. Add an
4
+ * entry here (plus the runtime/requirements entries in `capabilities.ts`) when
5
+ * a future feature needs rolling-version gating again.
6
+ */
7
+ export const PI_WEB_CAPABILITIES = {};
16
8
  export const SESSION_UNREAD_LIMIT = 1_000;
17
9
  export const SESSION_UNREAD_SESSION_ID_MAX_LENGTH = 512;
18
10
  export const SESSION_UNREAD_CWD_MAX_LENGTH = 32 * 1024;
@@ -20,5 +12,28 @@ export const SESSION_UNREAD_CATALOG_ID_MAX_LENGTH = 512;
20
12
  export const SESSION_UNREAD_COMPLETED_AT_MAX_LENGTH = 64;
21
13
  export const SESSION_NOTIFICATION_LIMIT = 100;
22
14
  export const SESSION_NOTIFICATION_MESSAGE_BYTES = 8 * 1024;
15
+ /**
16
+ * `customType` of the follow-up custom message that carries a closed ask back to
17
+ * the model and into the transcript. Its `details` are an {@link AskUserOutcome}.
18
+ */
19
+ export const ASK_USER_ANSWERS_CUSTOM_TYPE = "pi-web.ask.answers";
20
+ /** Largest question set one `ask_user` call may post. */
21
+ export const ASK_USER_QUESTION_LIMIT = 20;
22
+ /** Largest option list one question may offer. */
23
+ export const ASK_USER_OPTION_LIMIT = 12;
24
+ /** Length bound for ids: the ask id, question ids, and option values. */
25
+ export const ASK_USER_ID_MAX_LENGTH = 128;
26
+ /** Length bound for model-authored prose: questions, details, and option labels. */
27
+ export const ASK_USER_TEXT_MAX_LENGTH = 1_000;
28
+ /** Length bound for the free text a user types as a custom answer. */
29
+ export const ASK_USER_OTHER_TEXT_MAX_LENGTH = 4_000;
30
+ /** Length bound for extension-dialog ids. */
31
+ export const EXTENSION_DIALOG_ID_MAX_LENGTH = 128;
32
+ /** Length bound for extension-authored dialog prose: titles, messages, options, placeholders. */
33
+ export const EXTENSION_DIALOG_TEXT_MAX_LENGTH = 1_000;
34
+ /** Largest option list one `select` dialog may offer. */
35
+ export const EXTENSION_DIALOG_OPTION_LIMIT = 24;
36
+ /** Length bound for the text a user types into an `input` dialog. */
37
+ export const EXTENSION_DIALOG_INPUT_MAX_LENGTH = 4_000;
23
38
  export const SESSION_TREE_CUSTOM_INSTRUCTIONS_MAX_LENGTH = 10_000;
24
39
  //# sourceMappingURL=apiTypes.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"apiTypes.js","sourceRoot":"","sources":["../../src/shared/apiTypes.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,sBAAsB,EAAE,yBAAyB;IACjD,qBAAqB,EAAE,wBAAwB;IAC/C,eAAe,EAAE,kBAAkB;IACnC,cAAc,EAAE,iBAAiB;IACjC,kBAAkB,EAAE,qBAAqB;IACzC,sBAAsB,EAAE,yBAAyB;IACjD,qBAAqB,EAAE,wBAAwB;IAC/C,cAAc,EAAE,iBAAiB;IACjC,iBAAiB,EAAE,oBAAoB;IACvC,wBAAwB,EAAE,2BAA2B;IACrD,gBAAgB,EAAE,mBAAmB;IACrC,uBAAuB,EAAE,0BAA0B;IACnD,kBAAkB,EAAE,uBAAuB;CACnC,CAAC;AA8LX,MAAM,CAAC,MAAM,oBAAoB,GAAG,KAAK,CAAC;AAC1C,MAAM,CAAC,MAAM,oCAAoC,GAAG,GAAG,CAAC;AACxD,MAAM,CAAC,MAAM,6BAA6B,GAAG,EAAE,GAAG,IAAI,CAAC;AACvD,MAAM,CAAC,MAAM,oCAAoC,GAAG,GAAG,CAAC;AACxD,MAAM,CAAC,MAAM,sCAAsC,GAAG,EAAE,CAAC;AAqCzD,MAAM,CAAC,MAAM,0BAA0B,GAAG,GAAG,CAAC;AAC9C,MAAM,CAAC,MAAM,kCAAkC,GAAG,CAAC,GAAG,IAAI,CAAC;AA6oB3D,MAAM,CAAC,MAAM,2CAA2C,GAAG,MAAM,CAAC"}
1
+ {"version":3,"file":"apiTypes.js","sourceRoot":"","sources":["../../src/shared/apiTypes.ts"],"names":[],"mappings":"AAGA;;;;;GAKG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,EAAW,CAAC;AA2M/C,MAAM,CAAC,MAAM,oBAAoB,GAAG,KAAK,CAAC;AAC1C,MAAM,CAAC,MAAM,oCAAoC,GAAG,GAAG,CAAC;AACxD,MAAM,CAAC,MAAM,6BAA6B,GAAG,EAAE,GAAG,IAAI,CAAC;AACvD,MAAM,CAAC,MAAM,oCAAoC,GAAG,GAAG,CAAC;AACxD,MAAM,CAAC,MAAM,sCAAsC,GAAG,EAAE,CAAC;AAqCzD,MAAM,CAAC,MAAM,0BAA0B,GAAG,GAAG,CAAC;AAC9C,MAAM,CAAC,MAAM,kCAAkC,GAAG,CAAC,GAAG,IAAI,CAAC;AAiN3D;;;GAGG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,oBAAoB,CAAC;AAEjE,yDAAyD;AACzD,MAAM,CAAC,MAAM,uBAAuB,GAAG,EAAE,CAAC;AAC1C,kDAAkD;AAClD,MAAM,CAAC,MAAM,qBAAqB,GAAG,EAAE,CAAC;AACxC,yEAAyE;AACzE,MAAM,CAAC,MAAM,sBAAsB,GAAG,GAAG,CAAC;AAC1C,oFAAoF;AACpF,MAAM,CAAC,MAAM,wBAAwB,GAAG,KAAK,CAAC;AAC9C,sEAAsE;AACtE,MAAM,CAAC,MAAM,8BAA8B,GAAG,KAAK,CAAC;AA4GpD,6CAA6C;AAC7C,MAAM,CAAC,MAAM,8BAA8B,GAAG,GAAG,CAAC;AAClD,iGAAiG;AACjG,MAAM,CAAC,MAAM,gCAAgC,GAAG,KAAK,CAAC;AACtD,yDAAyD;AACzD,MAAM,CAAC,MAAM,6BAA6B,GAAG,EAAE,CAAC;AAChD,qEAAqE;AACrE,MAAM,CAAC,MAAM,iCAAiC,GAAG,KAAK,CAAC;AAglBvD,MAAM,CAAC,MAAM,2CAA2C,GAAG,MAAM,CAAC"}
@@ -1,48 +1,15 @@
1
1
  import { PI_WEB_CAPABILITIES } from "./apiTypes.js";
2
2
  export { PI_WEB_CAPABILITIES };
3
+ // Annotated (not inferred) so the empty and populated registry shapes are
4
+ // identical for consumers: `Object.values` on the empty registry alone would
5
+ // not infer `PiWebCapability[]`.
3
6
  export const KNOWN_PI_WEB_CAPABILITIES = Object.values(PI_WEB_CAPABILITIES);
4
7
  const knownPiWebCapabilities = new Set(KNOWN_PI_WEB_CAPABILITIES);
5
- export const WEB_RUNTIME_CAPABILITIES = [
6
- PI_WEB_CAPABILITIES.sessionsDeleteArchived,
7
- PI_WEB_CAPABILITIES.sessionsBulkMutations,
8
- PI_WEB_CAPABILITIES.sessionsCleanup,
9
- PI_WEB_CAPABILITIES.sessionsReload,
10
- PI_WEB_CAPABILITIES.sessionsClearQueue,
11
- PI_WEB_CAPABILITIES.sessionsPersistedState,
12
- PI_WEB_CAPABILITIES.sessionsNotifications,
13
- PI_WEB_CAPABILITIES.sessionsUnread,
14
- PI_WEB_CAPABILITIES.promptAttachments,
15
- PI_WEB_CAPABILITIES.workspaceFileSuggestions,
16
- PI_WEB_CAPABILITIES.piPackagesManage,
17
- PI_WEB_CAPABILITIES.selectedMachineSettings,
18
- PI_WEB_CAPABILITIES.agentProfileConfig,
19
- ];
20
- export const SESSIOND_RUNTIME_CAPABILITIES = [
21
- PI_WEB_CAPABILITIES.sessionsDeleteArchived,
22
- PI_WEB_CAPABILITIES.sessionsBulkMutations,
23
- PI_WEB_CAPABILITIES.sessionsCleanup,
24
- PI_WEB_CAPABILITIES.sessionsReload,
25
- PI_WEB_CAPABILITIES.sessionsClearQueue,
26
- PI_WEB_CAPABILITIES.sessionsPersistedState,
27
- PI_WEB_CAPABILITIES.sessionsNotifications,
28
- PI_WEB_CAPABILITIES.sessionsUnread,
29
- PI_WEB_CAPABILITIES.promptAttachments,
30
- ];
31
- const EFFECTIVE_CAPABILITY_REQUIREMENTS = {
32
- [PI_WEB_CAPABILITIES.sessionsDeleteArchived]: ["web", "sessiond"],
33
- [PI_WEB_CAPABILITIES.sessionsBulkMutations]: ["web", "sessiond"],
34
- [PI_WEB_CAPABILITIES.sessionsCleanup]: ["web", "sessiond"],
35
- [PI_WEB_CAPABILITIES.sessionsReload]: ["web", "sessiond"],
36
- [PI_WEB_CAPABILITIES.sessionsClearQueue]: ["web", "sessiond"],
37
- [PI_WEB_CAPABILITIES.sessionsPersistedState]: ["web", "sessiond"],
38
- [PI_WEB_CAPABILITIES.sessionsNotifications]: ["web", "sessiond"],
39
- [PI_WEB_CAPABILITIES.sessionsUnread]: ["web", "sessiond"],
40
- [PI_WEB_CAPABILITIES.promptAttachments]: ["web", "sessiond"],
41
- [PI_WEB_CAPABILITIES.workspaceFileSuggestions]: ["web"],
42
- [PI_WEB_CAPABILITIES.piPackagesManage]: ["web"],
43
- [PI_WEB_CAPABILITIES.selectedMachineSettings]: ["web"],
44
- [PI_WEB_CAPABILITIES.agentProfileConfig]: ["web"],
45
- };
8
+ export const WEB_RUNTIME_CAPABILITIES = [];
9
+ export const SESSIOND_RUNTIME_CAPABILITIES = [];
10
+ // `Record<never, …>` while the registry is empty; populated entries map each
11
+ // capability to the components that must both advertise it.
12
+ const EFFECTIVE_CAPABILITY_REQUIREMENTS = {};
46
13
  export function isPiWebCapability(value) {
47
14
  return typeof value === "string" && knownPiWebCapabilities.has(value);
48
15
  }
@@ -56,6 +23,8 @@ export function parseKnownPiWebCapabilities(value) {
56
23
  }
57
24
  export function effectivePiWebCapabilities(components) {
58
25
  return KNOWN_PI_WEB_CAPABILITIES.filter((capability) => {
26
+ // `never` while the registry is empty; the annotation keeps the filter body
27
+ // typed the same whether or not capabilities exist.
59
28
  const requiredComponents = EFFECTIVE_CAPABILITY_REQUIREMENTS[capability];
60
29
  return requiredComponents.every((component) => {
61
30
  const runtime = components[component];
@@ -1 +1 @@
1
- {"version":3,"file":"capabilities.js","sourceRoot":"","sources":["../../src/shared/capabilities.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"capabilities.js","sourceRoot":"","sources":["../../src/shared/capabilities.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAgF,MAAM,eAAe,CAAC;AAElI,OAAO,EAAE,mBAAmB,EAAE,CAAC;AAG/B,0EAA0E;AAC1E,6EAA6E;AAC7E,iCAAiC;AACjC,MAAM,CAAC,MAAM,yBAAyB,GAAsB,MAAM,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;AAC/F,MAAM,sBAAsB,GAAwB,IAAI,GAAG,CAAC,yBAAyB,CAAC,CAAC;AAEvF,MAAM,CAAC,MAAM,wBAAwB,GAAG,EAAgD,CAAC;AAEzF,MAAM,CAAC,MAAM,6BAA6B,GAAG,EAAgD,CAAC;AAE9F,6EAA6E;AAC7E,4DAA4D;AAC5D,MAAM,iCAAiC,GAA8D,EAAE,CAAC;AAExG,MAAM,UAAU,iBAAiB,CAAC,KAAc;IAC9C,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,sBAAsB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACxE,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,MAAiE,EAAE,UAA2B;IACpI,OAAO,MAAM,EAAE,YAAY,EAAE,QAAQ,CAAC,UAAU,CAAC,KAAK,IAAI,CAAC;AAC7D,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,KAAc;IACxD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,OAAO,UAAU,KAAK,QAAQ,CAAC;QAAE,OAAO,SAAS,CAAC;IAC5G,OAAO,KAAK,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;AACzC,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,UAA6G;IACtJ,OAAO,yBAAyB,CAAC,MAAM,CAAC,CAAC,UAAU,EAAE,EAAE;QACrD,4EAA4E;QAC5E,oDAAoD;QACpD,MAAM,kBAAkB,GAAqC,iCAAiC,CAAC,UAAU,CAAC,CAAC;QAC3G,OAAO,kBAAkB,CAAC,KAAK,CAAC,CAAC,SAAS,EAAE,EAAE;YAC5C,MAAM,OAAO,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC;YACtC,OAAO,OAAO,EAAE,SAAS,KAAK,IAAI,IAAI,uBAAuB,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;QACrF,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -33,7 +33,6 @@ export const FEDERATED_HTTP_ROUTES = [
33
33
  { method: "GET", path: "/terminal-command-runs" },
34
34
  { method: "GET", path: "/terminal-command-runs/:runId" },
35
35
  { method: "POST", path: "/terminal-command-runs/:runId/cancel" },
36
- { method: "GET", path: "/files" },
37
36
  { method: "GET", path: "/activity" },
38
37
  { method: "GET", path: "/sessions" },
39
38
  { method: "POST", path: "/sessions" },
@@ -59,6 +58,10 @@ export const FEDERATED_HTTP_ROUTES = [
59
58
  { method: "GET", path: "/sessions/:sessionId/commands" },
60
59
  { method: "POST", path: "/sessions/:sessionId/prompt" },
61
60
  { method: "POST", path: "/sessions/:sessionId/queue/clear" },
61
+ { method: "POST", path: "/sessions/:sessionId/ask/submit" },
62
+ { method: "POST", path: "/sessions/:sessionId/ask/cancel" },
63
+ { method: "POST", path: "/sessions/:sessionId/dialogs/answer" },
64
+ { method: "POST", path: "/sessions/:sessionId/dialogs/cancel" },
62
65
  { method: "POST", path: "/sessions/:sessionId/warnings/dismiss" },
63
66
  { method: "POST", path: "/sessions/:sessionId/attachments" },
64
67
  { method: "POST", path: "/sessions/:sessionId/shell" },
@@ -70,11 +73,9 @@ export const FEDERATED_HTTP_ROUTES = [
70
73
  { method: "POST", path: "/sessions/:sessionId/archive" },
71
74
  { method: "POST", path: "/sessions/:sessionId/archive-tree" },
72
75
  { method: "POST", path: "/sessions/:sessionId/restore" },
73
- { method: "DELETE", path: "/sessions/:sessionId" },
74
76
  { method: "POST", path: "/sessions/:sessionId/reload" },
75
77
  { method: "POST", path: "/sessions/:sessionId/detach-parent" },
76
78
  { method: "GET", path: "/auth/providers" },
77
- { method: "POST", path: "/auth/api-key" },
78
79
  { method: "POST", path: "/auth/api-key/interactive" },
79
80
  { method: "POST", path: "/auth/logout" },
80
81
  { method: "POST", path: "/auth/oauth" },
@@ -1 +1 @@
1
- {"version":3,"file":"federatedRoutes.js","sourceRoot":"","sources":["../../src/shared/federatedRoutes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"federatedRoutes.js","sourceRoot":"","sources":["../../src/shared/federatedRoutes.ts"],"names":[],"mappings":"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"}