@kortix/ui 0.14.6 → 0.14.8

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 (186) hide show
  1. package/dist/_vendor/kortix-shared.js +490 -382
  2. package/dist/_vendor/shared/runtime-versions.d.ts +4 -0
  3. package/dist/access/access/access-dialog-share.js +4 -7
  4. package/dist/access/access/access-dialog.js +2 -1
  5. package/dist/access/access/principal-picker.js +6 -5
  6. package/dist/customize/agents/agent-authority-card.js +1 -2
  7. package/dist/customize/agents/agent-cover-card.d.ts +17 -0
  8. package/dist/customize/agents/agent-cover-card.js +13 -0
  9. package/dist/customize/agents/agent-detail-aside.js +15 -14
  10. package/dist/customize/agents/agent-drives-section.js +5 -6
  11. package/dist/customize/agents/agent-grant-pages.js +68 -70
  12. package/dist/customize/agents/agent-page.js +27 -19
  13. package/dist/customize/agents/agent-people-section.js +18 -17
  14. package/dist/customize/agents/agent-triggers-section.js +6 -5
  15. package/dist/customize/agents/agents-page.js +43 -49
  16. package/dist/customize/connectors/catalog/catalog-entry.d.ts +14 -0
  17. package/dist/customize/connectors/catalog/catalog-entry.js +18 -1
  18. package/dist/customize/connectors/catalog/connector-browse.d.ts +28 -0
  19. package/dist/customize/connectors/catalog/connector-browse.js +18 -5
  20. package/dist/customize/connectors/detail/app-page.js +19 -5
  21. package/dist/customize/connectors/detail/connector-modal.d.ts +10 -13
  22. package/dist/customize/connectors/detail/connector-modal.js +18 -101
  23. package/dist/customize/connectors/detail/connector-notice.js +6 -2
  24. package/dist/customize/connectors/detail/connector-page.d.ts +30 -0
  25. package/dist/customize/connectors/detail/connector-page.js +26 -13
  26. package/dist/customize/migrate-to-v2/migration-prompt.d.ts +1 -0
  27. package/dist/customize/migrate-to-v2/migration-prompt.js +1 -0
  28. package/dist/customize/sections/llm-provider/custom-provider-form.js +24 -7
  29. package/dist/customize/sections/llm-provider/custom-provider-panel.js +44 -8
  30. package/dist/customize/sections/llm-provider/types.d.ts +3 -0
  31. package/dist/customize/sections/llm-provider/utils.js +2 -2
  32. package/dist/customize/sections/view/agent-editor-access-fields.d.ts +9 -16
  33. package/dist/customize/sections/view/agent-editor-access-fields.js +30 -30
  34. package/dist/customize/sections/view/agent-editor-basics-fields.js +3 -10
  35. package/dist/customize/sections/view/agent-editor-primitives.d.ts +28 -10
  36. package/dist/customize/sections/view/agent-editor-primitives.js +32 -19
  37. package/dist/customize/sections/view/agent-editor.js +3 -3
  38. package/dist/customize/sections/view/channels-view.js +2 -6
  39. package/dist/customize/sections/view/gateway/gateway-routing.js +3 -3
  40. package/dist/customize/sections/view/grant-mode-field.d.ts +2 -5
  41. package/dist/customize/sections/view/grant-mode-field.js +10 -18
  42. package/dist/customize/sections/view/permission-editor.js +11 -8
  43. package/dist/customize/sections/view/secrets-view.js +2 -1
  44. package/dist/customize/settings/tabs/general-tab.d.ts +9 -2
  45. package/dist/customize/settings/tabs/general-tab.js +33 -11
  46. package/dist/customize/settings/tabs/transfer-workspace-dialog.d.ts +4 -0
  47. package/dist/customize/settings/tabs/transfer-workspace-dialog.js +82 -0
  48. package/dist/customize/shared/new-entity-menu.js +4 -1
  49. package/dist/customize/skills/skills-page.js +4 -5
  50. package/dist/customize/triggers/schedule/then-fields.js +1 -5
  51. package/dist/customize/triggers/schedule-view.js +4 -2
  52. package/dist/files/project/api/runtime-files.js +3 -2
  53. package/dist/files/project/file-source.js +18 -1
  54. package/dist/files/project/hooks/use-file-content.js +2 -0
  55. package/dist/files/viewer/file-header.js +1 -1
  56. package/dist/files/viewer/file-preview-modal.d.ts +1 -1
  57. package/dist/files/viewer/file-preview-modal.js +12 -2
  58. package/dist/files/viewer/file-source.d.ts +3 -1
  59. package/dist/files/viewer/use-file-content-state.js +26 -7
  60. package/dist/files/viewer/viewer-actions.js +2 -2
  61. package/dist/i18n/en.d.ts +393 -12
  62. package/dist/i18n/en.js +400 -19
  63. package/dist/internal/components/agent-mark.d.ts +38 -0
  64. package/dist/internal/components/agent-mark.js +38 -0
  65. package/dist/internal/files/types.d.ts +2 -0
  66. package/dist/internal/goals/goal-meta.d.ts +30 -0
  67. package/dist/internal/goals/goal-meta.js +55 -0
  68. package/dist/internal/lib/pixel-mark.d.ts +33 -0
  69. package/dist/internal/lib/pixel-mark.js +152 -0
  70. package/dist/internal/lib/query-client-singleton.d.ts +9 -3
  71. package/dist/internal/lib/query-client-singleton.js +18 -12
  72. package/dist/internal/lib/use-project-feature-flags.js +3 -3
  73. package/dist/internal/share/session-shares-modal.js +3 -7
  74. package/dist/internal/stores/kortix-computer-store.js +14 -2
  75. package/dist/internal/stores/session-hover-store.d.ts +32 -0
  76. package/dist/internal/stores/session-hover-store.js +38 -0
  77. package/dist/internal/stores/sidebar-nav-store.d.ts +1 -1
  78. package/dist/internal/stores/sidebar-nav-store.js +3 -1
  79. package/dist/lib/routes.d.ts +2 -0
  80. package/dist/lib/routes.js +1 -0
  81. package/dist/markdown/genui/components/inline.d.ts +1 -1
  82. package/dist/markdown/setup-links/app-credentials-form.d.ts +12 -0
  83. package/dist/markdown/setup-links/app-credentials-form.js +115 -0
  84. package/dist/markdown/setup-links/secret-intake-form.d.ts +10 -0
  85. package/dist/markdown/setup-links/secret-intake-form.js +1 -1
  86. package/dist/primitives/entity-avatar.d.ts +4 -1
  87. package/dist/primitives/entity-avatar.js +4 -2
  88. package/dist/primitives/settings-section-header.d.ts +1 -1
  89. package/dist/primitives/user-avatar.d.ts +3 -1
  90. package/dist/primitives/user-avatar.js +4 -2
  91. package/dist/providers/ui-provider.d.ts +1 -1
  92. package/dist/session/composer/agent-selector.d.ts +7 -1
  93. package/dist/session/composer/agent-selector.js +20 -10
  94. package/dist/session/composer/attachment-tile.d.ts +0 -2
  95. package/dist/session/composer/attachment-tile.js +0 -8
  96. package/dist/session/composer/clipboard-files.d.ts +2 -1
  97. package/dist/session/composer/composer-draft-recovery.d.ts +1 -2
  98. package/dist/session/composer/composer-draft-recovery.js +0 -13
  99. package/dist/session/composer/context-ring.d.ts +1 -1
  100. package/dist/session/composer/context-ring.js +2 -2
  101. package/dist/session/composer/context-usage.d.ts +8 -6
  102. package/dist/session/composer/context-usage.js +9 -7
  103. package/dist/session/composer/inbox-row-claims.d.ts +2 -2
  104. package/dist/session/composer/inbox-row-claims.js +1 -1
  105. package/dist/session/composer/queue-projection.d.ts +3 -2
  106. package/dist/session/composer/queued-prompt-edit.d.ts +1 -1
  107. package/dist/session/composer/reasoning-effort-selector.d.ts +2 -1
  108. package/dist/session/composer/session-composer-readiness.d.ts +7 -22
  109. package/dist/session/composer/session-composer-readiness.js +12 -40
  110. package/dist/session/composer/token-progress.d.ts +1 -1
  111. package/dist/session/composer/token-progress.js +6 -6
  112. package/dist/session/header/export-transcript-modal.d.ts +3 -2
  113. package/dist/session/header/export-transcript-modal.js +6 -3
  114. package/dist/session/header/session-goal-indicator.d.ts +1 -0
  115. package/dist/session/header/session-goal-indicator.js +41 -0
  116. package/dist/session/header/session-site-header.js +2 -1
  117. package/dist/session/models/model-selector.d.ts +3 -1
  118. package/dist/session/models/model-selector.js +3 -2
  119. package/dist/session/panel/easy/plan-card.d.ts +2 -0
  120. package/dist/session/panel/easy/plan-card.js +2 -0
  121. package/dist/session/panel/session-action-panel-column.js +11 -1
  122. package/dist/session/panel/session-audit-shared.d.ts +0 -4
  123. package/dist/session/panel/session-audit-shared.js +1 -1
  124. package/dist/session/panel/session-changes-shared.d.ts +2 -1
  125. package/dist/session/prompts/session-permission-prompt.js +6 -3
  126. package/dist/session/status/provisioning-failure.d.ts +2 -1
  127. package/dist/session/status/session-error-banner.js +8 -6
  128. package/dist/session/status/session-starting-loader.d.ts +24 -31
  129. package/dist/session/status/session-starting-loader.js +32 -81
  130. package/dist/session/thread/chat-minimap-items.d.ts +4 -4
  131. package/dist/session/thread/first-prompt-handover.d.ts +3 -2
  132. package/dist/session/thread/message-parsing.d.ts +3 -3
  133. package/dist/session/thread/plan-surface.d.ts +1 -0
  134. package/dist/session/thread/plan-surface.js +1 -0
  135. package/dist/session/thread/session-chat.js +5 -12
  136. package/dist/session/thread/session-context-metrics.d.ts +15 -0
  137. package/dist/session/thread/session-context-metrics.js +10 -1
  138. package/dist/session/thread/session-context-modal.d.ts +4 -2
  139. package/dist/session/thread/session-context-modal.js +16 -9
  140. package/dist/session/thread/session-history-scroll.d.ts +2 -1
  141. package/dist/session/thread/session-thread.js +1 -1
  142. package/dist/session/thread/transcript.d.ts +4 -0
  143. package/dist/session/thread/transcript.js +18 -5
  144. package/dist/session/thread/turn-share.d.ts +16 -0
  145. package/dist/session/thread/turn-share.js +162 -0
  146. package/dist/session/tool/tools/apply-patch-tool.d.ts +1 -0
  147. package/dist/session/tool/tools/apply-patch-tool.js +1 -0
  148. package/dist/session/tool/tools/pty-kill-tool.d.ts +1 -0
  149. package/dist/session/tool/tools/pty-kill-tool.js +1 -0
  150. package/dist/session/tool/tools/pty-read-tool.d.ts +2 -0
  151. package/dist/session/tool/tools/pty-read-tool.js +2 -0
  152. package/dist/session/tool/tools/pty-spawn-tool.d.ts +1 -0
  153. package/dist/session/tool/tools/pty-spawn-tool.js +1 -0
  154. package/dist/session/tool/tools/pty-write-tool.d.ts +1 -0
  155. package/dist/session/tool/tools/pty-write-tool.js +1 -0
  156. package/dist/session/tool/tools/todo-write-tool.d.ts +1 -0
  157. package/dist/session/tool/tools/todo-write-tool.js +1 -0
  158. package/dist/session/turn/message-author-label.js +6 -2
  159. package/dist/session/turn/plan-anchor.d.ts +3 -0
  160. package/dist/session/turn/plan-anchor.js +3 -0
  161. package/dist/session/turn/plan-card.d.ts +7 -0
  162. package/dist/session/turn/plan-card.js +7 -0
  163. package/dist/styles.css +1 -1
  164. package/dist/terminal/pty-connection.d.ts +5 -4
  165. package/dist/terminal/session-terminal-connect-bar.js +2 -1
  166. package/dist/workspace/index.d.ts +1 -0
  167. package/dist/workspace/index.js +1 -0
  168. package/dist/workspace/saved-session-skeleton-shape.d.ts +4 -3
  169. package/dist/workspace/saved-session-skeleton.d.ts +5 -1
  170. package/dist/workspace/saved-session-skeleton.js +5 -4
  171. package/dist/workspace/session-workspace.js +4 -5
  172. package/dist/workspace/sidebar/footer/project-goals-nav.d.ts +6 -0
  173. package/dist/workspace/sidebar/footer/project-goals-nav.js +26 -0
  174. package/dist/workspace/sidebar/modal/session-embed-section.d.ts +25 -0
  175. package/dist/workspace/sidebar/modal/session-embed-section.js +71 -0
  176. package/dist/workspace/sidebar/modal/share-session-modal.js +2 -2
  177. package/dist/workspace/sidebar/nav-row-meta.js +14 -2
  178. package/dist/workspace/sidebar/project-nav-items.js +3 -0
  179. package/dist/workspace/sidebar/project-session-list.js +12 -3
  180. package/dist/workspace/sidebar/session-brief-hover-card.js +33 -9
  181. package/package.json +12 -4
  182. package/skills/kortix-ui/references/modules.md +2 -0
  183. package/dist/session/status/use-readiness-settling.d.ts +0 -18
  184. package/dist/session/status/use-readiness-settling.js +0 -43
  185. package/dist/workspace/sidebar/modal/session-public-link-section.d.ts +0 -13
  186. package/dist/workspace/sidebar/modal/session-public-link-section.js +0 -66
package/dist/i18n/en.js CHANGED
@@ -11,6 +11,28 @@ const catalog = {
11
11
  "repo_not_accessible": "Kortix cannot reach {repository}. It was deleted, renamed, or removed from the Kortix GitHub App. A GitHub owner of {owner} must add it again."
12
12
  }
13
13
  },
14
+ "repositoryChange": {
15
+ "changedToast": "Repository changed. New sessions will use the new repository.",
16
+ "verifyError": "Could not verify GitHub access.",
17
+ "change": "Change",
18
+ "title": "Change repository",
19
+ "description": "New sessions will use the new repository. Existing sessions cannot restart after the change.",
20
+ "current": "Current repository",
21
+ "newUrl": "New GitHub repository URL",
22
+ "verifying": "Verifying GitHub…",
23
+ "verifyAgain": "Verify GitHub again",
24
+ "verify": "Verify GitHub access",
25
+ "noInstallation": "No Kortix App installation is available for this repository owner. Add the repository to the App installation in GitHub, then verify again.",
26
+ "installation": "GitHub App installation",
27
+ "selectInstallation": "Select installation",
28
+ "manifestRequirement": "The new repository needs {manifest} on its default branch. Stop active sessions and close open change requests first.",
29
+ "cancel": "Cancel",
30
+ "changing": "Changing…",
31
+ "searchBranches": "Search branches…",
32
+ "loadingBranches": "Loading branches…",
33
+ "noBranches": "No matching branch.",
34
+ "moreBranches": "{count} more. Type to filter."
35
+ },
14
36
  "pooledSecrets": {
15
37
  "saveChanges": "Save changes",
16
38
  "unsavedChanges": "Unsaved key changes",
@@ -372,6 +394,60 @@ const catalog = {
372
394
  }
373
395
  }
374
396
  },
397
+ "git": {
398
+ "updateFailed": "Failed to update repository",
399
+ "unreachable": "Kortix can't reach this repository",
400
+ "repository": "Repository",
401
+ "hostedOn": "Hosted on {provider}.",
402
+ "storedIn": "Stored in {provider}.",
403
+ "notLinked": "Not linked yet",
404
+ "status": "Status",
405
+ "statuses": {
406
+ "connected": "Connected",
407
+ "attention": "Needs attention",
408
+ "connecting": "Connecting…",
409
+ "disconnected": "Not connected"
410
+ },
411
+ "baseBranch": "Base branch",
412
+ "baseBranchDescription": "New sessions and change requests start from this branch.",
413
+ "saving": "Saving…",
414
+ "manifestFile": "Manifest file",
415
+ "manifestDescription": "The file in your repository that tells Kortix how to run this project.",
416
+ "learnMore": "Learn more",
417
+ "localTitle": "Work on this locally",
418
+ "localDescription": "Put a copy of this project on your own computer and edit it in your own editor.",
419
+ "installTitle": "Install the Kortix command line",
420
+ "installHint": "A one-time setup on macOS or Linux. Skip this if you already have it.",
421
+ "installCommand": "Install command",
422
+ "cloneTitle": "Copy the project to your computer",
423
+ "cloneHint": "Downloads the code into a new folder and links that folder to this project.",
424
+ "cloneCommand": "Clone command",
425
+ "setupTitle": "Finish setup inside the new folder",
426
+ "setupHint": "Writes the local config, then fetches this project's secrets so the code can run.",
427
+ "setupCommand": "Setup command",
428
+ "secretsCommand": "Secrets command",
429
+ "ownClientTitle": "Use your own Git client",
430
+ "ownClientDescription": "Clone with plain <code>git</code> instead of the Kortix command line.",
431
+ "cloneAddressDescription": "Clone from this address with any Git client. Kortix signs the request for you, so there is no access token to create, paste, or keep on your machine.",
432
+ "cloneAddress": "Clone address",
433
+ "peopleTitle": "People with access",
434
+ "peopleManagedDescription": "Invite someone by their GitHub username. GitHub emails them an invite to accept.",
435
+ "peopleExternalDescription": "Who can read and write this project’s repository.",
436
+ "externalGithubDescription": "Kortix did not create this repository, so it cannot add collaborators to it. Manage access from the repository settings on GitHub.",
437
+ "externalProviderDescription": "This project’s repository is hosted on {provider}, which does not support collaborator invites from Kortix. Manage access where the repository lives.",
438
+ "manageOnGithub": "Manage on GitHub",
439
+ "alreadyHasAccess": "@{username} already has access to this repo",
440
+ "inviteSent": "Invite sent to @{username} — they accept it on GitHub to get access",
441
+ "inviteFailed": "Failed to add collaborator",
442
+ "githubUsername": "GitHub username",
443
+ "accessLevel": "Access level",
444
+ "canEdit": "Can edit",
445
+ "canView": "Can view",
446
+ "invite": "Invite",
447
+ "title": "Git repo",
448
+ "loadFailed": "Could not load this project's repository",
449
+ "retry": "Retry"
450
+ },
375
451
  "workspace": {
376
452
  "updateFailed": "Failed to update project",
377
453
  "iconUpdateFailed": "Failed to update project icon",
@@ -379,6 +455,9 @@ const catalog = {
379
455
  "iconDescription": "Shown next to the project name.",
380
456
  "name": "Project name",
381
457
  "nameDescription": "Shown in the project switcher and anywhere this project is listed.",
458
+ "defaultEffort": "Default reasoning effort",
459
+ "defaultEffortDescription": "Applied to new prompts that carry no explicit effort pick, when the session's model supports it.",
460
+ "defaultEffortAutomatic": "Automatic",
382
461
  "saving": "Saving…",
383
462
  "archived": "Project archived",
384
463
  "archiveFailed": "Failed to archive project",
@@ -398,7 +477,19 @@ const catalog = {
398
477
  "access": "Access for everyone on the team — nobody can reach this project again"
399
478
  },
400
479
  "reassurance": "Git repositories you connected yourself are not deleted. Any code already pushed to them stays where it is.",
401
- "keepWorkspace": "Keep project"
480
+ "keepWorkspace": "Keep project",
481
+ "transferWorkspace": "Transfer project",
482
+ "transferDescription": "Move this project — its sessions, files, settings and member access — to another organization.",
483
+ "transferTitle": "Transfer project",
484
+ "transferDialog": "Sessions, files and settings follow the project. System member roles follow; groups, pending invitations and custom roles must be granted again in the target organization. Recorded usage stays on this organization’s bill.",
485
+ "transferTargetLabel": "Target organization",
486
+ "transferTargetPlaceholder": "Choose an organization",
487
+ "transferLoadingTargets": "Loading organizations…",
488
+ "transferNoTargets": "You are not a member of any other organization.",
489
+ "transferMove": "Move project",
490
+ "transferMoveTo": "Move to {name}",
491
+ "transferSuccess": "Project transferred",
492
+ "transferFailed": "Transfer failed"
402
493
  },
403
494
  "sandbox": {
404
495
  "states": {
@@ -645,6 +736,108 @@ const catalog = {
645
736
  "revoked": "App access revoked",
646
737
  "revokeFailed": "Could not revoke the app"
647
738
  },
739
+ "featureFlags": {
740
+ "stability": {
741
+ "experimental": "Experimental",
742
+ "beta": "Beta",
743
+ "stable": "Stable"
744
+ },
745
+ "origin": {
746
+ "overridden": "Overridden for this project",
747
+ "defaultOn": "Default on",
748
+ "defaultOff": "Default off"
749
+ },
750
+ "search": "Search features",
751
+ "loadFailed": "Failed to load project",
752
+ "retry": "Retry",
753
+ "noMatches": "No matches for {query}.",
754
+ "emptyTitle": "No experimental features",
755
+ "emptyDescription": "This deployment exposes no per-project feature flags.",
756
+ "permission": "You need the project's settings permission to change a feature flag.",
757
+ "updateFailed": "Failed to update {key}",
758
+ "flags": {
759
+ "marketplace": {
760
+ "name": "Marketplace",
761
+ "description": "Browse and install skills from community and vendor registries. Sources, updates, and team scopes are still changing."
762
+ },
763
+ "connectors_api_discover": {
764
+ "name": "Connectors API Discover",
765
+ "description": "Browse direct API, MCP, GraphQL, CLI, and Postman integrations alongside optional OAuth apps."
766
+ },
767
+ "agentmail_email": {
768
+ "name": "AgentMail Email",
769
+ "description": "Assign AgentMail inboxes so incoming email threads can start and continue Kortix sessions."
770
+ },
771
+ "meta_agent": {
772
+ "name": "Meta Agent",
773
+ "description": "Add a coordinator agent that manages specialized sessions and multi-step work across the project."
774
+ },
775
+ "monitors": {
776
+ "name": "Monitors",
777
+ "description": "Run persistent watchers that observe logs, feeds, or APIs and start agent sessions from events."
778
+ },
779
+ "warm_sessions": {
780
+ "name": "Warm Sessions",
781
+ "description": "Keep one sandbox ready for instant session starts. The idle sandbox uses compute."
782
+ },
783
+ "secrets_egress": {
784
+ "name": "Network-Enforced Secrets",
785
+ "description": "Control which tools and destinations can receive project secrets."
786
+ },
787
+ "pooled_provider_secrets": {
788
+ "name": "Pooled Provider Secrets",
789
+ "description": "Members connect their own ChatGPT subscriptions and provider keys, share them when needed, and choose which ones each session uses."
790
+ },
791
+ "genui": {
792
+ "name": "Generative UI",
793
+ "description": "The agent may answer with cards, comparisons, charts, maps, and tabs instead of long text."
794
+ },
795
+ "reminders": {
796
+ "name": "Reminders",
797
+ "description": "Let agents and people schedule check-ins on a session, once or on repeat. Each fire re-prompts that session. Adds the Reminders page, the session reminder chip, and `kortix remind`."
798
+ },
799
+ "us_region": {
800
+ "name": "US Region",
801
+ "description": "Run this project's new sessions in the US East region. A running session keeps its region until it restarts."
802
+ },
803
+ "notification_center": {
804
+ "name": "Notification Center",
805
+ "description": "Tell the people a session concerns (its prompter, its creator and its followers) through a bell inbox, browser push and email, and alert on failing triggers and reminders. Off: only the session creator's phone gets a session push, and an account owner's phone gets one when a trigger starts failing."
806
+ },
807
+ "event_triggers": {
808
+ "name": "App event triggers",
809
+ "description": "Start an agent when something happens in a connected app: a new email, a pull request, a calendar event."
810
+ },
811
+ "volumes": {
812
+ "name": "Volumes",
813
+ "description": "Shared Files for this project."
814
+ },
815
+ "drives": {
816
+ "name": "Drive",
817
+ "description": "Shared folders that stay in sync with sessions: your own drive, one per agent, and company drives an admin attaches to the project. New sessions see them under /drives."
818
+ },
819
+ "session_log_restore": {
820
+ "name": "Session log restore",
821
+ "description": "Rebuilds a session from its saved session log when its computer lost the conversation. Kortix enables it per project."
822
+ },
823
+ "connectors_v2": {
824
+ "name": "Connectors v2",
825
+ "description": "The MCP app catalog in Customize → Connectors, with sign-in that Kortix runs. With App event triggers on, Kortix checks these apps for new emails, files and items and starts an agent. Also adds Telegram as a channel. New connector accounts are no longer shared with the whole project by default."
826
+ },
827
+ "agent_rooms": {
828
+ "name": "Rooms",
829
+ "description": "Named chat rooms where agent sessions and people post and reply in threads. A session wakes when a message is addressed to it. Adds the Rooms page, `kortix rooms`, and `kortix peers`."
830
+ },
831
+ "goals": {
832
+ "name": "Goals",
833
+ "description": "Give an agent an objective it owns until an independent check confirms the outcome. It plans, works, waits, follows up with people, and keeps its state in a Goals folder in Files. Needs Volumes and Reminders on."
834
+ },
835
+ "workspace_volume": {
836
+ "name": "Workspace volume",
837
+ "description": "Keeps each new session's /workspace on its own volume, so a stopped sandbox can be deleted and the next open boots a new one on the same files and conversation. Kortix enables it per project."
838
+ }
839
+ }
840
+ },
648
841
  "upgrades": {
649
842
  "available": "Available upgrades",
650
843
  "readOnly": "Read-only — running an upgrade needs write access to this project.",
@@ -825,6 +1018,7 @@ const catalog = {
825
1018
  },
826
1019
  "sidebar": {
827
1020
  "rooms": "Rooms",
1021
+ "goals": "Goals",
828
1022
  "referAndEarn": "Refer & Earn",
829
1023
  "referralShareTitle": "Refer Friends",
830
1024
  "referralShareSubtitle": "Get 400 credits",
@@ -1149,8 +1343,8 @@ const catalog = {
1149
1343
  }
1150
1344
  },
1151
1345
  "sessionDelete": {
1152
- "description": "Deletes <name>{label}</name> and removes its sandbox. You can restore it from Recently deleted for {days} days. After that, its messages and files are deleted. Its branch is kept.",
1153
- "bulkDescription": "Deletes each selected session and removes its sandbox. You can restore each one from Recently deleted for {days} days. After that, its messages and files are deleted. Its branch is kept.",
1346
+ "description": "Deletes <name>{label}</name> and removes its sandbox. You can restore it from Recently deleted for {days} days. After that, its messages, files and branch are deleted.",
1347
+ "bulkDescription": "Deletes each selected session and removes its sandbox. You can restore each one from Recently deleted for {days} days. After that, its messages, files and branch are deleted.",
1154
1348
  "restoring": "Restoring the session…",
1155
1349
  "undo": "Undo",
1156
1350
  "restored": "Session restored",
@@ -1259,6 +1453,28 @@ const catalog = {
1259
1453
  "autoRetried": "Kortix automatically retried the model {count, plural, one {once} other {# times}} before this failure."
1260
1454
  }
1261
1455
  },
1456
+ "agents": {
1457
+ "grants": {
1458
+ "subagents": {
1459
+ "title": "Subagents",
1460
+ "description": "Agents this agent can start for a subtask.",
1461
+ "all": "Every subagent in this project, including ones added later.",
1462
+ "empty": "No subagents declared in this project yet."
1463
+ },
1464
+ "commands": {
1465
+ "title": "Commands",
1466
+ "description": "Slash commands this agent can run.",
1467
+ "all": "Every command in this project, including ones added later.",
1468
+ "empty": "No commands registered in this project yet."
1469
+ },
1470
+ "extensions": {
1471
+ "title": "Extensions",
1472
+ "description": "Plugins and packages a session of this agent loads.",
1473
+ "all": "Every extension in this project, including ones added later.",
1474
+ "empty": "No extensions registered in this project yet."
1475
+ }
1476
+ }
1477
+ },
1262
1478
  "threads": {
1263
1479
  "title": "Threads",
1264
1480
  "newThread": "New Thread",
@@ -1603,6 +1819,17 @@ const catalog = {
1603
1819
  "noOutput": "No output"
1604
1820
  }
1605
1821
  },
1822
+ "agentApps": {
1823
+ "title": "Apps",
1824
+ "description": "Kortix Apps this agent may open when the App's access is restricted or private.",
1825
+ "manageApps": "All Apps",
1826
+ "allLabel": "Every App in this project, including ones added later.",
1827
+ "needsGrant": "Grant decides",
1828
+ "openWithoutGrant": "No grant needed",
1829
+ "grantNote": "The agent also needs project.app.read in its Kortix permissions.",
1830
+ "emptyTitle": "No Apps yet",
1831
+ "emptyDescription": "Apps deployed to this project appear here for the agent to pick from."
1832
+ },
1606
1833
  "notifications": {
1607
1834
  "title": "Notifications",
1608
1835
  "description": "Manage how you receive notifications",
@@ -2355,7 +2582,7 @@ const catalog = {
2355
2582
  "text1436469ad07f": "You are… Goal: … Steps: 1. …",
2356
2583
  "text1447557b9c1e": "X-Tenant-Id",
2357
2584
  "text1458e20a1642": "Optional. Kortix also deletes the local token on disconnect.",
2358
- "text146b38e7fa80": "When the default fails",
2585
+ "text146b38e7fa80": "When a model fails",
2359
2586
  "text146cd06d5026": "Env:",
2360
2587
  "text14736a2eb9f4": "Role",
2361
2588
  "text147fb813a251": "Approval",
@@ -4199,7 +4426,7 @@ const catalog = {
4199
4426
  "textaf7dbdd174f2": "Settings · General",
4200
4427
  "textaf87e03f3626": "This removes the project default, fallback chain, and per-model overrides. The project will inherit account and platform routing.",
4201
4428
  "textafb5023c3c05": "Changes applied",
4202
- "textafb9890f7c72": "Where a request goes when the project default can't take it.",
4429
+ "textafb9890f7c72": "Where a request goes when its model can't take it.",
4203
4430
  "textafe03725909a": "behaves as for days.",
4204
4431
  "textafe9444782eb": "Managed Email is not configured",
4205
4432
  "textaff0766a5290": "Review",
@@ -4452,7 +4679,7 @@ const catalog = {
4452
4679
  "textc3d2e79ebdd0": "Connectors",
4453
4680
  "textc3e3a6edeaa5": "Terms and conditions",
4454
4681
  "textc3e58a73609d": "Destructive",
4455
- "textc3ecd3cd791b": "Tried in order after the project default.",
4682
+ "textc3ecd3cd791b": "Tried in order after the model a request names.",
4456
4683
  "textc3f282c05f3f": "policies approval block require_approval rules tools connector guardrails",
4457
4684
  "textc3f7bdf537c4": "req",
4458
4685
  "textc4141f554a0c": "Loading sessions…",
@@ -5598,18 +5825,6 @@ const catalog = {
5598
5825
  "expiryNever": "Never",
5599
5826
  "expiryDays": "{count, plural, one {# day} other {# days}}"
5600
5827
  },
5601
- "publicTranscriptShare": {
5602
- "sectionTitle": "Public link",
5603
- "sectionDescription": "Anyone with the link can read this conversation without signing in.",
5604
- "create": "Create public link",
5605
- "revokeDescription": "The conversation stops loading for everyone with the link. You can create a new link afterwards.",
5606
- "rowMeta": "Read-only conversation",
5607
- "unavailable": "This conversation is temporarily unavailable.",
5608
- "unavailableDescription": "The conversation could not be read right now. Try again in a moment.",
5609
- "loadFailedDescription": "The conversation could not be loaded.",
5610
- "empty": "No messages yet",
5611
- "savedCopy": "Saved copy from {date}"
5612
- },
5613
5828
  "approvalPage": {
5614
5829
  "title": "Approve this {connector} action",
5615
5830
  "expires": "Expires",
@@ -5701,6 +5916,12 @@ const catalog = {
5701
5916
  "grant": "{names} {count, plural, one {is} other {are}} not in the {agent} agent's secrets. Open Customize → Agents → {agent} → Secrets and enable {count, plural, one {it} other {them}}.",
5702
5917
  "allowlist": "{names} {count, plural, one {is} other {are}} outside this session's secrets. Start a new session to use {count, plural, one {it} other {them}}."
5703
5918
  },
5919
+ "sessionEmbed": {
5920
+ "sectionTitle": "Embed",
5921
+ "sectionDescription": "For same-site pages only. Viewers must already be signed in with access to this session; signing in inside a cross-site iframe is not supported.",
5922
+ "copy": "Copy embed code",
5923
+ "copied": "Embed code copied"
5924
+ },
5704
5925
  "autoComponentsSetupLinksSecretIntakeFormJsxTextDeliveryRuntime1760e931": "Delivery: runtime — the real value loads into the sandbox environment. Agent code can read it.",
5705
5926
  "autoComponentsSetupLinksSecretIntakeFormJsxTextDeliveryConnectorb21e2055": "Delivery: connector — server-side only. The value never enters the sandbox environment.",
5706
5927
  "autoComponentsSetupLinksSecretIntakeFormJsxTextDeliveryScopec3e2a686": "Delivery scope is unavailable. Ask the agent to confirm where this value will be used before saving.",
@@ -5735,6 +5956,11 @@ const catalog = {
5735
5956
  "copied": "Copied {label}",
5736
5957
  "copyFailed": "Could not copy to the clipboard"
5737
5958
  },
5959
+ "repositoryAccess": {
5960
+ "label": "Project repository access",
5961
+ "enabled": "New sessions receive the project repository. Git permissions still apply. Existing sessions keep their access setting.",
5962
+ "disabled": "New sessions run without the project repository. They can still create files and use granted tools. Existing sessions keep their access setting."
5963
+ },
5738
5964
  "customProvider": {
5739
5965
  "intro": "Endpoints the catalogue does not carry.",
5740
5966
  "add": "Add custom provider",
@@ -5766,7 +5992,12 @@ const catalog = {
5766
5992
  "deleteTitle": "Delete this provider?",
5767
5993
  "deleteBody": "{name} and its API key leave this project for every member, and sessions stop offering its models. This cannot be undone.",
5768
5994
  "deleted": "Provider deleted",
5769
- "deleteFailed": "Could not delete the provider"
5995
+ "deleteFailed": "Could not delete the provider",
5996
+ "readsImages": "Reads images",
5997
+ "reasoning": "Reasoning",
5998
+ "traitsHint": "Kortix reads these from the endpoint when it reports them. Turn them on when it does not.",
5999
+ "contextWindow": "{tokens} context",
6000
+ "contextDefault": "128K context (the endpoint reports none)"
5770
6001
  },
5771
6002
  "providerSheet": {
5772
6003
  "inUse": "In use",
@@ -6819,6 +7050,10 @@ const catalog = {
6819
7050
  "missing": "does not exist",
6820
7051
  "listPlaceholder": "value 1, value 2"
6821
7052
  },
7053
+ "triggerAutoPause": {
7054
+ "title": "Paused itself at its run limit",
7055
+ "description": "It ran at its hourly run limit for 2 hours in a row, so it stopped starting runs. Find what keeps firing it, then resume it."
7056
+ },
6822
7057
  "featureGate": {
6823
7058
  "enable": "Enable {name}",
6824
7059
  "enabling": "Enabling…"
@@ -6918,6 +7153,152 @@ const catalog = {
6918
7153
  "join": "Join",
6919
7154
  "openRoom": "Open",
6920
7155
  "gateDescription": "Turn on Rooms to let agent sessions and people of this project talk in named chat rooms."
7156
+ },
7157
+ "goals": {
7158
+ "title": "Goals",
7159
+ "gateDescription": "Agents own an objective until it is verifiably done: the goal lives in Files, a daily heartbeat wakes it, the agent chases people for what it needs, and an independent check closes it.",
7160
+ "empty": "No goals yet",
7161
+ "emptyHint": "Start one in a session: describe the outcome, for example \"make sure our old bank account is closed\". The agent creates the goal and it shows here.",
7162
+ "loadError": "Could not load goals. Try again.",
7163
+ "retry": "Try again",
7164
+ "needsYou": "Needs you",
7165
+ "open": "Open",
7166
+ "closed": "Closed",
7167
+ "waitingFor": "Waiting for: {title}",
7168
+ "criteria": "{met}/{total} criteria",
7169
+ "nextWake": "Next wake {time}",
7170
+ "noWake": "No wake scheduled",
7171
+ "heartbeat": "Heartbeat",
7172
+ "heartbeatPaused": "Paused",
7173
+ "lastWakeLabel": "Last wake",
7174
+ "progress": "Progress",
7175
+ "scope": {
7176
+ "company": "Company",
7177
+ "personal": "Only you"
7178
+ },
7179
+ "status": {
7180
+ "draft": "Draft",
7181
+ "active": "Active",
7182
+ "waiting_on_user": "Waiting on you",
7183
+ "waiting_external": "Waiting",
7184
+ "verifying": "Verifying",
7185
+ "done": "Done",
7186
+ "abandoned": "Abandoned"
7187
+ },
7188
+ "health": {
7189
+ "healthy": "Running",
7190
+ "attention": "Needs attention",
7191
+ "closed": "Closed"
7192
+ },
7193
+ "issue": {
7194
+ "no_heartbeat": "Nothing will wake this goal: its heartbeat reminder is missing.",
7195
+ "heartbeat_paused": "The heartbeat reminder is paused.",
7196
+ "heartbeat_failed": "The last wake failed: {error}",
7197
+ "missed_wake": "The last wake is overdue.",
7198
+ "ask_overdue": "An ask is past its due time.",
7199
+ "verification_stalled": "Verification started more than 24 hours ago.",
7200
+ "unreadable": "goal.json is missing or is not valid JSON."
7201
+ },
7202
+ "sessionChip": "Goal",
7203
+ "sessionRole": {
7204
+ "coordinator": "This session runs this goal.",
7205
+ "worker": "This session works on this goal.",
7206
+ "verifier": "This session verifies this goal."
7207
+ },
7208
+ "openGoal": "Open goal",
7209
+ "openSession": "Open main session",
7210
+ "openFolder": "Open folder",
7211
+ "back": "All goals",
7212
+ "healthTitle": "Health",
7213
+ "successCriteria": "Success criteria",
7214
+ "met": "Met",
7215
+ "notMet": "Not met",
7216
+ "items": "Items",
7217
+ "noItems": "No items yet.",
7218
+ "noCriteria": "No criteria yet: the agent writes them before the goal becomes active.",
7219
+ "kind": {
7220
+ "task": "Task",
7221
+ "ask": "Ask",
7222
+ "wait": "Wait"
7223
+ },
7224
+ "itemStatus": {
7225
+ "open": "open",
7226
+ "doing": "doing",
7227
+ "done": "done",
7228
+ "dropped": "dropped"
7229
+ },
7230
+ "due": "Due {time}",
7231
+ "sessions": "Sessions",
7232
+ "role": {
7233
+ "coordinator": "Main session",
7234
+ "worker": "Worker",
7235
+ "verifier": "Verifier"
7236
+ },
7237
+ "timeline": "Timeline",
7238
+ "verification": "Verification",
7239
+ "notes": "Notes",
7240
+ "log": "Log",
7241
+ "notFound": "This goal no longer exists."
7242
+ },
7243
+ "agentEditor": {
7244
+ "manage": "Manage",
7245
+ "overviewTitle": "Overview"
7246
+ },
7247
+ "connectAppForm": {
7248
+ "title": "Connect Shopify",
7249
+ "description": "Kortix reaches your store through a Shopify app in your organization. Enter its credentials once.",
7250
+ "loading": "Loading the form…",
7251
+ "stepsTitle": "Create the app in Shopify",
7252
+ "step1": "Open the <link>Shopify Dev Dashboard</link> and create an app in the organization that owns your store.",
7253
+ "step2": "On the app's version, select the Admin API scopes your agents need, then release the version.",
7254
+ "step3": "Install the app on your store.",
7255
+ "step4": "Copy the Client ID and Client secret from the app's Settings.",
7256
+ "sameOrganization": "The app and the store must be in the same Shopify organization.",
7257
+ "storeLabel": "Store",
7258
+ "clientIdLabel": "Client ID",
7259
+ "clientSecretLabel": "Client secret",
7260
+ "submit": "Connect {app}",
7261
+ "connecting": "Connecting…",
7262
+ "missingFields": "Enter the store, the Client ID and the Client secret.",
7263
+ "failed": "Could not connect. Check your connection and try again.",
7264
+ "secretNote": "Kortix sends the secret to Composio, which runs the connection. Kortix keeps no copy.",
7265
+ "connectedTitle": "{app} is connected",
7266
+ "connectedDescription": "Kortix reaches {store}. You can close this window.",
7267
+ "closeWindow": "You can close this window.",
7268
+ "expiredTitle": "This link expired",
7269
+ "invalidTitle": "This link does not work",
7270
+ "staleTitle": "This link was replaced",
7271
+ "startAgain": "Start Connect again in Kortix."
7272
+ },
7273
+ "turnShare": {
7274
+ "shareResponse": "Share response",
7275
+ "whatToInclude": "What to include",
7276
+ "responseOnly": "Response only",
7277
+ "responseOnlyHint": "Your prompt stays private",
7278
+ "promptAndResponse": "Prompt and response",
7279
+ "promptAndResponseHint": "Includes the prompt",
7280
+ "publicLink": "Public link",
7281
+ "publicLinkHint": "Anyone with the link can read it",
7282
+ "turnOffLink": "Turn off link",
7283
+ "cancel": "Cancel",
7284
+ "copyLink": "Copy link",
7285
+ "copied": "Copied",
7286
+ "linkCopied": "Link copied",
7287
+ "linkUpdated": "Link updated",
7288
+ "responseShared": "Response shared",
7289
+ "stale": "Response changed since you shared it",
7290
+ "updateLink": "Update link",
7291
+ "loadError": "Could not load the share settings. Try again.",
7292
+ "shareError": "Could not share the response. Try again.",
7293
+ "unshareError": "Could not stop sharing. Try again.",
7294
+ "copyError": "Could not copy the link. Copy it from the field.",
7295
+ "tryKortix": "Try Kortix",
7296
+ "goneTitle": "This link is no longer active",
7297
+ "goneHint": "The response it pointed to is no longer public.",
7298
+ "busyTitle": "This page is busy",
7299
+ "busyHint": "Refresh in a moment.",
7300
+ "fallbackTitle": "Shared response",
7301
+ "stopNote": "The link will stop working."
6921
7302
  }
6922
7303
  };
6923
7304
  export default catalog;
@@ -0,0 +1,38 @@
1
+ /** @internal Kortix apps only. No semver: it may change in any release. */
2
+ import type { CSSProperties } from 'react';
3
+ /** Mark size → tile size. The mark is a multiple of 7, so each pixel lands on
4
+ * whole device pixels; any other size blurs the edges. Literal px because
5
+ * this repo's spacing scale is 0.23rem (`size-14` is 51.5px, not 56px). */
6
+ declare const TILE: {
7
+ readonly 14: 20;
8
+ readonly 21: 28;
9
+ readonly 28: 40;
10
+ readonly 42: 56;
11
+ readonly 56: 80;
12
+ };
13
+ export type AgentMarkSize = keyof typeof TILE;
14
+ /**
15
+ * The tile colours as CSS variables. `light-dark()` follows the
16
+ * `color-scheme` each theme sets in tokens.css, so one pair covers both themes.
17
+ * Set on the element that paints the tile; `AgentMarkGlyph` reads `--mark-ink`.
18
+ */
19
+ export declare function agentMarkVars(slug: string): CSSProperties;
20
+ /** The bare pixel figure, painted with `--mark-ink` from an ancestor. */
21
+ export declare function AgentMarkGlyph({ slug, size }: {
22
+ slug: string;
23
+ size: AgentMarkSize;
24
+ }): import("react").JSX.Element;
25
+ /**
26
+ * An agent's pixel mark on its tile — the agent's face wherever it appears:
27
+ * pickers, rows, chips. Same slug, same mark (see `pixel-mark.ts`).
28
+ */
29
+ export declare function AgentMark({ slug, size, tile, label, className, }: {
30
+ slug: string;
31
+ size?: AgentMarkSize;
32
+ /** Tile edge in px, when the tile must match a neighbour's height. */
33
+ tile?: number;
34
+ /** The hover hint. Defaults to the agent's display name. */
35
+ label?: string;
36
+ className?: string;
37
+ }): import("react").JSX.Element;
38
+ export {};
@@ -0,0 +1,38 @@
1
+ 'use client';
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ import { cn } from '../lib/utils.js';
4
+ import { Hint } from '../../primitives/hint.js';
5
+ import { capitalizeWords, isMetaAgentName, META_AGENT_DISPLAY_NAME } from '../../_vendor/kortix-shared.js';
6
+ import { PIXEL_MARK_SIZE, pixelMark } from '../lib/pixel-mark.js';
7
+ /** Mark size → tile size. The mark is a multiple of 7, so each pixel lands on
8
+ * whole device pixels; any other size blurs the edges. Literal px because
9
+ * this repo's spacing scale is 0.23rem (`size-14` is 51.5px, not 56px). */
10
+ const TILE = { 14: 20, 21: 28, 28: 40, 42: 56, 56: 80 };
11
+ /**
12
+ * The tile colours as CSS variables. `light-dark()` follows the
13
+ * `color-scheme` each theme sets in tokens.css, so one pair covers both themes.
14
+ * Set on the element that paints the tile; `AgentMarkGlyph` reads `--mark-ink`.
15
+ */
16
+ export function agentMarkVars(slug) {
17
+ const { tone } = pixelMark(slug);
18
+ return {
19
+ '--mark-tile': `light-dark(${tone.tile}, ${tone.tileDark})`,
20
+ '--mark-ink': `light-dark(${tone.ink}, ${tone.inkDark})`,
21
+ };
22
+ }
23
+ /** The bare pixel figure, painted with `--mark-ink` from an ancestor. */
24
+ export function AgentMarkGlyph({ slug, size }) {
25
+ return (_jsx("svg", { "aria-hidden": true, width: size, height: size, viewBox: `0 0 ${PIXEL_MARK_SIZE} ${PIXEL_MARK_SIZE}`, shapeRendering: "crispEdges", className: "shrink-0", children: _jsx("path", { d: pixelMark(slug).path, className: "fill-(--mark-ink)" }) }));
26
+ }
27
+ /**
28
+ * An agent's pixel mark on its tile — the agent's face wherever it appears:
29
+ * pickers, rows, chips. Same slug, same mark (see `pixel-mark.ts`).
30
+ */
31
+ export function AgentMark({ slug, size = 14, tile = TILE[size], label, className, }) {
32
+ // A mark is a face, not a name: the hover hint says whose face it is.
33
+ const mark = (_jsx("span", { "aria-hidden": true, style: { ...agentMarkVars(slug), width: tile, height: tile }, className: cn('inline-flex shrink-0 items-center justify-center bg-(--mark-tile)', size >= 28 ? 'rounded-md' : 'rounded-sm', className), children: _jsx(AgentMarkGlyph, { slug: slug, size: size }) }));
34
+ return (_jsx(Hint, { side: "top", sideOffset: 6, alignOffset: 0, label: label ?? agentLabel(slug), children: mark }));
35
+ }
36
+ function agentLabel(slug) {
37
+ return isMetaAgentName(slug) ? META_AGENT_DISPLAY_NAME : capitalizeWords(slug);
38
+ }
@@ -13,6 +13,8 @@ export interface FileNode {
13
13
  }
14
14
  /** GET /file/content?path=<path> response */
15
15
  export interface FileContent {
16
+ /** Git blob revision of the displayed text, used for conditional saves. */
17
+ revision?: string;
16
18
  type: 'text' | 'binary';
17
19
  content: string;
18
20
  patch?: FilePatch;