@intentic/extension-ui 1.247.0 → 1.249.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 (83) hide show
  1. package/README.md +14 -9
  2. package/dist/index.js +1 -0
  3. package/dist/types/extension-ui/src/format.d.ts +1 -1
  4. package/dist/types/extension-ui/src/index.d.ts +1 -1
  5. package/dist/types/ui/src/components/{MarkdownFigure.vue.d.ts → charts/MarkdownFigure.vue.d.ts} +1 -1
  6. package/dist/types/ui/src/components/{StatStrip.vue.d.ts → charts/StatStrip.vue.d.ts} +1 -1
  7. package/dist/types/ui/src/components/{StatusTally.vue.d.ts → charts/StatusTally.vue.d.ts} +1 -1
  8. package/dist/types/ui/src/components/{barChart.d.ts → charts/barChart.d.ts} +1 -1
  9. package/dist/types/ui/src/components/{seriesAccent.d.ts → charts/seriesAccent.d.ts} +1 -1
  10. package/dist/types/ui/src/components/{Notice.vue.d.ts → feedback/Notice.vue.d.ts} +1 -1
  11. package/dist/types/ui/src/components/{SkeletonRows.vue.d.ts → feedback/SkeletonRows.vue.d.ts} +1 -1
  12. package/dist/types/ui/src/components/{notice.d.ts → feedback/notice.d.ts} +1 -1
  13. package/dist/types/ui/src/components/{NoteEditor.vue.d.ts → forms/NoteEditor.vue.d.ts} +2 -3
  14. package/dist/types/ui/src/components/{Picker.vue.d.ts → forms/Picker.vue.d.ts} +1 -0
  15. package/dist/types/ui/src/components/{SegmentedControl.vue.d.ts → forms/SegmentedControl.vue.d.ts} +1 -1
  16. package/dist/types/ui/src/components/{picker.d.ts → forms/picker.d.ts} +2 -2
  17. package/dist/types/ui/src/components/{PageAction.vue.d.ts → layout/PageAction.vue.d.ts} +1 -1
  18. package/dist/types/ui/src/components/{ResizeSeam.vue.d.ts → layout/ResizeSeam.vue.d.ts} +1 -0
  19. package/dist/types/ui/src/components/{StepSection.vue.d.ts → layout/StepSection.vue.d.ts} +1 -1
  20. package/dist/types/ui/src/components/{navRail.d.ts → layout/navRail.d.ts} +1 -1
  21. package/dist/types/ui/src/components/{repoRail.d.ts → layout/repoRail.d.ts} +1 -1
  22. package/dist/types/ui/src/components/{Markdown.vue.d.ts → markdown/Markdown.vue.d.ts} +1 -1
  23. package/dist/types/ui/src/components/markdown/MarkdownDocument.vue.d.ts +47 -0
  24. package/dist/types/ui/src/components/markdown/markdownDocument.d.ts +18 -0
  25. package/dist/types/ui/src/components/{AnchoredOverlay.vue.d.ts → overlays/AnchoredOverlay.vue.d.ts} +1 -1
  26. package/dist/types/ui/src/components/{ConfirmDialog.vue.d.ts → overlays/ConfirmDialog.vue.d.ts} +1 -1
  27. package/dist/types/ui/src/components/{ResponsiveOverlay.vue.d.ts → overlays/ResponsiveOverlay.vue.d.ts} +1 -1
  28. package/dist/types/ui/src/components/{Icon.vue.d.ts → primitives/Icon.vue.d.ts} +1 -1
  29. package/dist/types/ui/src/components/{DisclosureRow.vue.d.ts → rows/DisclosureRow.vue.d.ts} +2 -2
  30. package/dist/types/ui/src/components/{Row.vue.d.ts → rows/Row.vue.d.ts} +16 -12
  31. package/dist/types/ui/src/components/{RowGroup.vue.d.ts → rows/RowGroup.vue.d.ts} +1 -0
  32. package/dist/types/ui/src/components/{row.d.ts → rows/row.d.ts} +4 -4
  33. package/dist/types/ui/src/components/{AgentRunButton.vue.d.ts → sandbox/AgentRunButton.vue.d.ts} +3 -6
  34. package/dist/types/ui/src/composables/useAgentRunPick.d.ts +7 -2
  35. package/dist/types/ui/src/composables/useAsyncAction.d.ts +1 -1
  36. package/dist/types/ui/src/icons/iconSets.d.ts +139 -2
  37. package/dist/types/ui/src/index.d.ts +63 -62
  38. package/dist/types/ui/src/lib/format.d.ts +15 -0
  39. package/dist/types/ui/src/markdown/edits.d.ts +15 -0
  40. package/dist/types/ui/src/markdown/history.d.ts +12 -0
  41. package/dist/types/ui/src/markdown/index.d.ts +3 -0
  42. package/dist/types/ui/src/markdown/sourceDom.d.ts +7 -0
  43. package/names.mjs +1 -0
  44. package/package.json +2 -2
  45. package/src/format.ts +4 -12
  46. package/src/index.ts +50 -159
  47. /package/dist/types/ui/src/components/{Avatar.vue.d.ts → brand/Avatar.vue.d.ts} +0 -0
  48. /package/dist/types/ui/src/components/{BrandMark.vue.d.ts → brand/BrandMark.vue.d.ts} +0 -0
  49. /package/dist/types/ui/src/components/{PersonaFace.vue.d.ts → brand/PersonaFace.vue.d.ts} +0 -0
  50. /package/dist/types/ui/src/components/{personaFace.d.ts → brand/personaFace.d.ts} +0 -0
  51. /package/dist/types/ui/src/components/{BarChart.vue.d.ts → charts/BarChart.vue.d.ts} +0 -0
  52. /package/dist/types/ui/src/components/{DagEditor.vue.d.ts → charts/DagEditor.vue.d.ts} +0 -0
  53. /package/dist/types/ui/src/components/{DagGraph.vue.d.ts → charts/DagGraph.vue.d.ts} +0 -0
  54. /package/dist/types/ui/src/components/{DiffStat.vue.d.ts → charts/DiffStat.vue.d.ts} +0 -0
  55. /package/dist/types/ui/src/components/{ProgressRing.vue.d.ts → charts/ProgressRing.vue.d.ts} +0 -0
  56. /package/dist/types/ui/src/components/{dagLayout.d.ts → charts/dagLayout.d.ts} +0 -0
  57. /package/dist/types/ui/src/components/{ChangeStatusMark.vue.d.ts → feedback/ChangeStatusMark.vue.d.ts} +0 -0
  58. /package/dist/types/ui/src/components/{InfoHint.vue.d.ts → feedback/InfoHint.vue.d.ts} +0 -0
  59. /package/dist/types/ui/src/components/{InfoTable.vue.d.ts → feedback/InfoTable.vue.d.ts} +0 -0
  60. /package/dist/types/ui/src/components/{NoticeStack.vue.d.ts → feedback/NoticeStack.vue.d.ts} +0 -0
  61. /package/dist/types/ui/src/components/{StatusBadge.vue.d.ts → feedback/StatusBadge.vue.d.ts} +0 -0
  62. /package/dist/types/ui/src/components/{changeStatus.d.ts → feedback/changeStatus.d.ts} +0 -0
  63. /package/dist/types/ui/src/components/{CodeField.vue.d.ts → forms/CodeField.vue.d.ts} +0 -0
  64. /package/dist/types/ui/src/components/{FilterBar.vue.d.ts → forms/FilterBar.vue.d.ts} +0 -0
  65. /package/dist/types/ui/src/components/{ProseField.vue.d.ts → forms/ProseField.vue.d.ts} +0 -0
  66. /package/dist/types/ui/src/components/{SearchBar.vue.d.ts → forms/SearchBar.vue.d.ts} +0 -0
  67. /package/dist/types/ui/src/components/{BottomSheet.vue.d.ts → layout/BottomSheet.vue.d.ts} +0 -0
  68. /package/dist/types/ui/src/components/{Card.vue.d.ts → layout/Card.vue.d.ts} +0 -0
  69. /package/dist/types/ui/src/components/{NavRail.vue.d.ts → layout/NavRail.vue.d.ts} +0 -0
  70. /package/dist/types/ui/src/components/{Page.vue.d.ts → layout/Page.vue.d.ts} +0 -0
  71. /package/dist/types/ui/src/components/{PageHeader.vue.d.ts → layout/PageHeader.vue.d.ts} +0 -0
  72. /package/dist/types/ui/src/components/{RepoRail.vue.d.ts → layout/RepoRail.vue.d.ts} +0 -0
  73. /package/dist/types/ui/src/components/{ScrollFrame.vue.d.ts → layout/ScrollFrame.vue.d.ts} +0 -0
  74. /package/dist/types/ui/src/components/{SplitView.vue.d.ts → layout/SplitView.vue.d.ts} +0 -0
  75. /package/dist/types/ui/src/components/{splitView.d.ts → layout/splitView.d.ts} +0 -0
  76. /package/dist/types/ui/src/components/{ContextMenu.vue.d.ts → overlays/ContextMenu.vue.d.ts} +0 -0
  77. /package/dist/types/ui/src/components/{InfoDialog.vue.d.ts → overlays/InfoDialog.vue.d.ts} +0 -0
  78. /package/dist/types/ui/src/components/{Modal.vue.d.ts → overlays/Modal.vue.d.ts} +0 -0
  79. /package/dist/types/ui/src/components/{Button.vue.d.ts → primitives/Button.vue.d.ts} +0 -0
  80. /package/dist/types/ui/src/components/{Code.vue.d.ts → primitives/Code.vue.d.ts} +0 -0
  81. /package/dist/types/ui/src/components/{CopyButton.vue.d.ts → primitives/CopyButton.vue.d.ts} +0 -0
  82. /package/dist/types/ui/src/components/{ImageView.vue.d.ts → primitives/ImageView.vue.d.ts} +0 -0
  83. /package/dist/types/ui/src/components/{imageView.d.ts → primitives/imageView.d.ts} +0 -0
package/README.md CHANGED
@@ -2,9 +2,9 @@
2
2
 
3
3
  The UI kit an extension renders with, so its views look like the app rather than like a website.
4
4
 
5
- A curated slice of the app design system ([`@intentic/ui`](../ui)) plus the PrimeVue primitives extension views
5
+ A curated slice of the app design system ([`@intentic/ui`](../../_editor/ui)) plus the PrimeVue primitives extension views
6
6
  actually use. One of the two packages an extension may depend on (with
7
- [`@intentic/extension-api`](../../_sandbox/extension-api)).
7
+ [`@intentic/extension-api`](../../_shared/extension-api)).
8
8
 
9
9
  ## Host-provided at runtime
10
10
 
@@ -32,13 +32,18 @@ authors is a marketplace-phase task.
32
32
 
33
33
  ## The one control worth calling out
34
34
 
35
- `AgentRunButton` and `useAgentRunPick` are re-exported because four extensions start an agent for the user:
36
- pipelines, deployments, maintenance, acceptance: and each had reached its own answer about how you choose what
37
- that costs. Press the primary half and the run opens on the sandbox's standing model for the job the caller named; use the caret
38
- and it opens on something else, for that run only. The choice covers the tier as well as the model
39
- (`AgentRunChoice.effort`), so pass it on the turn you start beside `model`: the sandbox fills a pinned entry's
40
- tier in only for a run that named no model, so dropping it runs the model you chose at the provider's default
41
- effort.
35
+ `AgentRunButton` and `useAgentRunPick` are re-exported because five extensions start an agent for the user:
36
+ pipelines, deployments, maintenance, documentation, acceptance: and each had reached its own answer about how
37
+ you choose what that costs. Press the primary half and the run opens on the sandbox's standing model for the job
38
+ the caller named; use the caret and a panel opens on that run, ending in a bar that carries the button's own
39
+ label. Both halves emit the same `run`, because both are the same act: the press that finishes configuring the
40
+ run is the press that starts it.
41
+
42
+ The choice covers more than the model — the account, the harness, the tier, extended thinking and speed
43
+ (`AgentRunChoice`) — and every one of them is a different price. Send them on the turn you start beside `model`:
44
+ the sandbox fills a pinned entry's knobs in only for a run that named no model, so dropping them runs the model
45
+ you chose on the provider's defaults for everything else. `runPickOf(choice)` (from `@intentic/sandbox-contract`)
46
+ translates the whole thing into the turn's own field names in one call.
42
47
 
43
48
  `useAgentRunPick` takes `api.models` as an argument rather than importing it, which is what lets the control
44
49
  live in a kit that knows nothing about the extension API. Pass the extension's own host handle:
package/dist/index.js CHANGED
@@ -35,6 +35,7 @@ export const InfoDialog = m["InfoDialog"];
35
35
  export const InfoHint = m["InfoHint"];
36
36
  export const InfoTable = m["InfoTable"];
37
37
  export const Markdown = m["Markdown"];
38
+ export const MarkdownDocument = m["MarkdownDocument"];
38
39
  export const MarkdownFigure = m["MarkdownFigure"];
39
40
  export const Modal = m["Modal"];
40
41
  export const NavRail = m["NavRail"];
@@ -1 +1 @@
1
- export { formatBytes, formatDate, formatDateTime, formatDayMonth, formatTime, formatTimestamp, formatTokens, formatWeekdayTime, freshness, timeAgo, } from "../../ui/src/format/index.js";
1
+ export { formatBytes, formatDate, formatDateTime, formatDayMonth, formatTime, formatTimestamp, formatTokens, formatWeekdayTime, freshness, timeAgo, } from "../../ui/src/lib/format.js";
@@ -1,4 +1,4 @@
1
- export { AgentRunButton, type AgentRunChoice, type AgentRunPicker, type ModelPicking, useAgentRunPick, AnchoredOverlay, Avatar, Button, vAction, BarChart, BottomSheet, BrandMark, Card, clipboardOf, browserOwnsClick, appLink, openForwardedPort, ChangeStatusMark, type ChangeStatus, ui, Code, CodeField, ConfirmDialog, ContextMenu, CopyButton, StatusTally, type TallyItem, DagEditor, DagGraph, type DagEdge, type DagNode, DiffStat, DisclosureRow, FilterBar, Icon, type IconName, ImageView, InfoDialog, InfoHint, InfoTable, isRenderableImage, Markdown, MarkdownFigure, Modal, type NavGroup, NavRail, NoteEditor, type NoteDraft, type NoteDraftOptions, useNoteDraft, useKeyedDraft, type NoticeModel, type NoticeTone, type NoticeAction, Notice, NoticeStack, Page, PageAction, PageHeader, ScrollFrame, PersonaFace, type PersonaLike, Picker, type PickerGroup, type PickerOption, type PickerOptions, ProgressRing, RepoRail, type RepoRailAll, type RepoRailGroup, type RepoRailRow, ProseField, ResizeSeam, ResponsiveOverlay, Row, RowGroup, SearchBar, SegmentedControl, seriesColor, sinceOf, useLoadingReveal, SkeletonRows, SplitView, StatStrip, StatusBadge, type StatusVariant, StepSection, TIME_WINDOWS, type TimeWindow, timeWindowWords, useCompact, useDevice, useListNavigation, useNow, errorMessage, noticeFrom, noticeOf, useAsyncAction, useNarrow, useRailMemory, useScrollReset, type StickyTop, useStickyTop, useTheme, } from "../../ui/src/index.js";
1
+ export { AgentRunButton, type AgentRunChoice, type AgentRunPicker, type ModelPicking, useAgentRunPick, AnchoredOverlay, Avatar, Button, vAction, BarChart, BottomSheet, BrandMark, Card, clipboardOf, browserOwnsClick, appLink, openForwardedPort, ChangeStatusMark, type ChangeStatus, ui, Code, CodeField, ConfirmDialog, ContextMenu, CopyButton, StatusTally, type TallyItem, DagEditor, DagGraph, type DagEdge, type DagNode, DiffStat, DisclosureRow, FilterBar, Icon, type IconName, ImageView, InfoDialog, InfoHint, InfoTable, isRenderableImage, Markdown, MarkdownDocument, MarkdownFigure, Modal, type NavGroup, NavRail, NoteEditor, type NoteDraft, type NoteDraftOptions, useNoteDraft, useKeyedDraft, type NoticeModel, type NoticeTone, type NoticeAction, Notice, NoticeStack, Page, PageAction, PageHeader, ScrollFrame, PersonaFace, type PersonaLike, Picker, type PickerGroup, type PickerOption, type PickerOptions, ProgressRing, RepoRail, type RepoRailAll, type RepoRailGroup, type RepoRailRow, ProseField, ResizeSeam, ResponsiveOverlay, Row, RowGroup, SearchBar, SegmentedControl, seriesColor, sinceOf, useLoadingReveal, SkeletonRows, SplitView, StatStrip, StatusBadge, type StatusVariant, StepSection, TIME_WINDOWS, type TimeWindow, timeWindowWords, useCompact, useDevice, useListNavigation, useNow, errorMessage, noticeFrom, noticeOf, useAsyncAction, useNarrow, useRailMemory, useScrollReset, type StickyTop, useStickyTop, useTheme, } from "../../ui/src/index.js";
2
2
  export { formatBytes, formatDate, formatDateTime, formatDayMonth, formatTime, formatTimestamp, formatTokens, formatWeekdayTime, freshness, timeAgo, } from "./format.js";
3
3
  export type { BarsFigure, BarsFigureItem, DagFigure, DagFigureEdge, DagFigureNode, Figure, FigureAccent, MermaidFigure, StatsFigure, StatsFigureItem, } from "../../ui/src/markdown/index.js";
4
4
  export { default as Checkbox } from "primevue/checkbox";
@@ -1,4 +1,4 @@
1
- import type { Figure } from "../markdown/figures.js";
1
+ import type { Figure } from "../../markdown/figures.js";
2
2
  type __VLS_Props = {
3
3
  figure: Figure;
4
4
  };
@@ -1,4 +1,4 @@
1
- import type { StatsFigureItem } from "../markdown/figures.js";
1
+ import type { StatsFigureItem } from "../../markdown/figures.js";
2
2
  type __VLS_Props = {
3
3
  items: readonly StatsFigureItem[];
4
4
  };
@@ -1,4 +1,4 @@
1
- import type { StatusVariant } from "./StatusBadge.vue";
1
+ import type { StatusVariant } from "../feedback/StatusBadge.vue";
2
2
  export interface TallyItem {
3
3
  readonly label: string;
4
4
  readonly value: number;
@@ -1,4 +1,4 @@
1
- import type { FigureAccent } from "../markdown/figures.js";
1
+ import type { FigureAccent } from "../../markdown/figures.js";
2
2
  export interface BarItem {
3
3
  readonly label: string;
4
4
  readonly value: number;
@@ -1,2 +1,2 @@
1
- import type { FigureAccent } from "../markdown/figures.js";
1
+ import type { FigureAccent } from "../../markdown/figures.js";
2
2
  export declare const seriesColor: (accent: FigureAccent | undefined) => string;
@@ -1,5 +1,5 @@
1
1
  import { type NoticeModel, type NoticeTone } from "./notice.js";
2
- import type { IconName } from "../icons/iconSets.js";
2
+ import type { IconName } from "../../icons/iconSets.js";
3
3
  type __VLS_Props = {
4
4
  of?: NoticeModel;
5
5
  tone?: NoticeTone;
@@ -1,4 +1,4 @@
1
- import { type RowDensity } from "./row.js";
1
+ import { type RowDensity } from "../rows/row.js";
2
2
  type __VLS_Props = {
3
3
  rows?: number;
4
4
  density?: RowDensity;
@@ -1,4 +1,4 @@
1
- import type { IconName } from "../icons/iconSets.js";
1
+ import type { IconName } from "../../icons/iconSets.js";
2
2
  export type NoticeTone = "danger" | "warning" | "info";
3
3
  export interface NoticeAction {
4
4
  readonly label: string;
@@ -2,7 +2,6 @@ type __VLS_Props = {
2
2
  title: string;
3
3
  raw: string;
4
4
  editing: boolean;
5
- showSource?: boolean;
6
5
  loading?: boolean;
7
6
  saving?: boolean;
8
7
  removing?: boolean;
@@ -10,7 +9,7 @@ type __VLS_Props = {
10
9
  verb?: string;
11
10
  paged?: boolean;
12
11
  };
13
- declare var __VLS_9: {}, __VLS_12: {}, __VLS_20: {}, __VLS_23: {}, __VLS_47: {}, __VLS_65: {}, __VLS_67: {}, __VLS_92: {};
12
+ declare var __VLS_9: {}, __VLS_12: {}, __VLS_20: {}, __VLS_23: {}, __VLS_47: {}, __VLS_65: {}, __VLS_67: {}, __VLS_88: {};
14
13
  type __VLS_Slots = {} & {
15
14
  lead?: (props: typeof __VLS_9) => any;
16
15
  } & {
@@ -26,7 +25,7 @@ type __VLS_Slots = {} & {
26
25
  } & {
27
26
  confirm?: (props: typeof __VLS_67) => any;
28
27
  } & {
29
- default?: (props: typeof __VLS_92) => any;
28
+ default?: (props: typeof __VLS_88) => any;
30
29
  };
31
30
  declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
32
31
  save: () => any;
@@ -8,6 +8,7 @@ declare const __VLS_export: <T extends string>(__VLS_props: NonNullable<Awaited<
8
8
  searchThreshold?: number;
9
9
  ariaLabel?: string;
10
10
  header?: string;
11
+ labelClass?: string;
11
12
  } & {
12
13
  modelValue?: T | undefined;
13
14
  }) & {
@@ -1,4 +1,4 @@
1
- import type { IconName } from "../icons/iconSets.js";
1
+ import type { IconName } from "../../icons/iconSets.js";
2
2
  declare const __VLS_export: <T extends string>(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_exposed?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
3
3
  props: import("vue").PublicProps & __VLS_PrettifyLocal<({
4
4
  options: readonly {
@@ -1,5 +1,5 @@
1
- import type { IconName } from "../icons/iconSets.js";
2
- import type { PersonaLike } from "./personaFace.js";
1
+ import type { IconName } from "../../icons/iconSets.js";
2
+ import type { PersonaLike } from "../brand/personaFace.js";
3
3
  export interface PickerOption<T extends string = string> {
4
4
  readonly value: T;
5
5
  readonly label: string;
@@ -1,4 +1,4 @@
1
- import type { IconName } from "../icons/iconSets.js";
1
+ import type { IconName } from "../../icons/iconSets.js";
2
2
  declare const __VLS_export: import("vue").DefineComponent<({
3
3
  label: string;
4
4
  icon: IconName;
@@ -1,6 +1,7 @@
1
1
  type __VLS_Props = {
2
2
  axis?: `x` | `y`;
3
3
  pane?: `before` | `after`;
4
+ place?: `between` | `edge`;
4
5
  min: number;
5
6
  max: number;
6
7
  reset?: number;
@@ -1,4 +1,4 @@
1
- import type { IconName } from "../icons/iconSets.js";
1
+ import type { IconName } from "../../icons/iconSets.js";
2
2
  type __VLS_Props = {
3
3
  step?: number;
4
4
  icon?: IconName;
@@ -1,4 +1,4 @@
1
- import type { FigureAccent } from "../markdown/figures.js";
1
+ import type { FigureAccent } from "../../markdown/figures.js";
2
2
  export interface NavGroup<T> {
3
3
  readonly key: string;
4
4
  readonly label?: string;
@@ -1,4 +1,4 @@
1
- import type { IconName } from "../icons/iconSets.js";
1
+ import type { IconName } from "../../icons/iconSets.js";
2
2
  export interface RepoRailRow {
3
3
  readonly value: string;
4
4
  readonly label: string;
@@ -1,4 +1,4 @@
1
- import { type MarkdownDecorator } from "../markdown/render.js";
1
+ import { type MarkdownDecorator } from "../../markdown/render.js";
2
2
  type __VLS_Props = {
3
3
  source: string;
4
4
  decorate?: MarkdownDecorator;
@@ -0,0 +1,47 @@
1
+ import type { MarkdownDecorator } from "../../markdown/render.js";
2
+ import { type SavePolicy } from "./markdownDocument.js";
3
+ type __VLS_Props = {
4
+ editable?: boolean;
5
+ save?: SavePolicy;
6
+ saving?: boolean;
7
+ stored?: string;
8
+ maxChars?: number;
9
+ placeholder?: string;
10
+ label?: string;
11
+ readOnlyReason?: string;
12
+ decorate?: MarkdownDecorator;
13
+ caretAt?: number;
14
+ };
15
+ type __VLS_ModelProps = {
16
+ modelValue: string;
17
+ };
18
+ type __VLS_PublicProps = __VLS_Props & __VLS_ModelProps;
19
+ declare var __VLS_25: {}, __VLS_27: {};
20
+ type __VLS_Slots = {} & {
21
+ note?: (props: typeof __VLS_25) => any;
22
+ } & {
23
+ actions?: (props: typeof __VLS_27) => any;
24
+ };
25
+ declare const __VLS_base: import("vue").DefineComponent<__VLS_PublicProps, {
26
+ text: () => string;
27
+ commit: () => void;
28
+ focus: () => void;
29
+ dirty: import("vue").ComputedRef<boolean>;
30
+ status: import("vue").ComputedRef<string>;
31
+ }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
32
+ save: (value: string) => any;
33
+ change: (value: string) => any;
34
+ "update:modelValue": (value: string) => any;
35
+ }, string, import("vue").PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
36
+ onSave?: ((value: string) => any) | undefined;
37
+ onChange?: ((value: string) => any) | undefined;
38
+ "onUpdate:modelValue"?: ((value: string) => any) | undefined;
39
+ }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
40
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
41
+ declare const _default: typeof __VLS_export;
42
+ export default _default;
43
+ type __VLS_WithSlots<T, S> = T & {
44
+ new (): {
45
+ $slots: S;
46
+ };
47
+ };
@@ -0,0 +1,18 @@
1
+ import { type ComputedRef } from "vue";
2
+ export type SavePolicy = "auto" | "explicit" | "none";
3
+ export interface SaveDraftInput {
4
+ policy: () => SavePolicy;
5
+ text: () => string;
6
+ stored: () => string | undefined;
7
+ saving: () => boolean;
8
+ write: (text: string) => void;
9
+ }
10
+ export interface SaveDraft {
11
+ dirty: ComputedRef<boolean>;
12
+ status: ComputedRef<string>;
13
+ touched: () => void;
14
+ commit: () => void;
15
+ leave: () => void;
16
+ }
17
+ export declare const SAVE_AFTER_MS = 700;
18
+ export declare const useSaveDraft: (input: SaveDraftInput) => SaveDraft;
@@ -1,4 +1,4 @@
1
- import { type Cross, type Side } from "../lib/anchorPlacement.js";
1
+ import { type Cross, type Side } from "../../lib/anchorPlacement.js";
2
2
  type __VLS_Props = {
3
3
  anchor: HTMLElement | undefined;
4
4
  side?: Side;
@@ -1,4 +1,4 @@
1
- import type { IconName } from "../icons/iconSets.js";
1
+ import type { IconName } from "../../icons/iconSets.js";
2
2
  declare const __VLS_export: <T>(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_exposed?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
3
3
  props: import("vue").PublicProps & __VLS_PrettifyLocal<{
4
4
  open: boolean;
@@ -1,4 +1,4 @@
1
- import type { Cross, Side } from "../lib/anchorPlacement.js";
1
+ import type { Cross, Side } from "../../lib/anchorPlacement.js";
2
2
  type __VLS_Props = {
3
3
  anchor: HTMLElement | undefined;
4
4
  header?: string;
@@ -1,4 +1,4 @@
1
- import { type IconName } from "../icons/iconSets.js";
1
+ import { type IconName } from "../../icons/iconSets.js";
2
2
  type __VLS_Props = {
3
3
  name: IconName;
4
4
  spin?: boolean;
@@ -1,9 +1,9 @@
1
- import type { IconName } from "../icons/iconSets.js";
1
+ import type { IconName } from "../../icons/iconSets.js";
2
2
  import { type RowDensity, type RowTone } from "./row.js";
3
3
  type __VLS_Props = {
4
4
  open?: boolean;
5
5
  density?: RowDensity;
6
- hit?: `header` | `pair` | `row`;
6
+ hit?: `header` | `pair`;
7
7
  body?: `rail` | `drawer`;
8
8
  icon?: IconName;
9
9
  title?: string;
@@ -1,4 +1,4 @@
1
- import type { IconName } from "../icons/iconSets.js";
1
+ import type { IconName } from "../../icons/iconSets.js";
2
2
  import { type RowDensity, type RowTone } from "./row.js";
3
3
  type __VLS_Props = {
4
4
  icon?: IconName;
@@ -21,27 +21,31 @@ type __VLS_Props = {
21
21
  headlineGuard?: boolean;
22
22
  spine?: boolean;
23
23
  };
24
- declare var __VLS_16: {
24
+ declare var __VLS_8: {}, __VLS_18: {
25
25
  mark: 22 | 18 | 28;
26
- }, __VLS_29: {}, __VLS_31: {}, __VLS_33: {}, __VLS_35: {}, __VLS_42: {
26
+ }, __VLS_31: {}, __VLS_33: {}, __VLS_35: {}, __VLS_37: {}, __VLS_44: {}, __VLS_46: {
27
27
  mark: 22 | 18 | 28;
28
- }, __VLS_49: {}, __VLS_51: {};
28
+ }, __VLS_53: {}, __VLS_55: {};
29
29
  type __VLS_Slots = {} & {
30
- lead?: (props: typeof __VLS_16) => any;
30
+ before?: (props: typeof __VLS_8) => any;
31
31
  } & {
32
- title?: (props: typeof __VLS_29) => any;
32
+ lead?: (props: typeof __VLS_18) => any;
33
33
  } & {
34
- description?: (props: typeof __VLS_31) => any;
34
+ title?: (props: typeof __VLS_31) => any;
35
35
  } & {
36
- meta?: (props: typeof __VLS_33) => any;
36
+ description?: (props: typeof __VLS_33) => any;
37
37
  } & {
38
- control?: (props: typeof __VLS_35) => any;
38
+ meta?: (props: typeof __VLS_35) => any;
39
39
  } & {
40
- lead?: (props: typeof __VLS_42) => any;
40
+ control?: (props: typeof __VLS_37) => any;
41
41
  } & {
42
- below?: (props: typeof __VLS_49) => any;
42
+ before?: (props: typeof __VLS_44) => any;
43
43
  } & {
44
- below?: (props: typeof __VLS_51) => any;
44
+ lead?: (props: typeof __VLS_46) => any;
45
+ } & {
46
+ below?: (props: typeof __VLS_53) => any;
47
+ } & {
48
+ below?: (props: typeof __VLS_55) => any;
45
49
  };
46
50
  declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
47
51
  headerClick: (event: MouseEvent) => any;
@@ -5,6 +5,7 @@ type __VLS_Props = {
5
5
  caption?: string;
6
6
  flat?: boolean;
7
7
  undivided?: boolean;
8
+ sticky?: boolean;
8
9
  density?: RowDensity;
9
10
  };
10
11
  declare var __VLS_1: {}, __VLS_3: {}, __VLS_5: {}, __VLS_7: {};
@@ -5,7 +5,7 @@ export declare const ROW_TIERS: {
5
5
  readonly comfortable: {
6
6
  readonly pad: "px-4.5 py-3.5";
7
7
  readonly gap: "gap-3";
8
- readonly icon: "text-lg";
8
+ readonly icon: "text-xl";
9
9
  readonly title: "font-semibold leading-tight";
10
10
  readonly description: "text-xs";
11
11
  readonly mark: 28;
@@ -13,7 +13,7 @@ export declare const ROW_TIERS: {
13
13
  readonly compact: {
14
14
  readonly pad: "px-4 py-2.5";
15
15
  readonly gap: "gap-3";
16
- readonly icon: "text-sm";
16
+ readonly icon: "text-lg";
17
17
  readonly title: "text-sm font-medium leading-tight";
18
18
  readonly description: "text-2xs";
19
19
  readonly mark: 22;
@@ -21,14 +21,14 @@ export declare const ROW_TIERS: {
21
21
  readonly dense: {
22
22
  readonly pad: "px-2.5 py-2";
23
23
  readonly gap: "gap-2.5";
24
- readonly icon: "text-xs";
24
+ readonly icon: "text-base";
25
25
  readonly title: "text-xs font-medium leading-tight";
26
26
  readonly description: "text-2xs";
27
27
  readonly mark: 18;
28
28
  };
29
29
  };
30
30
  export declare const ROW_TONES: {
31
- readonly default: "text-subtle";
31
+ readonly default: "text-muted";
32
32
  readonly danger: "text-danger";
33
33
  readonly warning: "text-warning";
34
34
  readonly success: "text-success";
@@ -1,9 +1,8 @@
1
- import type { IconName } from "../icons/iconSets.js";
1
+ import type { AgentRunPicker } from "../../composables/useAgentRunPick.js";
2
+ import type { IconName } from "../../icons/iconSets.js";
2
3
  type __VLS_Props = {
3
4
  label: string;
4
- modelLabel?: string | undefined;
5
- effortLabel?: string | undefined;
6
- overridden?: boolean;
5
+ picker: AgentRunPicker;
7
6
  severity?: string | undefined;
8
7
  size?: string;
9
8
  text?: boolean;
@@ -14,10 +13,8 @@ type __VLS_Props = {
14
13
  };
15
14
  declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
16
15
  run: () => any;
17
- pick: (args_0: HTMLElement) => any;
18
16
  }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
19
17
  onRun?: (() => any) | undefined;
20
- onPick?: ((args_0: HTMLElement) => any) | undefined;
21
18
  }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
22
19
  declare const _default: typeof __VLS_export;
23
20
  export default _default;
@@ -7,6 +7,8 @@ export interface AgentRunChoice {
7
7
  readonly harness?: string | undefined;
8
8
  readonly effort?: string | undefined;
9
9
  readonly effortLabel?: string | undefined;
10
+ readonly thinking?: boolean | undefined;
11
+ readonly fast?: boolean | undefined;
10
12
  }
11
13
  export interface ModelPicking {
12
14
  agentRun(role: string): AgentRunChoice;
@@ -17,13 +19,16 @@ export interface ModelPicking {
17
19
  readonly account?: string | undefined;
18
20
  readonly harness?: string | undefined;
19
21
  readonly effort?: string | undefined;
20
- readonly chooseEffort?: boolean;
22
+ readonly thinking?: boolean | undefined;
23
+ readonly fast?: boolean | undefined;
24
+ readonly action?: string | undefined;
25
+ readonly chooseRun?: boolean;
21
26
  }): Promise<AgentRunChoice | undefined>;
22
27
  }
23
28
  export interface AgentRunPicker {
24
29
  readonly model: ComputedRef<AgentRunChoice>;
25
30
  readonly overridden: ComputedRef<boolean>;
26
- readonly choose: (anchor: HTMLElement) => Promise<void>;
31
+ readonly choose: (anchor: HTMLElement, action: string) => Promise<boolean>;
27
32
  readonly clear: () => void;
28
33
  }
29
34
  export declare function useAgentRunPick(models: () => ModelPicking, role: string): AgentRunPicker;
@@ -1,4 +1,4 @@
1
- import type { NoticeModel, NoticeTone } from "../components/notice.js";
1
+ import type { NoticeModel, NoticeTone } from "../components/feedback/notice.js";
2
2
  export declare const errorMessage: (error: unknown, fallback: string) => string;
3
3
  interface NoticeOptions {
4
4
  readonly tone?: NoticeTone;
@@ -1,3 +1,140 @@
1
- export type IconName = "align-left" | "angle-right" | "arrow-circle-up" | "arrow-down-left" | "arrow-left" | "arrow-right" | "arrow-up-right" | "arrows-h" | "backward" | "bars" | "bolt" | "book" | "box" | "boxes" | "camera" | "check" | "check-circle" | "check-square" | "chevron-down" | "chevron-right" | "chevron-up" | "circle" | "circle-fill" | "clock" | "clone" | "cloud" | "cloud-upload" | "code" | "cog" | "collapse-all" | "cpu" | "comments" | "compress" | "copy" | "credit-card" | "database" | "desktop" | "download" | "ellipsis" | "envelope" | "eraser" | "exclamation-circle" | "exclamation-triangle" | "expand" | "external-link" | "eye" | "eye-slash" | "file" | "file-edit" | "file-pdf" | "file-tree" | "filter" | "folder" | "folder-open" | "fork" | "forward" | "gift" | "github" | "gitlab" | "globe" | "google" | "hammer" | "history" | "image" | "info-circle" | "key" | "layout-left" | "link" | "link-broken" | "list-check" | "lock" | "microphone" | "moon" | "palette" | "paperclip" | "pause" | "pencil" | "picture-in-picture" | "pin" | "play" | "plus" | "plus-circle" | "question-circle" | "refresh" | "repeat" | "robot" | "save" | "search" | "send" | "server" | "shield" | "sign-in" | "sign-out" | "sitemap" | "slack" | "sliders-h" | "sort-desc" | "sparkles" | "split-columns" | "spinner" | "square" | "star" | "star-fill" | "stop" | "sun" | "sync" | "terminal" | "th-large" | "times" | "trash" | "undo" | "unlock" | "upload" | "user" | "users" | "volume-off" | "volume-up" | "wave-pulse" | "wifi" | "window-maximize" | "window-minimize" | "wrench";
2
- export declare const ICONS: Record<IconName, string>;
1
+ export declare const ICONS: {
2
+ readonly "align-left": "intentic:align-left";
3
+ readonly "angle-right": "intentic:chevron-right";
4
+ readonly approvals: "intentic:approvals";
5
+ readonly "arrow-circle-up": "intentic:arrow-circle-up";
6
+ readonly "arrow-down-left": "intentic:arrow-down-left";
7
+ readonly "arrow-left": "intentic:arrow-left";
8
+ readonly "arrow-right": "intentic:arrow-right";
9
+ readonly "arrow-up-right": "intentic:arrow-up-right";
10
+ readonly "arrows-h": "intentic:arrows-h";
11
+ readonly automations: "intentic:automations";
12
+ readonly backward: "intentic:backward";
13
+ readonly bars: "intentic:bars";
14
+ readonly bolt: "intentic:bolt";
15
+ readonly book: "intentic:book";
16
+ readonly box: "intentic:box";
17
+ readonly boxes: "intentic:boxes";
18
+ readonly browsers: "intentic:browsers";
19
+ readonly camera: "intentic:camera";
20
+ readonly check: "intentic:check";
21
+ readonly "check-circle": "intentic:check-circle";
22
+ readonly "check-square": "intentic:check-square";
23
+ readonly "chevron-down": "intentic:chevron-down";
24
+ readonly "chevron-right": "intentic:chevron-right";
25
+ readonly "chevron-up": "intentic:chevron-up";
26
+ readonly circle: "intentic:circle";
27
+ readonly "circle-fill": "intentic:circle-fill";
28
+ readonly clock: "intentic:clock";
29
+ readonly clone: "intentic:copy";
30
+ readonly cloud: "intentic:cloud";
31
+ readonly "cloud-upload": "intentic:cloud-upload";
32
+ readonly code: "intentic:code";
33
+ readonly cog: "intentic:cog";
34
+ readonly "collapse-all": "intentic:collapse-all";
35
+ readonly comments: "intentic:comments";
36
+ readonly compress: "intentic:compress";
37
+ readonly copy: "intentic:copy";
38
+ readonly cpu: "intentic:cpu";
39
+ readonly "credit-card": "intentic:credit-card";
40
+ readonly database: "intentic:database";
41
+ readonly deployments: "intentic:deployments";
42
+ readonly desktop: "intentic:desktop";
43
+ readonly download: "intentic:download";
44
+ readonly ellipsis: "intentic:ellipsis";
45
+ readonly envelope: "intentic:envelope";
46
+ readonly eraser: "intentic:eraser";
47
+ readonly "exclamation-circle": "intentic:exclamation-circle";
48
+ readonly "exclamation-triangle": "intentic:exclamation-triangle";
49
+ readonly expand: "intentic:expand";
50
+ readonly extensions: "intentic:extensions";
51
+ readonly "external-link": "intentic:external-link";
52
+ readonly eye: "intentic:eye";
53
+ readonly "eye-slash": "intentic:eye-slash";
54
+ readonly file: "intentic:file";
55
+ readonly "file-edit": "intentic:file-edit";
56
+ readonly "file-pdf": "intentic:file-pdf";
57
+ readonly "file-tree": "intentic:file-tree";
58
+ readonly filter: "intentic:filter";
59
+ readonly folder: "intentic:folder";
60
+ readonly "folder-open": "intentic:folder-open";
61
+ readonly fork: "intentic:fork";
62
+ readonly forward: "intentic:forward";
63
+ readonly gift: "intentic:gift";
64
+ readonly github: "ri:github-line";
65
+ readonly gitlab: "ri:gitlab-line";
66
+ readonly globe: "intentic:globe";
67
+ readonly google: "ri:google-line";
68
+ readonly hammer: "intentic:hammer";
69
+ readonly history: "intentic:history";
70
+ readonly image: "intentic:image";
71
+ readonly "info-circle": "intentic:info-circle";
72
+ readonly infrastructure: "intentic:infrastructure";
73
+ readonly key: "intentic:key";
74
+ readonly knowledge: "intentic:knowledge";
75
+ readonly "layout-left": "intentic:layout-left";
76
+ readonly link: "intentic:link";
77
+ readonly "link-broken": "intentic:link-broken";
78
+ readonly "list-check": "intentic:list-check";
79
+ readonly lock: "intentic:lock";
80
+ readonly maintenance: "intentic:maintenance";
81
+ readonly microphone: "intentic:microphone";
82
+ readonly moon: "intentic:moon";
83
+ readonly palette: "intentic:palette";
84
+ readonly paperclip: "intentic:paperclip";
85
+ readonly pause: "intentic:pause";
86
+ readonly pencil: "intentic:pencil";
87
+ readonly "picture-in-picture": "intentic:picture-in-picture";
88
+ readonly pin: "intentic:pin";
89
+ readonly pipelines: "intentic:pipelines";
90
+ readonly play: "intentic:play";
91
+ readonly plus: "intentic:plus";
92
+ readonly "plus-circle": "intentic:plus-circle";
93
+ readonly ports: "intentic:ports";
94
+ readonly "question-circle": "intentic:question-circle";
95
+ readonly refresh: "intentic:refresh";
96
+ readonly repeat: "intentic:repeat";
97
+ readonly robot: "intentic:robot";
98
+ readonly save: "intentic:save";
99
+ readonly search: "intentic:search";
100
+ readonly send: "intentic:send";
101
+ readonly server: "intentic:server";
102
+ readonly shield: "intentic:shield";
103
+ readonly "sign-in": "intentic:sign-in";
104
+ readonly "sign-out": "intentic:sign-out";
105
+ readonly sitemap: "intentic:sitemap";
106
+ readonly slack: "ri:slack-line";
107
+ readonly "sliders-h": "intentic:sliders-h";
108
+ readonly "sort-desc": "intentic:sort-desc";
109
+ readonly sparkles: "intentic:sparkles";
110
+ readonly spinner: "intentic:spinner";
111
+ readonly "split-columns": "intentic:split-columns";
112
+ readonly square: "intentic:square";
113
+ readonly star: "intentic:star";
114
+ readonly "star-fill": "intentic:star-fill";
115
+ readonly stop: "intentic:stop";
116
+ readonly subagents: "intentic:subagents";
117
+ readonly sun: "intentic:sun";
118
+ readonly sync: "intentic:refresh";
119
+ readonly terminal: "intentic:terminal";
120
+ readonly "th-large": "intentic:th-large";
121
+ readonly times: "intentic:times";
122
+ readonly trash: "intentic:trash";
123
+ readonly undo: "intentic:undo";
124
+ readonly unlock: "intentic:unlock";
125
+ readonly upload: "intentic:upload";
126
+ readonly usage: "intentic:usage";
127
+ readonly user: "intentic:user";
128
+ readonly users: "intentic:users";
129
+ readonly "volume-off": "intentic:volume-off";
130
+ readonly "volume-up": "intentic:volume-up";
131
+ readonly vpn: "intentic:vpn";
132
+ readonly "wave-pulse": "intentic:wave-pulse";
133
+ readonly wifi: "intentic:wifi";
134
+ readonly "window-maximize": "intentic:expand";
135
+ readonly "window-minimize": "intentic:compress";
136
+ readonly wrench: "intentic:wrench";
137
+ };
138
+ export type IconName = keyof typeof ICONS;
3
139
  export declare const isIconName: (name: string) => name is IconName;
140
+ export declare const areaIcon: (area: string, fallback?: IconName) => IconName | undefined;