yarramate 1.25.2 → 1.26.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.
- package/README.md +6 -2
- package/dist/adapters/mcp-cli.d.ts +45 -1
- package/dist/adapters/mcp-cli.js +297 -50
- package/dist/adapters/visual/protocol-contract.d.ts +29 -2
- package/dist/adapters/visual/session-server.js +27 -6
- package/dist/adapters/visual/session-store.js +1 -0
- package/dist/adapters/visual/wire.d.ts +18 -0
- package/dist/adapters/visual/workspace-model.js +11 -1
- package/dist/visual-app/assets/{elk.bundled-ZYNFKdcv.js → elk.bundled-CYZFv-C6.js} +1 -1
- package/dist/visual-app/assets/{index-CMqEmjU2.js → index-CRYHv5jy.js} +6 -2
- package/dist/visual-app/assets/index-DdE5s692.css +1 -0
- package/dist/visual-app/index.html +2 -2
- package/dist/visual-app-lib/editor.js +7812 -7485
- package/dist/visual-app-lib/styles.css +1 -1
- package/dist/visual-app-lib/types/adapters/visual/protocol-contract.d.ts +29 -2
- package/dist/visual-app-lib/types/adapters/visual/wire.d.ts +18 -0
- package/dist/visual-app-lib/types/visual-app/App.d.ts +7 -1
- package/dist/visual-app-lib/types/visual-app/context-menu-model.d.ts +36 -0
- package/dist/visual-app-lib/types/visual-app/mount.d.ts +9 -1
- package/dist/visual-app-lib/types/visual-app/open-questions.d.ts +18 -2
- package/dist/visual-app-lib/types/visual-app/question-verbs.d.ts +54 -0
- package/dist/visual-app-lib/types/visual-app/session-client.d.ts +3 -0
- package/dist/visual-app-lib/types/visual-app/state.d.ts +4 -1
- package/dist/visual-app-lib/types/visual-app/workspace-state.d.ts +13 -0
- package/docs/CONSUMING-YARRAMATE.md +17 -5
- package/package.json +1 -1
- package/schema/yarramate-visual-event.schema.json +324 -73
- package/schema/yarramate-visual-response.schema.json +230 -56
- package/skills/yarramate-architecture/SKILL.md +6 -2
- package/skills/yarramate-architecture/references/visual-conversations.md +21 -3
- package/dist/visual-app/assets/index-CJVWkpLt.css +0 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
:root{--paper:#e8eef0;--ink:#182228;--eucalyptus:#416f65;--ochre:#8c4d18;--cobalt:#2457a6;--failure:#a3403a;--sheet:color-mix(in oklab, var(--paper) 55%, white);--rule:color-mix(in oklab, var(--ink) 16%, transparent);--rule-firm:color-mix(in oklab, var(--ink) 34%, transparent);--quiet:color-mix(in oklab, var(--ink) 62%, var(--paper));--display:"Iowan Old Style", "Palatino Linotype", Palatino, "Book Antiqua", Georgia, serif;--body:"Avenir Next", Avenir, -apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, sans-serif;--utility:ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace;--step:.5rem;--rail-width:264px;--form-label-width:6rem;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}*{box-sizing:border-box}html,body{margin:0;padding:0}body{background:var(--paper);color:var(--ink);font-family:var(--body);-webkit-font-smoothing:antialiased;font-size:15px;line-height:1.5}:focus-visible{outline:3px solid var(--cobalt);outline-offset:2px}.offscreen{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.visual-shell{background:var(--paper);min-width:0;height:100dvh;color:var(--ink);grid-template-rows:auto minmax(0,1fr);display:grid;overflow:hidden}.command-strip{z-index:10;justify-content:space-between;align-items:center;gap:calc(var(--step) * 2);min-height:48px;padding:calc(var(--step) * .75) calc(var(--step) * 2);border-bottom:1px solid var(--rule);background:var(--sheet);flex-wrap:wrap;display:flex;position:relative}.command-identity,.command-actions{align-items:center;gap:var(--step);min-width:0;display:flex}.session-description{min-width:0;color:var(--quiet);text-overflow:ellipsis;white-space:nowrap;flex:0 auto;margin:0;font-size:13px;overflow:hidden}.command-identity{flex:10rem}.command-actions{flex-wrap:wrap;flex:0 auto;justify-content:flex-end}.command-identity h1{min-width:8ch;font-family:var(--display);text-overflow:ellipsis;white-space:nowrap;margin:0;font-size:15px;line-height:1.2;overflow:hidden}.command-actions select,.command-actions button,.command-actions .quick-filter{min-height:32px;font-family:var(--utility);letter-spacing:.08em;color:var(--ink);background:var(--paper);border:1px solid var(--rule-firm);cursor:pointer;border-radius:0;padding:0 .7rem;font-size:12px}.command-actions select{text-overflow:ellipsis;max-width:12rem}.command-actions .quick-filter{cursor:text;width:160px}.command-actions .quick-filter::placeholder{color:var(--quiet)}.command-actions select{padding-right:.35rem}.command-actions select:hover:enabled,.command-actions button:hover:enabled,.command-actions .quick-filter:hover,.command-actions .quick-filter:focus{border-color:var(--cobalt)}.command-actions select:disabled,.command-actions button:disabled{color:var(--quiet);border-color:var(--rule);cursor:not-allowed;background:0 0}.command-actions button[aria-expanded=true]{color:var(--paper);background:var(--cobalt);border-color:var(--cobalt)}.command-actions .end-session:hover:enabled{color:var(--paper);background:var(--failure);border-color:var(--failure)}.connection-state{font-family:var(--utility);letter-spacing:.14em;text-transform:uppercase;color:var(--quiet);flex:none;font-size:11px}.end-transition-status{max-width:28rem;font-family:var(--utility);color:var(--quiet);font-size:11px;line-height:1.25}.end-transition-status:empty{display:none}.direction-notice{max-width:16rem;font-family:var(--utility);color:var(--quiet);font-size:11px;line-height:1.25}.direction-notice:empty{display:none}.authority{white-space:nowrap;font-family:var(--utility);letter-spacing:.14em;text-transform:uppercase;color:var(--eucalyptus);flex:none;margin:0;font-size:11px}.authority:before{content:"";vertical-align:0;background:currentColor;width:.5rem;height:.5rem;margin-right:.5rem;display:inline-block}.beta-badge{font-family:var(--utility);letter-spacing:.1em;text-transform:uppercase;color:var(--ochre);border:1px solid var(--ochre);flex:none;padding:.05rem .4rem;font-size:10px;font-weight:600}.session-details{align-items:flex-start;gap:calc(var(--step) * 2);padding:var(--step) calc(var(--step) * 2) calc(var(--step) * 1.5);border-bottom:1px solid var(--rule);background:var(--sheet);display:flex;position:absolute;top:100%;left:0;right:0;box-shadow:0 12px 28px #1323391f}.session-details[hidden]{display:none}.session-details p{max-width:90ch;color:var(--quiet);margin:0}.details-close{min-height:28px;font-family:var(--utility);letter-spacing:.08em;color:var(--ink);background:var(--paper);border:1px solid var(--rule-firm);cursor:pointer;border-radius:0;flex:none;margin-left:auto;padding:0 .6rem;font-size:11px}.details-close:hover{border-color:var(--cobalt)}.attention-count{background:var(--cobalt);color:#fff;text-align:center;border-radius:999px;min-width:1.25rem;padding:0 .35rem;font-size:11px}.workspace{grid-template-columns:var(--rail-width) minmax(0, 1fr) auto var(--conversation-width);min-width:0;min-height:0;display:grid;overflow:hidden}.workspace[data-rail=hidden]{grid-template-columns:22px minmax(0, 1fr) auto var(--conversation-width)}.rail-reopen{align-items:center;gap:var(--step);width:22px;height:100%;padding:calc(var(--step) * 1.5) 0;border:none;border-right:1px solid var(--rule);background:var(--sheet);color:var(--quiet);cursor:pointer;flex-direction:column;font-size:12px;display:flex}.rail-reopen:hover,.rail-reopen:focus-visible{color:var(--cobalt)}.rail-hide{min-height:1.75rem;padding:0 calc(var(--step) * .75);color:var(--quiet);cursor:pointer;background:0 0;border:none;flex:none;font-size:12px;line-height:1}.rail-hide:hover,.rail-hide:focus-visible{color:var(--cobalt)}.view-tree{border-right:1px solid var(--rule);background:var(--sheet);grid-template-rows:auto minmax(0,1fr);min-width:0;min-height:0;display:grid}.view-tree-head{align-items:center;gap:calc(var(--step) * 1);padding:var(--step) calc(var(--step) * 1.5);border-bottom:1px solid var(--rule);display:flex}.view-tree-filter{min-width:0;min-height:1.75rem;font-family:var(--utility);color:var(--ink);background:var(--paper);border:1px solid var(--rule-firm);border-radius:0;flex:1;padding:0 .5rem;font-size:12px}.view-tree-new{width:1.75rem;height:1.75rem;color:var(--ink);background:var(--paper);border:1px solid var(--rule-firm);cursor:pointer;border-radius:0;flex:none;place-items:center;padding:0;display:grid}.view-tree-new:hover{border-color:var(--cobalt);color:var(--cobalt)}.view-tree-body{padding:var(--step) 0 calc(var(--step) * 2);overflow:auto}.tree-list{margin:0;padding:0;list-style:none}.tree-row{align-items:center;gap:calc(var(--step) * .75);width:100%;padding:.18rem calc(var(--step) * 1.5);font:inherit;text-align:left;color:var(--ink);cursor:pointer;background:0 0;border:0;border-radius:0;font-size:13px;display:flex}.tree-row:hover{background:color-mix(in oklab, var(--cobalt) 10%, transparent)}.tree-branch{font-family:var(--utility);color:var(--quiet);font-size:12px}.tree-depth-0{letter-spacing:.08em;text-transform:uppercase;color:var(--quiet)}.tree-depth-1{padding-left:calc(var(--step) * 3)}.tree-depth-2{padding-left:calc(var(--step) * 5.5)}.tree-row-active,.tree-row-active:hover{background:var(--cobalt);color:var(--paper)}.tree-row-quiet{color:var(--quiet)}.tree-label{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.subject-slots{margin-top:12px}.subject-slots-heading{font-family:var(--utility);text-transform:uppercase;letter-spacing:.06em;color:var(--quiet);align-items:baseline;gap:6px;margin:0 0 4px;font-size:11px;display:flex}.subject-slots-list{grid-template-columns:auto 1fr;gap:2px 10px;margin:0;font-size:12px;display:grid}.subject-slot-row{display:contents}.subject-slot-name{font-family:var(--utility);color:var(--quiet)}.subject-slot-value{margin:0}.subject-slot-vacant{color:var(--quiet);font-style:italic}.tree-fold{color:var(--quiet);flex:none;font-size:9px;line-height:1}.tree-count{font-family:var(--utility);color:var(--quiet);font-variant-numeric:tabular-nums;flex:none;font-size:10px}.tree-row>svg{opacity:.4}.tree-row-active>svg{opacity:1}.tree-row-active .tree-count{color:inherit;opacity:.75}.tree-swatch{background:var(--paper);border:1px solid var(--rule-firm);flex:none;width:.625rem;height:.625rem}.tree-empty{padding:.3rem calc(var(--step) * 3);color:var(--quiet);font-size:12px}.diagram-workspace{background:var(--paper);grid-template-rows:minmax(0,1fr) auto;min-width:0;min-height:0;display:grid;position:relative;overflow:hidden}.canvas-controls{inset:var(--step) var(--step) auto auto;z-index:5;align-items:center;gap:var(--step);display:flex;position:absolute}.canvas{width:100%;min-width:0;height:100%;min-height:0;position:relative}.diagram-workspace>.faults{z-index:4;max-height:50%;position:absolute;inset:auto 0 0;overflow:auto}.diagram-workspace>.filter-pill{inset:var(--step) auto auto var(--step);z-index:4;align-items:center;gap:var(--step);max-width:min(52ch, calc(100% - var(--step) * 2));border:1px solid var(--rule-firm);background:var(--sheet);font-family:var(--utility);color:var(--ink);border-radius:999px;padding:.35rem .7rem;font-size:12px;display:flex;position:absolute}.filter-pill span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.filter-pill code{font-weight:700}.filter-pill button{color:var(--cobalt);font-family:inherit;font-size:inherit;cursor:pointer;background:0 0;border:none;flex:none;padding:0;text-decoration:underline}.filter-pill button:hover{color:var(--ink)}.canvas>.filter-empty-pill{z-index:4;align-items:center;gap:var(--step);max-width:min(52ch, calc(100% - var(--step) * 2));border:1px solid var(--rule-firm);background:var(--sheet);font-family:var(--utility);color:var(--ink);border-radius:999px;padding:.35rem .7rem;font-size:12px;display:flex;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.filter-empty-pill span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.filter-empty-pill code{font-weight:700}.filter-empty-pill button{color:var(--cobalt);font-family:inherit;font-size:inherit;cursor:pointer;background:0 0;border:none;flex:none;padding:0;text-decoration:underline}.filter-empty-pill button:hover{color:var(--ink)}.conversation-separator{z-index:3;cursor:col-resize;touch-action:none;width:10px;height:100%;position:relative}.conversation-separator:before{background:var(--rule);content:"";width:1px;position:absolute;inset:0 auto 0 4px}.conversation-separator:hover:before,.conversation-separator:focus-visible:before{background:var(--cobalt);width:2px}.waiting{padding:calc(var(--step) * 4);font-family:var(--utility);letter-spacing:.1em;text-transform:uppercase;color:var(--quiet);margin:0;font-size:12px}.section-stack{border-left:1px solid var(--rule);background:var(--sheet);flex-direction:column;min-width:0;min-height:0;display:flex;overflow:hidden}.stack-rim{border-bottom:1px solid var(--rule);flex:none;justify-content:flex-end;display:flex}.conversation-hide{min-height:22px;padding:0 calc(var(--step) * 1.5);color:var(--quiet);cursor:pointer;background:0 0;border:none;font-size:12px;line-height:1}.conversation-hide:hover,.conversation-hide:focus-visible{color:var(--cobalt)}.conversation-reopen{align-items:center;gap:var(--step);width:22px;height:100%;padding:calc(var(--step) * 1.5) 0;border:none;border-left:1px solid var(--rule);background:var(--sheet);color:var(--quiet);cursor:pointer;flex-direction:column;font-size:12px;display:flex}.conversation-reopen:hover,.conversation-reopen:focus-visible{color:var(--cobalt)}.attention-choice{border:1px solid var(--cobalt);min-width:1.25rem;color:var(--cobalt);text-align:center;border-radius:999px;padding:0 .35rem;font-size:11px}.stack-section{grid-template-rows:auto minmax(0,1fr);min-height:0;display:grid;overflow:hidden}.stack-section-properties{flex:auto}.stack-section-changes{flex:0 0 var(--changes-height,200px)}.stack-section-chat{flex:0 0 var(--chat-height,300px)}.section-stack:not(:has(>.stack-section-properties))>.stack-section:nth-child(1 of .stack-section:not(.stack-section-palette)){flex:auto}.section-stack>.stack-section-palette:only-child{flex:auto;max-height:none}.stack-section-palette{flex:0 auto;max-height:45%}.kind-palette{padding:calc(var(--step) * .5) 0 calc(var(--step) * .75)}.kind-palette-layer-name{width:100%;padding:calc(var(--step) * .75) calc(var(--step) * 1.5) calc(var(--step) * .25);text-align:left;cursor:pointer;font-family:var(--utility);letter-spacing:.08em;color:var(--quiet);background:0 0;border:none;margin:0;font-size:11px;display:block}.kind-palette-caret{width:1em;display:inline-block}.kind-palette-rows{margin:0;padding:0;list-style:none}.kind-palette-row{align-items:center;gap:calc(var(--step) * .75);width:100%;padding:.3rem calc(var(--step) * 1.5);font:inherit;text-align:left;color:var(--ink);cursor:grab;background:0 0;border:0;border-radius:0;font-size:13px;display:flex}.kind-palette-row:hover,.kind-palette-row:focus-visible{background:color-mix(in oklab, var(--cobalt) 10%, transparent)}.kind-palette-row img{flex:none}.kind-palette-stack{border:1px solid var(--ink);background:var(--paper);border-radius:2px;flex:none;width:14px;height:14px;position:relative}.kind-palette-stack:before{content:"";border:1px solid color-mix(in oklab, var(--ink) 45%, transparent);background:var(--paper);z-index:-1;border-radius:2px;width:100%;height:100%;position:absolute;top:-3px;left:3px}.kind-palette-slots{color:color-mix(in oklab, var(--ink) 60%, transparent);margin-left:auto;font-size:11px}.instance-draft-slots{margin:0;padding:0;list-style:none}.instance-draft-slot{align-items:center;gap:calc(var(--step) * .75);margin-bottom:calc(var(--step) * .75);grid-template-columns:10rem 1fr;display:grid}.instance-draft-slot>label{align-items:baseline;gap:calc(var(--step) * .5);display:flex}.instance-draft-slot-name{font-weight:600}.instance-draft-required,.instance-draft-context{border-radius:2px;padding:0 .35em;font-size:11px}.instance-draft-required{color:var(--failure);border:1px solid color-mix(in oklab, var(--failure) 40%, transparent)}.instance-draft-context{color:color-mix(in oklab, var(--ink) 65%, transparent);border:1px solid color-mix(in oklab, var(--ink) 25%, transparent)}.instance-draft-new{gap:calc(var(--step) * .5);grid-column:2;display:flex}.instance-draft-wiring h4{margin:calc(var(--step) * 1.5) 0 calc(var(--step) * .5);color:color-mix(in oklab, var(--ink) 65%, transparent);font-size:12px}.kind-palette-bound-name{padding-left:calc(var(--step) * 2.5);color:color-mix(in oklab, var(--ink) 65%, transparent);font-size:12px}.section-head{align-items:center;gap:var(--step);min-height:32px;padding-right:calc(var(--step) * 1.5);border-bottom:1px solid var(--rule);font-size:inherit;margin:0;font-weight:400;display:flex}.section-toggle{align-items:center;gap:calc(var(--step) * .75);min-height:32px;padding:0 calc(var(--step) * 1.5);color:var(--ink);cursor:pointer;font-family:var(--utility);letter-spacing:.08em;background:0 0;border:none;font-size:12px;display:flex}.section-chevron{color:var(--quiet);font-size:10px}.section-meta{font-family:var(--utility);color:var(--quiet);text-overflow:ellipsis;white-space:nowrap;margin-left:auto;font-size:11px;overflow:hidden}.section-body{min-height:0;overflow:auto}.section-body[hidden]{display:none}.section-empty{padding:calc(var(--step) * 1.5);color:var(--quiet);margin:0;font-size:13px}.section-splitter{cursor:row-resize;background:0 0;border:none;flex:0 0 7px;height:7px;position:relative}.section-splitter:after{content:"";background:var(--rule);position:absolute;inset:3px 0}.section-splitter:hover:after,.section-splitter:focus-visible:after{background:var(--cobalt);inset:2px 0}.section-splitter:focus-visible{outline:none}.talk{background:var(--sheet);grid-template-rows:minmax(0,1fr) auto;grid-template-columns:minmax(0,1fr);min-width:0;min-height:0;display:grid;overflow:hidden}.session-foot{align-items:center;gap:var(--step);padding:0 calc(var(--step) * 1.5) calc(var(--step) * 1.5);display:flex}.session-foot .end-session{margin-left:auto}.talk[hidden]{display:none}.conversation-scroll{min-width:0;min-height:0;overflow:auto}.subject-inspector{min-width:0;padding:calc(var(--step) * 1.5);border-bottom:1px solid var(--rule);background:color-mix(in srgb, var(--sheet) 92%, var(--cobalt) 8%)}.subject-heading-row{justify-content:space-between;align-items:flex-start;gap:var(--step);min-width:0;display:flex}.subject-heading-row>:first-child,.subject-heading-row h2{min-width:0}.subject-type{margin:0 0 calc(var(--step) * .25);color:var(--quiet);letter-spacing:.12em;text-transform:uppercase;font-size:10px;font-weight:700}.subject-heading-row h2{font-family:var(--display);overflow-wrap:anywhere;margin:0;font-size:16px;line-height:1.25}.subject-facts{gap:calc(var(--step) * .5);margin:var(--step) 0;display:grid}.subject-facts>div{gap:var(--step);grid-template-columns:minmax(5.5rem,auto) minmax(0,1fr);display:grid}.subject-facts dt{color:var(--quiet);font-size:11px}.subject-facts dd{overflow-wrap:anywhere;min-width:0;margin:0}.subject-description p{white-space:pre-wrap;overflow-wrap:anywhere;margin:0}.description-clamped{-webkit-line-clamp:3;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.subject-description button,.subject-navigate,.subject-clear{margin-top:calc(var(--step) * .5);min-height:28px}.subject-connect{margin-top:calc(var(--step) * .5);margin-right:calc(var(--step) * .5);min-height:28px}.connection-panel{z-index:2;top:calc(var(--step) * 1.5);max-width:min(560px, calc(100% - var(--step) * 4));padding:calc(var(--step) * 1.5) calc(var(--step) * 2);border:1px solid var(--rule);background:var(--sheet);border-radius:4px;position:absolute;left:50%;transform:translate(-50%);box-shadow:0 2px 12px #0000001f}.connection-prompt{margin:0 0 calc(var(--step) * 1.5)}.connection-empty{margin:0 0 calc(var(--step) * 1.5);color:var(--quiet)}.changeset-fault-summary{margin:calc(var(--step) * 1.5) calc(var(--step) * 2.5) 0;color:var(--failure);font-weight:600}.subject-delete{margin-top:calc(var(--step) * .5);margin-right:calc(var(--step) * .5);min-height:28px}.subject-draft-open{border:1px solid var(--rule-firm);background:var(--sheet);min-height:28px;color:var(--ink);cursor:pointer;font-family:var(--utility);letter-spacing:.08em;border-radius:0;padding:0 .7rem;font-size:12px}.subject-draft-open:hover{border-color:var(--cobalt)}.canvas-controls .quick-filter{border:1px solid var(--rule-firm);background:var(--sheet);width:min(220px,30vw);min-height:28px;color:var(--ink);font-family:var(--utility);border-radius:0;padding:0 .6rem;font-size:12px}.canvas-controls .quick-filter::placeholder{color:var(--quiet)}.canvas-controls .canvas-select{border:1px solid var(--rule-firm);background:var(--sheet);min-height:28px;color:var(--ink);font-family:var(--utility);border-radius:0;padding:0 .4rem;font-size:12px}.canvas-controls .canvas-select:focus-visible{outline:2px solid var(--cobalt);outline-offset:1px}.subject-draft-panel{z-index:6;top:calc(var(--step) * 2 + 28px);right:calc(var(--step) * 1.5);width:min(340px, calc(100% - var(--step) * 4));padding:calc(var(--step) * 1.5) calc(var(--step) * 2);border:1px solid var(--rule);background:var(--sheet);border-radius:4px;position:absolute;box-shadow:0 2px 12px #0000001f}.subject-draft-field{margin-bottom:calc(var(--step) * 1.5);display:block}.subject-draft-field>span{margin-bottom:calc(var(--step) * .5);display:block}.subject-draft-field>input,.subject-draft-field>select{width:100%}.subject-draft-id{margin:0 0 calc(var(--step) * 1.5);color:var(--quiet)}.connection-kinds{gap:calc(var(--step) * .75);margin:0 0 calc(var(--step) * 1.5);flex-wrap:wrap;padding:0;list-style:none;display:flex}.connection-search-label{margin:0 0 calc(var(--step) * .5);font-family:var(--utility);color:var(--quiet);font-size:12px;display:block}.connection-search{width:100%;margin:0 0 calc(var(--step) * 1);padding:calc(var(--step) * .5) calc(var(--step) * .75);border:1px solid var(--rule-firm);background:var(--sheet);color:var(--ink);font-family:var(--utility);border-radius:0;display:block}.connection-targets{gap:calc(var(--step) * .5);margin:0 0 calc(var(--step) * 1.5);flex-direction:column;max-height:200px;padding:0;list-style:none;display:flex;overflow-y:auto}.connection-target-id,.connection-targets-more{color:var(--quiet);font-family:var(--utility);font-size:12px}.ledger{padding:calc(var(--step) * 2) calc(var(--step) * 2.5);min-height:0;margin:0;list-style:none;overflow:visible}.ledger .empty p{color:var(--quiet);font-family:var(--utility);margin:0;font-size:12px}.said{padding:0 0 calc(var(--step) * 1.75) calc(var(--step) * 1.5);border-left:2px solid var(--rule)}.said+.said{padding-top:calc(var(--step) * 1.75)}.said-reviewer{border-left-color:var(--cobalt)}.said-agent{border-left-color:var(--eucalyptus)}.said-session{border-left-color:var(--ochre)}.who{font-family:var(--utility);letter-spacing:.16em;text-transform:uppercase;color:var(--quiet);margin:0 0 .15rem;font-size:10px}.words{white-space:pre-wrap;overflow-wrap:anywhere;margin:0}.faults{padding:calc(var(--step) * 1.5) calc(var(--step) * 2.5);border-top:1px solid var(--failure);background:color-mix(in oklab, var(--failure) 8%, var(--sheet))}.faults-title{margin:0 0 var(--step);color:var(--failure);font-size:13px}.faults ul{font-family:var(--utility);margin:0;padding-left:1.1rem;font-size:11px;line-height:1.6}.faults .code{font-weight:700}.faults .where{color:var(--quiet);margin-left:.4rem}.choices{padding:calc(var(--step) * 1.5) calc(var(--step) * 2.5);border-top:1px solid var(--rule)}.question{margin:0 0 var(--step);font-family:var(--display);font-size:1.05rem}.choices ul{gap:var(--step);margin:0;padding:0;list-style:none;display:grid}.choices button{text-align:left;width:100%;font-family:var(--body);color:var(--ink);background:var(--paper);border:1px solid var(--rule-firm);cursor:pointer;border-radius:0;padding:.5rem .7rem;font-size:14px;display:block}.choices button:hover:enabled{border-color:var(--cobalt)}.choices button:disabled{color:var(--quiet);cursor:not-allowed}.choices .detail{color:var(--quiet);font-size:12px;display:block}.composer{padding:calc(var(--step) * 1.5) calc(var(--step) * 2.5) calc(var(--step) * 2);border-top:1px solid var(--rule)}.composer textarea{resize:vertical;width:100%;font-family:var(--body);color:var(--ink);background:var(--paper);border:1px solid var(--rule-firm);border-radius:0;padding:.55rem .65rem;font-size:14px;display:block}.composer textarea:disabled{color:var(--quiet);background:color-mix(in oklab, var(--paper) 70%, var(--sheet));cursor:not-allowed}.composer-foot{justify-content:space-between;align-items:center;gap:var(--step);margin-top:var(--step);display:flex}.agent-status{align-items:center;gap:calc(var(--step) * .5);font-family:var(--utility);letter-spacing:.14em;text-transform:uppercase;color:var(--quiet);margin:0;font-size:10px;display:flex}.agent-spinner{border:1px solid;border-right-color:#0000;border-radius:50%;flex:none;width:.75rem;height:.75rem;animation:.7s linear infinite agent-spinner-turn}@keyframes agent-spinner-turn{to{transform:rotate(1turn)}}.composer button{font-family:var(--utility);letter-spacing:.08em;color:var(--paper);background:var(--cobalt);border:1px solid var(--cobalt);cursor:pointer;border-radius:0;padding:.45rem 1.1rem;font-size:12px}.composer button:disabled{color:var(--quiet);border-color:var(--rule-firm);cursor:not-allowed;background:0 0}.subject-chip{justify-content:space-between;align-items:center;gap:var(--step);margin-bottom:calc(var(--step) * .75);padding:calc(var(--step) * .5) calc(var(--step) * .75);border:1px solid var(--cobalt);color:var(--cobalt);border-radius:999px;display:flex}.subject-chip span{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.subject-chip button{min-height:24px;padding:0 calc(var(--step) * .5);color:inherit;background:0 0;border:0;flex:none}.filter-grid{gap:calc(var(--step) * 1.5);grid-template-columns:repeat(auto-fill,minmax(200px,1fr));display:grid}.filter-field{gap:calc(var(--step) * .75);flex-direction:column;display:flex}.filter-field>label,.filter-field legend{font-family:var(--utility);letter-spacing:.08em;text-transform:uppercase;color:var(--quiet);font-size:11px}.tag-input{align-items:center;gap:var(--step);padding:calc(var(--step) * .5);border:1px solid var(--rule-firm);background:var(--paper);border-radius:2px;flex-wrap:wrap;display:flex}.tag-input input{min-width:80px;font:inherit;background:0 0;border:none;flex:1;font-size:15px}.tag-input input:focus{outline:none}.tag-chip{background:var(--cobalt);color:var(--paper);border-radius:2px;align-items:center;gap:.4rem;padding:.2rem .6rem;font-size:13px;display:inline-flex}.tag-chip button{color:currentColor;cursor:pointer;background:0 0;border:none;min-width:0;min-height:0;margin:0;padding:0;font-size:16px;line-height:1;display:inline}.tag-chip button:hover{opacity:.8}.filter-field select{font-family:var(--body);color:var(--ink);background:var(--paper);border:1px solid var(--rule-firm);cursor:pointer;border-radius:0;padding:.4rem .7rem;font-size:15px}.filter-field select:hover{border-color:var(--cobalt)}.filter-checkbox-group{border:none;margin:0;padding:0}.filter-checkbox-option{cursor:pointer;align-items:center;gap:.5rem;padding:.4rem 0;font-size:15px;display:flex}.filter-checkbox-option input{cursor:pointer}.bottom-panel{border-top:1px solid var(--rule-firm);background:var(--sheet);flex-direction:column;min-height:0;display:flex}.bottom-panel-tabs{align-items:stretch;gap:0;min-height:32px;display:flex}.bottom-panel-tab{min-height:32px;font-family:var(--utility);letter-spacing:.08em;color:var(--quiet);border:none;border-right:1px solid var(--rule);cursor:pointer;background:0 0;border-bottom:2px solid #0000;padding:0 .9rem;font-size:12px}.bottom-panel-tab:hover{color:var(--ink)}.bottom-panel-tab[aria-selected=true]{color:var(--ink);background:var(--paper);border-bottom-color:var(--cobalt)}.bottom-panel-summary{font-family:var(--utility);color:var(--quiet);align-items:center;padding-inline:.9rem;font-size:12px;display:flex}.bottom-panel-collapse{min-width:32px;min-height:32px;color:var(--quiet);border:none;border-left:1px solid var(--rule);cursor:pointer;background:0 0;margin-left:auto;font-size:12px}.bottom-panel-collapse:hover{color:var(--ink)}.bottom-panel-body{border-top:1px solid var(--rule);background:var(--paper);min-height:0;max-height:42dvh;overflow:auto}.query-tab{gap:calc(var(--step) * 2);padding:calc(var(--step) * 1.5);grid-template-columns:minmax(0,2fr) minmax(0,1fr) minmax(0,1fr);display:grid}.query-tab>div{min-width:0}.query-tab h3{margin:0 0 var(--step);font-family:var(--utility);letter-spacing:.08em;text-transform:uppercase;color:var(--quiet);font-size:11px;font-weight:400}.query-tab-fields{gap:calc(var(--step) * 1.5);flex-direction:column;display:flex}.query-tab-outcome>h3:not(:first-child){margin-top:calc(var(--step) * 2)}.query-match-count{font-family:var(--display);margin:0;font-size:15px}.query-match-count strong{font-size:28px;font-weight:400;line-height:1}.query-outcome-stale,.query-outcome-note{margin:var(--step) 0 0;color:var(--quiet);font-size:13px}.query-outcome-empty{margin:var(--step) 0 0;color:var(--ochre);font-size:13px}.query-exclusions{margin:0;padding:0;list-style:none}.query-exclusions>li+li{margin-top:var(--step)}.query-exclusions ul{margin:calc(var(--step) * .5) 0 0;padding-left:calc(var(--step) * 2);color:var(--quiet);font-size:13px;list-style:none}.query-exclusion-facet{font-family:var(--utility);letter-spacing:.08em;text-transform:uppercase;color:var(--ink);font-size:11px}.query-exclusion-count{font-family:var(--utility);color:var(--quiet);font-size:11px}.query-exclusion-more{font-style:italic}.query-tab-document{flex-direction:column;min-height:0;display:flex}.query-document{min-height:0;max-height:22dvh;padding:var(--step);border:1px solid var(--rule);background:var(--sheet);font-family:var(--utility);flex:1;margin:0;font-size:12px;line-height:1.5;overflow:auto}.query-tab-actions{align-items:center;gap:var(--step);margin-top:var(--step);display:flex}.query-tab-actions button{min-height:32px;font-family:var(--utility);letter-spacing:.08em;color:var(--paper);background:var(--cobalt);border:1px solid var(--cobalt);cursor:pointer;border-radius:0;padding:0 .7rem;font-size:12px}.query-tab-actions button:disabled{color:var(--quiet);background:var(--paper);border-color:var(--rule-firm);cursor:default}.query-stage-status{color:var(--quiet);font-size:13px}@media (max-width:899px){.command-strip{gap:calc(var(--step) * .5);padding-inline:var(--step)}.command-identity,.command-actions{gap:calc(var(--step) * .5)}.workspace{grid-template-rows:auto minmax(0,1fr) auto;grid-template-columns:minmax(0,1fr);min-height:0}.view-tree{border-right:0;border-bottom:1px solid var(--rule);max-height:34dvh}.conversation-separator{display:none}.query-tab{grid-template-columns:minmax(0,1fr)}.bottom-panel-body{max-height:30dvh}.section-stack{border-top:1px solid var(--rule);border-left:0;max-height:56dvh}.conversation-reopen{border-left:0;border-top:1px solid var(--rule);flex-direction:row;justify-content:center;width:auto;height:auto;min-height:24px;padding:0}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.save-view-control{display:contents}.save-view-toggle{padding:0 calc(var(--step) * .75rem);border:1px solid var(--rule-firm);background:var(--paper);height:32px;color:var(--ink);cursor:pointer;border-radius:2px;font-size:13px}.save-view-toggle:hover:not(:disabled){border-color:var(--rule);background:color-mix(in oklab, var(--paper) 90%, var(--ink))}.save-view-toggle:disabled{opacity:.5;cursor:not-allowed}.save-view-control{z-index:20;background:color-mix(in oklab, var(--ink) 22%, transparent);place-items:center;display:grid;position:fixed;inset:0}.save-view-panel{background:var(--sheet);border:1px solid var(--rule-firm);border-radius:4px;box-shadow:0 8px 28px #1323392e}.save-view-panel-body{padding:calc(var(--step) * 1.5);min-width:300px}.save-view-form{gap:calc(var(--step) * 1);flex-direction:column;display:flex}.save-view-form div{gap:calc(var(--step) * .5);flex-direction:column;display:flex}.save-view-form label{color:var(--ink);font-size:12px;font-weight:500}.save-view-form input,.save-view-form textarea{padding:calc(var(--step) * .5);border:1px solid var(--rule);font-family:var(--body);border-radius:2px;font-size:13px}.save-view-actions{gap:calc(var(--step) * 1);margin-top:calc(var(--step) * .5);display:flex}.save-view-actions button{padding:calc(var(--step) * .5) calc(var(--step) * 1);border:1px solid var(--rule-firm);background:var(--paper);color:var(--ink);cursor:pointer;border-radius:2px;flex:1;font-size:13px}.save-view-actions button:hover:not(:disabled){background:color-mix(in oklab, var(--paper) 85%, var(--ink))}.save-view-notice{align-items:center;gap:calc(var(--step) * .75);padding:calc(var(--step) * .75) calc(var(--step) * 1.5);background:color-mix(in oklab, var(--eucalyptus) 15%, var(--sheet));border:1px solid var(--eucalyptus);color:var(--ink);border-radius:4px;font-size:13px;display:flex}.save-view-notice button{padding:0 calc(var(--step) * .5);color:var(--eucalyptus);cursor:pointer;background:0 0;border:none;margin-left:auto;font-size:11px;text-decoration:underline}.confirm-dialog-backdrop{z-index:1000;background:#0006;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.confirm-dialog{background:var(--sheet);border:1px solid var(--rule-firm);padding:calc(var(--step) * 2);text-align:center;border-radius:8px;max-width:400px;box-shadow:0 8px 24px #00000029}.confirm-dialog h2{margin:0 0 calc(var(--step) * 1) 0;font-size:16px}.confirm-dialog p{margin:0 0 calc(var(--step) * 1.5) 0;color:var(--quiet);font-size:13px}.confirm-dialog-actions{gap:calc(var(--step) * 1);display:flex}.confirm-dialog-actions button{padding:calc(var(--step) * .75);border:1px solid var(--rule-firm);background:var(--paper);color:var(--ink);cursor:pointer;border-radius:2px;flex:1;font-size:13px}.confirm-dialog-actions button:hover{background:color-mix(in oklab, var(--paper) 85%, var(--ink))}.changeset-tray{padding:calc(var(--step) * 1.5) calc(var(--step) * 2.5);border-top:1px solid var(--rule);background:color-mix(in srgb, var(--sheet) 92%, var(--cobalt) 8%)}.changeset-heading-row{justify-content:space-between;align-items:baseline;gap:var(--step);display:flex}.changeset-heading-row h2{font-family:var(--display);margin:0;font-size:15px}.changeset-discard-all{color:var(--eucalyptus);cursor:pointer;background:0 0;border:none;padding:0;font-size:12px;text-decoration:underline}.changeset-history-controls{align-items:baseline;gap:var(--step);display:flex}.changeset-undo,.changeset-redo{color:var(--eucalyptus);cursor:pointer;background:0 0;border:none;padding:0;font-size:12px;text-decoration:underline}.changeset-undo:disabled,.changeset-redo:disabled{color:var(--quiet);cursor:not-allowed;text-decoration:none}.changeset-rows{margin:var(--step) 0 0;gap:calc(var(--step) * .75);padding:0;list-style:none;display:grid}.changeset-row{padding:calc(var(--step) * .75);border:1px solid var(--rule-firm);background:var(--paper);border-radius:2px}.changeset-row.conflicted{border-color:var(--ochre);background:color-mix(in oklab, var(--ochre) 6%, var(--paper))}.changeset-row-conflict{margin:calc(var(--step) * .5) 0 0;font-family:var(--utility);color:var(--ochre);font-size:11px}.changeset-row-line{justify-content:space-between;align-items:center;gap:var(--step);display:flex}.changeset-row-label{overflow-wrap:anywhere;min-width:0;font-family:var(--utility);color:var(--ink);font-size:12px}.changeset-row-discard{color:var(--eucalyptus);cursor:pointer;background:0 0;border:none;flex:none;padding:0;font-size:11px;text-decoration:underline}.changeset-row-diagnostics,.changeset-batch-diagnostics{margin:calc(var(--step) * .5) 0 0;font-family:var(--utility);color:var(--failure);padding-left:1.1rem;font-size:11px}.changeset-batch-diagnostics{margin:0 0 var(--step)}.changeset-row-diagnostics .code,.changeset-batch-diagnostics .code{font-weight:700}.changeset-row-diagnostics .where,.changeset-batch-diagnostics .where{color:var(--quiet);margin-left:.4rem}.changeset-actions{margin-top:var(--step)}.changeset-commit{width:100%;padding:calc(var(--step) * .75);border:1px solid var(--cobalt);background:var(--cobalt);color:var(--paper);cursor:pointer;border-radius:2px;font-size:13px}.changeset-commit:disabled{border-color:var(--rule-firm);color:var(--quiet);cursor:not-allowed;background:0 0}.changeset-notice{margin-top:var(--step);padding:calc(var(--step) * .75) calc(var(--step) * 1);border:1px solid var(--eucalyptus);background:color-mix(in oklab, var(--eucalyptus) 15%, var(--sheet));color:var(--ink);border-radius:4px;font-size:12px}.changeset-notice p{margin:0 0 calc(var(--step) * .25);font-weight:700}.changeset-notice ul{font-family:var(--utility);margin:0;padding-left:1.1rem}.layout-notice-pill{inset:var(--step) var(--step) auto auto;z-index:4;align-items:center;gap:var(--step);max-width:calc(100% - var(--step) * 2);border:1px solid var(--rule-firm);background:var(--sheet);font-family:var(--utility);color:var(--ink);border-radius:999px;padding:.35rem .7rem;font-size:12px;display:flex;position:absolute}.layout-notice-pill span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.subject-form{gap:calc(var(--step) * 1.25);margin:calc(var(--step) * 1) 0;flex-direction:column;display:flex}.subject-form-field{grid-template-columns:var(--form-label-width) minmax(0, 1fr);align-items:center;gap:calc(var(--step) * .75);display:grid}.subject-form-field.subject-form-list{align-items:start}.subject-form-list>.subject-form-label{padding-top:.35rem}.subject-form-list-body{align-items:flex-start;gap:calc(var(--step) * .35);flex-direction:column;min-width:0;display:flex}.subject-form-label{font-family:var(--utility);letter-spacing:.02em;text-transform:uppercase;color:var(--quiet);white-space:nowrap;text-overflow:ellipsis;font-size:11px;overflow:hidden}.subject-form-field input[type=text],.subject-form-field select{border:1px solid var(--rule-firm);border-radius:calc(var(--step) * .5);background:var(--paper);font-family:var(--body);color:var(--ink);padding:.35rem .5rem;font-size:13px}.subject-fact-value{font-family:var(--body);color:var(--ink);overflow-wrap:anywhere;font-size:13px}.subject-form-list{border-top:1px solid var(--rule);padding-top:calc(var(--step) * .75)}.subject-form-row{align-items:flex-start;gap:calc(var(--step) * .5);margin-bottom:calc(var(--step) * .5);display:flex}.subject-form-row-body{align-items:center;gap:calc(var(--step) * .5);flex-wrap:wrap;flex:1;display:flex}.subject-form-toggle{align-items:center;gap:calc(var(--step) * .35);font-family:var(--utility);color:var(--quiet);font-size:12px;display:flex}.subject-form-row-add,.subject-form-row-remove{border:1px solid var(--rule-firm);border-radius:calc(var(--step) * .5);background:var(--sheet);font-family:var(--utility);cursor:pointer;padding:.25rem .6rem;font-size:12px}.context-menu{z-index:1100;min-width:184px;max-width:280px;max-height:70vh;padding:calc(var(--step) * .5) 0;background:var(--sheet);border:1px solid var(--rule-firm);border-radius:2px;position:fixed;overflow-y:auto;box-shadow:0 8px 24px #00000029}.context-menu:focus{outline:none}.context-menu ul{margin:0;padding:0;list-style:none}.context-menu-group+.context-menu-group{margin-top:calc(var(--step) * .5);padding-top:calc(var(--step) * .5);border-top:1px solid var(--rule)}.context-menu-destructive{margin-top:calc(var(--step) * .5);padding-top:calc(var(--step) * .5);border-top:1px solid var(--rule-firm)}.context-menu-heading{padding:calc(var(--step) * .5) calc(var(--step) * 1.5);font-family:var(--utility);letter-spacing:.08em;text-transform:uppercase;color:var(--quiet);margin:0;font-size:10px}.context-menu-item{align-items:center;gap:calc(var(--step) * .75);width:100%;padding:.3rem calc(var(--step) * 1.5);font:inherit;text-align:left;color:var(--ink);cursor:pointer;background:0 0;border:0;border-radius:0;font-size:13px;display:flex}.context-menu-item:hover{background:color-mix(in oklab, var(--cobalt) 10%, transparent)}.context-menu-destructive .context-menu-item{color:var(--failure)}.context-menu-destructive .context-menu-item:hover{background:color-mix(in oklab, var(--failure) 12%, transparent)}.context-menu-tick{width:8px;font-family:var(--utility);color:var(--cobalt);flex:none;font-size:12px}.context-menu-label{white-space:nowrap;text-overflow:ellipsis;flex:1;overflow:hidden}.changeset-row-scope{font-family:var(--utility);letter-spacing:.08em;text-transform:uppercase;padding:0 calc(var(--step) * .5);border:1px solid var(--rule);color:var(--quiet);border-radius:2px;flex:none;font-size:10px}.changeset-scope-view{color:var(--cobalt);border-color:color-mix(in oklab, var(--cobalt) 40%, transparent)}.prompt-dialog-form{gap:calc(var(--step) * .75);text-align:left;flex-direction:column;display:flex}.prompt-dialog-form label{font-family:var(--utility);letter-spacing:.08em;text-transform:uppercase;color:var(--quiet);font-size:10px}.prompt-dialog-form input{padding:calc(var(--step) * .75);font:inherit;color:var(--ink);background:var(--paper);border:1px solid var(--rule-firm);border-radius:2px;font-size:13px}.prompt-dialog-form input:focus{border-color:var(--cobalt)}.prompt-dialog-form .confirm-dialog-actions{margin-top:calc(var(--step) * .5)}.open-questions{gap:var(--step);padding:var(--step) 0;flex-direction:column;display:flex}.open-questions-scope,.open-questions-catalogue{color:var(--quiet);margin:0;font-size:.78rem}.question-list{gap:calc(var(--step) * .75);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.question-row{gap:calc(var(--step) * .25);flex-direction:column;display:flex}.question-text{font-size:.85rem;line-height:1.35}.question-meta{gap:var(--step);align-items:baseline;display:flex}.question-authority{letter-spacing:.04em;text-transform:uppercase;color:var(--quiet);border:1px solid var(--quiet);padding:0 calc(var(--step) * .75);border-radius:999px;font-size:.68rem;font-weight:600}.question-since{color:var(--quiet);font-size:.72rem}.saved-layout-pill{inset:auto auto var(--step) var(--step);z-index:4;align-items:center;gap:var(--step);max-width:calc(100% - var(--step) * 2);border:1px solid var(--rule-firm);background:var(--sheet);font-family:var(--utility);color:var(--ink);border-radius:999px;padding:.35rem .7rem;font-size:12px;display:flex;position:absolute}.saved-layout-pill span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.saved-layout-pill button{color:var(--cobalt);font-family:inherit;font-size:inherit;cursor:pointer;background:0 0;border:none;flex:none;padding:0;text-decoration:underline}.saved-layout-pill button:hover{color:var(--ink)}.zoom-controls{inset:auto var(--step) var(--step) auto;z-index:4;border:1px solid var(--rule-firm);border-radius:calc(var(--step) * .75);background:var(--sheet);align-items:stretch;display:flex;position:absolute;overflow:hidden}.zoom-controls button{color:var(--ink);font-family:var(--utility);cursor:pointer;background:0 0;border:none;padding:.3rem .6rem;font-size:13px;line-height:1}.zoom-controls button+button{border-left:1px solid var(--rule)}.zoom-controls button:hover{background:var(--paper)}.tree-row-staged .tree-label{font-style:italic}.tree-row-staged-delete .tree-label{text-decoration:line-through}.tree-staged{font-family:var(--utility);letter-spacing:.06em;text-transform:uppercase;color:var(--quiet);border:1px solid var(--rule-firm);border-radius:2px;flex:none;padding:0 .3em;font-size:9px}.tree-row-active .tree-staged{color:inherit;opacity:.75;border-color:currentColor}
|
|
1
|
+
:root{--paper:#e8eef0;--ink:#182228;--eucalyptus:#416f65;--ochre:#8c4d18;--cobalt:#2457a6;--failure:#a3403a;--sheet:color-mix(in oklab, var(--paper) 55%, white);--rule:color-mix(in oklab, var(--ink) 16%, transparent);--rule-firm:color-mix(in oklab, var(--ink) 34%, transparent);--quiet:color-mix(in oklab, var(--ink) 62%, var(--paper));--display:"Iowan Old Style", "Palatino Linotype", Palatino, "Book Antiqua", Georgia, serif;--body:"Avenir Next", Avenir, -apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, sans-serif;--utility:ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace;--step:.5rem;--rail-width:264px;--form-label-width:6rem;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}*{box-sizing:border-box}html,body{margin:0;padding:0}body{background:var(--paper);color:var(--ink);font-family:var(--body);-webkit-font-smoothing:antialiased;font-size:15px;line-height:1.5}:focus-visible{outline:3px solid var(--cobalt);outline-offset:2px}.offscreen{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.visual-shell{background:var(--paper);min-width:0;height:100dvh;color:var(--ink);grid-template-rows:auto minmax(0,1fr);display:grid;overflow:hidden}.command-strip{z-index:10;justify-content:space-between;align-items:center;gap:calc(var(--step) * 2);min-height:48px;padding:calc(var(--step) * .75) calc(var(--step) * 2);border-bottom:1px solid var(--rule);background:var(--sheet);flex-wrap:wrap;display:flex;position:relative}.command-identity,.command-actions{align-items:center;gap:var(--step);min-width:0;display:flex}.session-description{min-width:0;color:var(--quiet);text-overflow:ellipsis;white-space:nowrap;flex:0 auto;margin:0;font-size:13px;overflow:hidden}.command-identity{flex:10rem}.command-actions{flex-wrap:wrap;flex:0 auto;justify-content:flex-end}.command-identity h1{min-width:8ch;font-family:var(--display);text-overflow:ellipsis;white-space:nowrap;margin:0;font-size:15px;line-height:1.2;overflow:hidden}.command-actions select,.command-actions button,.command-actions .quick-filter{min-height:32px;font-family:var(--utility);letter-spacing:.08em;color:var(--ink);background:var(--paper);border:1px solid var(--rule-firm);cursor:pointer;border-radius:0;padding:0 .7rem;font-size:12px}.command-actions select{text-overflow:ellipsis;max-width:12rem}.command-actions .quick-filter{cursor:text;width:160px}.command-actions .quick-filter::placeholder{color:var(--quiet)}.command-actions select{padding-right:.35rem}.command-actions select:hover:enabled,.command-actions button:hover:enabled,.command-actions .quick-filter:hover,.command-actions .quick-filter:focus{border-color:var(--cobalt)}.command-actions select:disabled,.command-actions button:disabled{color:var(--quiet);border-color:var(--rule);cursor:not-allowed;background:0 0}.command-actions button[aria-expanded=true]{color:var(--paper);background:var(--cobalt);border-color:var(--cobalt)}.command-actions .end-session:hover:enabled{color:var(--paper);background:var(--failure);border-color:var(--failure)}.connection-state{font-family:var(--utility);letter-spacing:.14em;text-transform:uppercase;color:var(--quiet);flex:none;font-size:11px}.end-transition-status{max-width:28rem;font-family:var(--utility);color:var(--quiet);font-size:11px;line-height:1.25}.end-transition-status:empty{display:none}.direction-notice{max-width:16rem;font-family:var(--utility);color:var(--quiet);font-size:11px;line-height:1.25}.direction-notice:empty{display:none}.authority{white-space:nowrap;font-family:var(--utility);letter-spacing:.14em;text-transform:uppercase;color:var(--eucalyptus);flex:none;margin:0;font-size:11px}.authority:before{content:"";vertical-align:0;background:currentColor;width:.5rem;height:.5rem;margin-right:.5rem;display:inline-block}.beta-badge{font-family:var(--utility);letter-spacing:.1em;text-transform:uppercase;color:var(--ochre);border:1px solid var(--ochre);flex:none;padding:.05rem .4rem;font-size:10px;font-weight:600}.session-details{align-items:flex-start;gap:calc(var(--step) * 2);padding:var(--step) calc(var(--step) * 2) calc(var(--step) * 1.5);border-bottom:1px solid var(--rule);background:var(--sheet);display:flex;position:absolute;top:100%;left:0;right:0;box-shadow:0 12px 28px #1323391f}.session-details[hidden]{display:none}.session-details p{max-width:90ch;color:var(--quiet);margin:0}.details-close{min-height:28px;font-family:var(--utility);letter-spacing:.08em;color:var(--ink);background:var(--paper);border:1px solid var(--rule-firm);cursor:pointer;border-radius:0;flex:none;margin-left:auto;padding:0 .6rem;font-size:11px}.details-close:hover{border-color:var(--cobalt)}.attention-count{background:var(--cobalt);color:#fff;text-align:center;border-radius:999px;min-width:1.25rem;padding:0 .35rem;font-size:11px}.workspace{grid-template-columns:var(--rail-width) minmax(0, 1fr) auto var(--conversation-width);min-width:0;min-height:0;display:grid;overflow:hidden}.workspace[data-rail=hidden]{grid-template-columns:22px minmax(0, 1fr) auto var(--conversation-width)}.rail-reopen{align-items:center;gap:var(--step);width:22px;height:100%;padding:calc(var(--step) * 1.5) 0;border:none;border-right:1px solid var(--rule);background:var(--sheet);color:var(--quiet);cursor:pointer;flex-direction:column;font-size:12px;display:flex}.rail-reopen:hover,.rail-reopen:focus-visible{color:var(--cobalt)}.rail-hide{min-height:1.75rem;padding:0 calc(var(--step) * .75);color:var(--quiet);cursor:pointer;background:0 0;border:none;flex:none;font-size:12px;line-height:1}.rail-hide:hover,.rail-hide:focus-visible{color:var(--cobalt)}.view-tree{border-right:1px solid var(--rule);background:var(--sheet);grid-template-rows:auto minmax(0,1fr);min-width:0;min-height:0;display:grid}.view-tree-head{align-items:center;gap:calc(var(--step) * 1);padding:var(--step) calc(var(--step) * 1.5);border-bottom:1px solid var(--rule);display:flex}.view-tree-filter{min-width:0;min-height:1.75rem;font-family:var(--utility);color:var(--ink);background:var(--paper);border:1px solid var(--rule-firm);border-radius:0;flex:1;padding:0 .5rem;font-size:12px}.view-tree-new{width:1.75rem;height:1.75rem;color:var(--ink);background:var(--paper);border:1px solid var(--rule-firm);cursor:pointer;border-radius:0;flex:none;place-items:center;padding:0;display:grid}.view-tree-new:hover{border-color:var(--cobalt);color:var(--cobalt)}.view-tree-body{padding:var(--step) 0 calc(var(--step) * 2);overflow:auto}.tree-list{margin:0;padding:0;list-style:none}.tree-row{align-items:center;gap:calc(var(--step) * .75);width:100%;padding:.18rem calc(var(--step) * 1.5);font:inherit;text-align:left;color:var(--ink);cursor:pointer;background:0 0;border:0;border-radius:0;font-size:13px;display:flex}.tree-row:hover{background:color-mix(in oklab, var(--cobalt) 10%, transparent)}.tree-branch{font-family:var(--utility);color:var(--quiet);font-size:12px}.tree-depth-0{letter-spacing:.08em;text-transform:uppercase;color:var(--quiet)}.tree-depth-1{padding-left:calc(var(--step) * 3)}.tree-depth-2{padding-left:calc(var(--step) * 5.5)}.tree-row-active,.tree-row-active:hover{background:var(--cobalt);color:var(--paper)}.tree-row-quiet{color:var(--quiet)}.tree-label{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.subject-slots{margin-top:12px}.subject-slots-heading{font-family:var(--utility);text-transform:uppercase;letter-spacing:.06em;color:var(--quiet);align-items:baseline;gap:6px;margin:0 0 4px;font-size:11px;display:flex}.subject-slots-list{grid-template-columns:auto 1fr;gap:2px 10px;margin:0;font-size:12px;display:grid}.subject-slot-row{display:contents}.subject-slot-name{font-family:var(--utility);color:var(--quiet)}.subject-slot-value{margin:0}.subject-slot-vacant{color:var(--quiet);font-style:italic}.tree-fold{color:var(--quiet);flex:none;font-size:9px;line-height:1}.tree-count{font-family:var(--utility);color:var(--quiet);font-variant-numeric:tabular-nums;flex:none;font-size:10px}.tree-row>svg{opacity:.4}.tree-row-active>svg{opacity:1}.tree-row-active .tree-count{color:inherit;opacity:.75}.tree-swatch{background:var(--paper);border:1px solid var(--rule-firm);flex:none;width:.625rem;height:.625rem}.tree-empty{padding:.3rem calc(var(--step) * 3);color:var(--quiet);font-size:12px}.diagram-workspace{background:var(--paper);grid-template-rows:minmax(0,1fr) auto;min-width:0;min-height:0;display:grid;position:relative;overflow:hidden}.canvas-controls{inset:var(--step) var(--step) auto auto;z-index:5;align-items:center;gap:var(--step);display:flex;position:absolute}.canvas{width:100%;min-width:0;height:100%;min-height:0;position:relative}.diagram-workspace>.faults{z-index:4;max-height:50%;position:absolute;inset:auto 0 0;overflow:auto}.diagram-workspace>.filter-pill{inset:var(--step) auto auto var(--step);z-index:4;align-items:center;gap:var(--step);max-width:min(52ch, calc(100% - var(--step) * 2));border:1px solid var(--rule-firm);background:var(--sheet);font-family:var(--utility);color:var(--ink);border-radius:999px;padding:.35rem .7rem;font-size:12px;display:flex;position:absolute}.filter-pill span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.filter-pill code{font-weight:700}.filter-pill button{color:var(--cobalt);font-family:inherit;font-size:inherit;cursor:pointer;background:0 0;border:none;flex:none;padding:0;text-decoration:underline}.filter-pill button:hover{color:var(--ink)}.canvas>.filter-empty-pill{z-index:4;align-items:center;gap:var(--step);max-width:min(52ch, calc(100% - var(--step) * 2));border:1px solid var(--rule-firm);background:var(--sheet);font-family:var(--utility);color:var(--ink);border-radius:999px;padding:.35rem .7rem;font-size:12px;display:flex;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.filter-empty-pill span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.filter-empty-pill code{font-weight:700}.filter-empty-pill button{color:var(--cobalt);font-family:inherit;font-size:inherit;cursor:pointer;background:0 0;border:none;flex:none;padding:0;text-decoration:underline}.filter-empty-pill button:hover{color:var(--ink)}.conversation-separator{z-index:3;cursor:col-resize;touch-action:none;width:10px;height:100%;position:relative}.conversation-separator:before{background:var(--rule);content:"";width:1px;position:absolute;inset:0 auto 0 4px}.conversation-separator:hover:before,.conversation-separator:focus-visible:before{background:var(--cobalt);width:2px}.waiting{padding:calc(var(--step) * 4);font-family:var(--utility);letter-spacing:.1em;text-transform:uppercase;color:var(--quiet);margin:0;font-size:12px}.section-stack{border-left:1px solid var(--rule);background:var(--sheet);flex-direction:column;min-width:0;min-height:0;display:flex;overflow:hidden}.stack-rim{border-bottom:1px solid var(--rule);flex:none;justify-content:flex-end;display:flex}.conversation-hide{min-height:22px;padding:0 calc(var(--step) * 1.5);color:var(--quiet);cursor:pointer;background:0 0;border:none;font-size:12px;line-height:1}.conversation-hide:hover,.conversation-hide:focus-visible{color:var(--cobalt)}.conversation-reopen{align-items:center;gap:var(--step);width:22px;height:100%;padding:calc(var(--step) * 1.5) 0;border:none;border-left:1px solid var(--rule);background:var(--sheet);color:var(--quiet);cursor:pointer;flex-direction:column;font-size:12px;display:flex}.conversation-reopen:hover,.conversation-reopen:focus-visible{color:var(--cobalt)}.attention-choice{border:1px solid var(--cobalt);min-width:1.25rem;color:var(--cobalt);text-align:center;border-radius:999px;padding:0 .35rem;font-size:11px}.stack-section{grid-template-rows:auto minmax(0,1fr);min-height:0;display:grid;overflow:hidden}.stack-section-properties{flex:auto}.stack-section-changes{flex:0 0 var(--changes-height,200px)}.stack-section-chat{flex:0 0 var(--chat-height,300px)}.section-stack:not(:has(>.stack-section-properties))>.stack-section:nth-child(1 of .stack-section:not(.stack-section-palette)){flex:auto}.section-stack>.stack-section-palette:only-child{flex:auto;max-height:none}.stack-section-palette{flex:0 auto;max-height:45%}.stack-section-questions{min-height:calc(var(--step) * 16);flex:1 1 0;max-height:50%}:is(.stack-section-questions:has(.section-empty),.stack-section-questions:has(>.section-body[hidden]),.stack-section-changes:has(>.section-body:empty),.stack-section-changes:has(>.section-body>.section-empty)){flex:none;min-height:0}.kind-palette{padding:calc(var(--step) * .5) 0 calc(var(--step) * .75)}.kind-palette-layer-name{width:100%;padding:calc(var(--step) * .75) calc(var(--step) * 1.5) calc(var(--step) * .25);text-align:left;cursor:pointer;font-family:var(--utility);letter-spacing:.08em;color:var(--quiet);background:0 0;border:none;margin:0;font-size:11px;display:block}.kind-palette-caret{width:1em;display:inline-block}.kind-palette-rows{margin:0;padding:0;list-style:none}.kind-palette-row{align-items:center;gap:calc(var(--step) * .75);width:100%;padding:.3rem calc(var(--step) * 1.5);font:inherit;text-align:left;color:var(--ink);cursor:grab;background:0 0;border:0;border-radius:0;font-size:13px;display:flex}.kind-palette-row:hover,.kind-palette-row:focus-visible{background:color-mix(in oklab, var(--cobalt) 10%, transparent)}.kind-palette-row img{flex:none}.kind-palette-stack{border:1px solid var(--ink);background:var(--paper);border-radius:2px;flex:none;width:14px;height:14px;position:relative}.kind-palette-stack:before{content:"";border:1px solid color-mix(in oklab, var(--ink) 45%, transparent);background:var(--paper);z-index:-1;border-radius:2px;width:100%;height:100%;position:absolute;top:-3px;left:3px}.kind-palette-slots{color:color-mix(in oklab, var(--ink) 60%, transparent);margin-left:auto;font-size:11px}.instance-draft-slots{margin:0;padding:0;list-style:none}.instance-draft-slot{align-items:center;gap:calc(var(--step) * .75);margin-bottom:calc(var(--step) * .75);grid-template-columns:10rem 1fr;display:grid}.instance-draft-slot>label{align-items:baseline;gap:calc(var(--step) * .5);display:flex}.instance-draft-slot-name{font-weight:600}.instance-draft-required,.instance-draft-context{border-radius:2px;padding:0 .35em;font-size:11px}.instance-draft-required{color:var(--failure);border:1px solid color-mix(in oklab, var(--failure) 40%, transparent)}.instance-draft-context{color:color-mix(in oklab, var(--ink) 65%, transparent);border:1px solid color-mix(in oklab, var(--ink) 25%, transparent)}.instance-draft-new{gap:calc(var(--step) * .5);grid-column:2;display:flex}.instance-draft-wiring h4{margin:calc(var(--step) * 1.5) 0 calc(var(--step) * .5);color:color-mix(in oklab, var(--ink) 65%, transparent);font-size:12px}.kind-palette-bound-name{padding-left:calc(var(--step) * 2.5);color:color-mix(in oklab, var(--ink) 65%, transparent);font-size:12px}.section-head{align-items:center;gap:var(--step);min-height:32px;padding-right:calc(var(--step) * 1.5);border-bottom:1px solid var(--rule);font-size:inherit;margin:0;font-weight:400;display:flex}.section-toggle{align-items:center;gap:calc(var(--step) * .75);min-height:32px;padding:0 calc(var(--step) * 1.5);color:var(--ink);cursor:pointer;font-family:var(--utility);letter-spacing:.08em;background:0 0;border:none;font-size:12px;display:flex}.section-chevron{color:var(--quiet);font-size:10px}.section-meta{font-family:var(--utility);color:var(--quiet);text-overflow:ellipsis;white-space:nowrap;margin-left:auto;font-size:11px;overflow:hidden}.section-body{min-height:0;overflow:auto}.section-body[hidden]{display:none}.section-empty{padding:calc(var(--step) * 1.5);color:var(--quiet);margin:0;font-size:13px}.section-splitter{cursor:row-resize;background:0 0;border:none;flex:0 0 7px;height:7px;position:relative}.section-splitter:after{content:"";background:var(--rule);position:absolute;inset:3px 0}.section-splitter:hover:after,.section-splitter:focus-visible:after{background:var(--cobalt);inset:2px 0}.section-splitter:focus-visible{outline:none}.talk{background:var(--sheet);grid-template-rows:minmax(0,1fr) auto;grid-template-columns:minmax(0,1fr);min-width:0;min-height:0;display:grid;overflow:hidden}.session-foot{align-items:center;gap:var(--step);padding:0 calc(var(--step) * 1.5) calc(var(--step) * 1.5);display:flex}.session-foot .end-session{margin-left:auto}.talk[hidden]{display:none}.conversation-scroll{min-width:0;min-height:0;overflow:auto}.subject-inspector{min-width:0;padding:calc(var(--step) * 1.5);border-bottom:1px solid var(--rule);background:color-mix(in srgb, var(--sheet) 92%, var(--cobalt) 8%)}.subject-heading-row{justify-content:space-between;align-items:flex-start;gap:var(--step);min-width:0;display:flex}.subject-heading-row>:first-child,.subject-heading-row h2{min-width:0}.subject-type{margin:0 0 calc(var(--step) * .25);color:var(--quiet);letter-spacing:.12em;text-transform:uppercase;font-size:10px;font-weight:700}.subject-heading-row h2{font-family:var(--display);overflow-wrap:anywhere;margin:0;font-size:16px;line-height:1.25}.subject-facts{gap:calc(var(--step) * .5);margin:var(--step) 0;display:grid}.subject-facts>div{gap:var(--step);grid-template-columns:minmax(5.5rem,auto) minmax(0,1fr);display:grid}.subject-facts dt{color:var(--quiet);font-size:11px}.subject-facts dd{overflow-wrap:anywhere;min-width:0;margin:0}.subject-description p{white-space:pre-wrap;overflow-wrap:anywhere;margin:0}.description-clamped{-webkit-line-clamp:3;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.subject-description button,.subject-navigate,.subject-clear{margin-top:calc(var(--step) * .5);min-height:28px}.subject-connect{margin-top:calc(var(--step) * .5);margin-right:calc(var(--step) * .5);min-height:28px}.connection-panel{z-index:2;top:calc(var(--step) * 1.5);max-width:min(560px, calc(100% - var(--step) * 4));padding:calc(var(--step) * 1.5) calc(var(--step) * 2);border:1px solid var(--rule);background:var(--sheet);border-radius:4px;position:absolute;left:50%;transform:translate(-50%);box-shadow:0 2px 12px #0000001f}.connection-prompt{margin:0 0 calc(var(--step) * 1.5)}.connection-empty{margin:0 0 calc(var(--step) * 1.5);color:var(--quiet)}.changeset-fault-summary{margin:calc(var(--step) * 1.5) calc(var(--step) * 2.5) 0;color:var(--failure);font-weight:600}.subject-delete{margin-top:calc(var(--step) * .5);margin-right:calc(var(--step) * .5);min-height:28px}.subject-draft-open{border:1px solid var(--rule-firm);background:var(--sheet);min-height:28px;color:var(--ink);cursor:pointer;font-family:var(--utility);letter-spacing:.08em;border-radius:0;padding:0 .7rem;font-size:12px}.subject-draft-open:hover{border-color:var(--cobalt)}.canvas-controls .quick-filter{border:1px solid var(--rule-firm);background:var(--sheet);width:min(220px,30vw);min-height:28px;color:var(--ink);font-family:var(--utility);border-radius:0;padding:0 .6rem;font-size:12px}.canvas-controls .quick-filter::placeholder{color:var(--quiet)}.canvas-controls .canvas-select{border:1px solid var(--rule-firm);background:var(--sheet);min-height:28px;color:var(--ink);font-family:var(--utility);border-radius:0;padding:0 .4rem;font-size:12px}.canvas-controls .canvas-select:focus-visible{outline:2px solid var(--cobalt);outline-offset:1px}.subject-draft-panel{z-index:6;top:calc(var(--step) * 2 + 28px);right:calc(var(--step) * 1.5);width:min(340px, calc(100% - var(--step) * 4));padding:calc(var(--step) * 1.5) calc(var(--step) * 2);border:1px solid var(--rule);background:var(--sheet);border-radius:4px;position:absolute;box-shadow:0 2px 12px #0000001f}.subject-draft-field{margin-bottom:calc(var(--step) * 1.5);display:block}.subject-draft-field>span{margin-bottom:calc(var(--step) * .5);display:block}.subject-draft-field>input,.subject-draft-field>select{width:100%}.subject-draft-id{margin:0 0 calc(var(--step) * 1.5);color:var(--quiet)}.connection-kinds{gap:calc(var(--step) * .75);margin:0 0 calc(var(--step) * 1.5);flex-wrap:wrap;padding:0;list-style:none;display:flex}.connection-search-label{margin:0 0 calc(var(--step) * .5);font-family:var(--utility);color:var(--quiet);font-size:12px;display:block}.connection-search{width:100%;margin:0 0 calc(var(--step) * 1);padding:calc(var(--step) * .5) calc(var(--step) * .75);border:1px solid var(--rule-firm);background:var(--sheet);color:var(--ink);font-family:var(--utility);border-radius:0;display:block}.connection-targets{gap:calc(var(--step) * .5);margin:0 0 calc(var(--step) * 1.5);flex-direction:column;max-height:200px;padding:0;list-style:none;display:flex;overflow-y:auto}.connection-target-id,.connection-targets-more{color:var(--quiet);font-family:var(--utility);font-size:12px}.ledger{padding:calc(var(--step) * 2) calc(var(--step) * 2.5);min-height:0;margin:0;list-style:none;overflow:visible}.ledger .empty p{color:var(--quiet);font-family:var(--utility);margin:0;font-size:12px}.said{padding:0 0 calc(var(--step) * 1.75) calc(var(--step) * 1.5);border-left:2px solid var(--rule)}.said+.said{padding-top:calc(var(--step) * 1.75)}.said-reviewer{border-left-color:var(--cobalt)}.said-agent{border-left-color:var(--eucalyptus)}.said-session{border-left-color:var(--ochre)}.who{font-family:var(--utility);letter-spacing:.16em;text-transform:uppercase;color:var(--quiet);margin:0 0 .15rem;font-size:10px}.words{white-space:pre-wrap;overflow-wrap:anywhere;margin:0}.faults{padding:calc(var(--step) * 1.5) calc(var(--step) * 2.5);border-top:1px solid var(--failure);background:color-mix(in oklab, var(--failure) 8%, var(--sheet))}.faults-title{margin:0 0 var(--step);color:var(--failure);font-size:13px}.faults ul{font-family:var(--utility);margin:0;padding-left:1.1rem;font-size:11px;line-height:1.6}.faults .code{font-weight:700}.faults .where{color:var(--quiet);margin-left:.4rem}.choices{padding:calc(var(--step) * 1.5) calc(var(--step) * 2.5);border-top:1px solid var(--rule)}.question{margin:0 0 var(--step);font-family:var(--display);font-size:1.05rem}.choices ul{gap:var(--step);margin:0;padding:0;list-style:none;display:grid}.choices button{text-align:left;width:100%;font-family:var(--body);color:var(--ink);background:var(--paper);border:1px solid var(--rule-firm);cursor:pointer;border-radius:0;padding:.5rem .7rem;font-size:14px;display:block}.choices button:hover:enabled{border-color:var(--cobalt)}.choices button:disabled{color:var(--quiet);cursor:not-allowed}.choices .detail{color:var(--quiet);font-size:12px;display:block}.composer{padding:calc(var(--step) * 1.5) calc(var(--step) * 2.5) calc(var(--step) * 2);border-top:1px solid var(--rule)}.composer textarea{resize:vertical;width:100%;font-family:var(--body);color:var(--ink);background:var(--paper);border:1px solid var(--rule-firm);border-radius:0;padding:.55rem .65rem;font-size:14px;display:block}.composer textarea:disabled{color:var(--quiet);background:color-mix(in oklab, var(--paper) 70%, var(--sheet));cursor:not-allowed}.composer-foot{justify-content:space-between;align-items:center;gap:var(--step);margin-top:var(--step);display:flex}.agent-status{align-items:center;gap:calc(var(--step) * .5);font-family:var(--utility);letter-spacing:.14em;text-transform:uppercase;color:var(--quiet);margin:0;font-size:10px;display:flex}.agent-spinner{border:1px solid;border-right-color:#0000;border-radius:50%;flex:none;width:.75rem;height:.75rem;animation:.7s linear infinite agent-spinner-turn}@keyframes agent-spinner-turn{to{transform:rotate(1turn)}}.composer button{font-family:var(--utility);letter-spacing:.08em;color:var(--paper);background:var(--cobalt);border:1px solid var(--cobalt);cursor:pointer;border-radius:0;padding:.45rem 1.1rem;font-size:12px}.composer button:disabled{color:var(--quiet);border-color:var(--rule-firm);cursor:not-allowed;background:0 0}.subject-chip{justify-content:space-between;align-items:center;gap:var(--step);margin-bottom:calc(var(--step) * .75);padding:calc(var(--step) * .5) calc(var(--step) * .75);border:1px solid var(--cobalt);color:var(--cobalt);border-radius:999px;display:flex}.subject-chip span{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.subject-chip button{min-height:24px;padding:0 calc(var(--step) * .5);color:inherit;background:0 0;border:0;flex:none}.filter-grid{gap:calc(var(--step) * 1.5);grid-template-columns:repeat(auto-fill,minmax(200px,1fr));display:grid}.filter-field{gap:calc(var(--step) * .75);flex-direction:column;display:flex}.filter-field>label,.filter-field legend{font-family:var(--utility);letter-spacing:.08em;text-transform:uppercase;color:var(--quiet);font-size:11px}.tag-input{align-items:center;gap:var(--step);padding:calc(var(--step) * .5);border:1px solid var(--rule-firm);background:var(--paper);border-radius:2px;flex-wrap:wrap;display:flex}.tag-input input{min-width:80px;font:inherit;background:0 0;border:none;flex:1;font-size:15px}.tag-input input:focus{outline:none}.tag-chip{background:var(--cobalt);color:var(--paper);border-radius:2px;align-items:center;gap:.4rem;padding:.2rem .6rem;font-size:13px;display:inline-flex}.tag-chip button{color:currentColor;cursor:pointer;background:0 0;border:none;min-width:0;min-height:0;margin:0;padding:0;font-size:16px;line-height:1;display:inline}.tag-chip button:hover{opacity:.8}.filter-field select{font-family:var(--body);color:var(--ink);background:var(--paper);border:1px solid var(--rule-firm);cursor:pointer;border-radius:0;padding:.4rem .7rem;font-size:15px}.filter-field select:hover{border-color:var(--cobalt)}.filter-checkbox-group{border:none;margin:0;padding:0}.filter-checkbox-option{cursor:pointer;align-items:center;gap:.5rem;padding:.4rem 0;font-size:15px;display:flex}.filter-checkbox-option input{cursor:pointer}.bottom-panel{border-top:1px solid var(--rule-firm);background:var(--sheet);flex-direction:column;min-height:0;display:flex}.bottom-panel-tabs{align-items:stretch;gap:0;min-height:32px;display:flex}.bottom-panel-tab{min-height:32px;font-family:var(--utility);letter-spacing:.08em;color:var(--quiet);border:none;border-right:1px solid var(--rule);cursor:pointer;background:0 0;border-bottom:2px solid #0000;padding:0 .9rem;font-size:12px}.bottom-panel-tab:hover{color:var(--ink)}.bottom-panel-tab[aria-selected=true]{color:var(--ink);background:var(--paper);border-bottom-color:var(--cobalt)}.bottom-panel-summary{font-family:var(--utility);color:var(--quiet);align-items:center;padding-inline:.9rem;font-size:12px;display:flex}.bottom-panel-collapse{min-width:32px;min-height:32px;color:var(--quiet);border:none;border-left:1px solid var(--rule);cursor:pointer;background:0 0;margin-left:auto;font-size:12px}.bottom-panel-collapse:hover{color:var(--ink)}.bottom-panel-body{border-top:1px solid var(--rule);background:var(--paper);min-height:0;max-height:42dvh;overflow:auto}.query-tab{gap:calc(var(--step) * 2);padding:calc(var(--step) * 1.5);grid-template-columns:minmax(0,2fr) minmax(0,1fr) minmax(0,1fr);display:grid}.query-tab>div{min-width:0}.query-tab h3{margin:0 0 var(--step);font-family:var(--utility);letter-spacing:.08em;text-transform:uppercase;color:var(--quiet);font-size:11px;font-weight:400}.query-tab-fields{gap:calc(var(--step) * 1.5);flex-direction:column;display:flex}.query-tab-outcome>h3:not(:first-child){margin-top:calc(var(--step) * 2)}.query-match-count{font-family:var(--display);margin:0;font-size:15px}.query-match-count strong{font-size:28px;font-weight:400;line-height:1}.query-outcome-stale,.query-outcome-note{margin:var(--step) 0 0;color:var(--quiet);font-size:13px}.query-outcome-empty{margin:var(--step) 0 0;color:var(--ochre);font-size:13px}.query-exclusions{margin:0;padding:0;list-style:none}.query-exclusions>li+li{margin-top:var(--step)}.query-exclusions ul{margin:calc(var(--step) * .5) 0 0;padding-left:calc(var(--step) * 2);color:var(--quiet);font-size:13px;list-style:none}.query-exclusion-facet{font-family:var(--utility);letter-spacing:.08em;text-transform:uppercase;color:var(--ink);font-size:11px}.query-exclusion-count{font-family:var(--utility);color:var(--quiet);font-size:11px}.query-exclusion-more{font-style:italic}.query-tab-document{flex-direction:column;min-height:0;display:flex}.query-document{min-height:0;max-height:22dvh;padding:var(--step);border:1px solid var(--rule);background:var(--sheet);font-family:var(--utility);flex:1;margin:0;font-size:12px;line-height:1.5;overflow:auto}.query-tab-actions{align-items:center;gap:var(--step);margin-top:var(--step);display:flex}.query-tab-actions button{min-height:32px;font-family:var(--utility);letter-spacing:.08em;color:var(--paper);background:var(--cobalt);border:1px solid var(--cobalt);cursor:pointer;border-radius:0;padding:0 .7rem;font-size:12px}.query-tab-actions button:disabled{color:var(--quiet);background:var(--paper);border-color:var(--rule-firm);cursor:default}.query-stage-status{color:var(--quiet);font-size:13px}@media (max-width:899px){.command-strip{gap:calc(var(--step) * .5);padding-inline:var(--step)}.command-identity,.command-actions{gap:calc(var(--step) * .5)}.workspace{grid-template-rows:auto minmax(0,1fr) auto;grid-template-columns:minmax(0,1fr);min-height:0}.view-tree{border-right:0;border-bottom:1px solid var(--rule);max-height:34dvh}.conversation-separator{display:none}.query-tab{grid-template-columns:minmax(0,1fr)}.bottom-panel-body{max-height:30dvh}.section-stack{border-top:1px solid var(--rule);border-left:0;max-height:56dvh}.conversation-reopen{border-left:0;border-top:1px solid var(--rule);flex-direction:row;justify-content:center;width:auto;height:auto;min-height:24px;padding:0}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.save-view-control{display:contents}.save-view-toggle{padding:0 calc(var(--step) * .75rem);border:1px solid var(--rule-firm);background:var(--paper);height:32px;color:var(--ink);cursor:pointer;border-radius:2px;font-size:13px}.save-view-toggle:hover:not(:disabled){border-color:var(--rule);background:color-mix(in oklab, var(--paper) 90%, var(--ink))}.save-view-toggle:disabled{opacity:.5;cursor:not-allowed}.save-view-control{z-index:20;background:color-mix(in oklab, var(--ink) 22%, transparent);place-items:center;display:grid;position:fixed;inset:0}.save-view-panel{background:var(--sheet);border:1px solid var(--rule-firm);border-radius:4px;box-shadow:0 8px 28px #1323392e}.save-view-panel-body{padding:calc(var(--step) * 1.5);min-width:300px}.save-view-form{gap:calc(var(--step) * 1);flex-direction:column;display:flex}.save-view-form div{gap:calc(var(--step) * .5);flex-direction:column;display:flex}.save-view-form label{color:var(--ink);font-size:12px;font-weight:500}.save-view-form input,.save-view-form textarea{padding:calc(var(--step) * .5);border:1px solid var(--rule);font-family:var(--body);border-radius:2px;font-size:13px}.save-view-actions{gap:calc(var(--step) * 1);margin-top:calc(var(--step) * .5);display:flex}.save-view-actions button{padding:calc(var(--step) * .5) calc(var(--step) * 1);border:1px solid var(--rule-firm);background:var(--paper);color:var(--ink);cursor:pointer;border-radius:2px;flex:1;font-size:13px}.save-view-actions button:hover:not(:disabled){background:color-mix(in oklab, var(--paper) 85%, var(--ink))}.save-view-notice{align-items:center;gap:calc(var(--step) * .75);padding:calc(var(--step) * .75) calc(var(--step) * 1.5);background:color-mix(in oklab, var(--eucalyptus) 15%, var(--sheet));border:1px solid var(--eucalyptus);color:var(--ink);border-radius:4px;font-size:13px;display:flex}.save-view-notice button{padding:0 calc(var(--step) * .5);color:var(--eucalyptus);cursor:pointer;background:0 0;border:none;margin-left:auto;font-size:11px;text-decoration:underline}.confirm-dialog-backdrop{z-index:1000;background:#0006;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.confirm-dialog{background:var(--sheet);border:1px solid var(--rule-firm);padding:calc(var(--step) * 2);text-align:center;border-radius:8px;max-width:400px;box-shadow:0 8px 24px #00000029}.confirm-dialog h2{margin:0 0 calc(var(--step) * 1) 0;font-size:16px}.confirm-dialog p{margin:0 0 calc(var(--step) * 1.5) 0;color:var(--quiet);font-size:13px}.confirm-dialog-actions{gap:calc(var(--step) * 1);display:flex}.confirm-dialog-actions button{padding:calc(var(--step) * .75);border:1px solid var(--rule-firm);background:var(--paper);color:var(--ink);cursor:pointer;border-radius:2px;flex:1;font-size:13px}.confirm-dialog-actions button:hover{background:color-mix(in oklab, var(--paper) 85%, var(--ink))}.changeset-tray{padding:calc(var(--step) * 1.5) calc(var(--step) * 2.5);border-top:1px solid var(--rule);background:color-mix(in srgb, var(--sheet) 92%, var(--cobalt) 8%)}.changeset-heading-row{justify-content:space-between;align-items:baseline;gap:var(--step);display:flex}.changeset-heading-row h2{font-family:var(--display);margin:0;font-size:15px}.changeset-discard-all{color:var(--eucalyptus);cursor:pointer;background:0 0;border:none;padding:0;font-size:12px;text-decoration:underline}.changeset-history-controls{align-items:baseline;gap:var(--step);display:flex}.changeset-undo,.changeset-redo{color:var(--eucalyptus);cursor:pointer;background:0 0;border:none;padding:0;font-size:12px;text-decoration:underline}.changeset-undo:disabled,.changeset-redo:disabled{color:var(--quiet);cursor:not-allowed;text-decoration:none}.changeset-rows{margin:var(--step) 0 0;gap:calc(var(--step) * .75);padding:0;list-style:none;display:grid}.changeset-row{padding:calc(var(--step) * .75);border:1px solid var(--rule-firm);background:var(--paper);border-radius:2px}.changeset-row.conflicted{border-color:var(--ochre);background:color-mix(in oklab, var(--ochre) 6%, var(--paper))}.changeset-row-conflict{margin:calc(var(--step) * .5) 0 0;font-family:var(--utility);color:var(--ochre);font-size:11px}.changeset-row-line{justify-content:space-between;align-items:center;gap:var(--step);display:flex}.changeset-row-label{overflow-wrap:anywhere;min-width:0;font-family:var(--utility);color:var(--ink);font-size:12px}.changeset-row-discard{color:var(--eucalyptus);cursor:pointer;background:0 0;border:none;flex:none;padding:0;font-size:11px;text-decoration:underline}.changeset-row-diagnostics,.changeset-batch-diagnostics{margin:calc(var(--step) * .5) 0 0;font-family:var(--utility);color:var(--failure);padding-left:1.1rem;font-size:11px}.changeset-batch-diagnostics{margin:0 0 var(--step)}.changeset-row-diagnostics .code,.changeset-batch-diagnostics .code{font-weight:700}.changeset-row-diagnostics .where,.changeset-batch-diagnostics .where{color:var(--quiet);margin-left:.4rem}.changeset-actions{margin-top:var(--step)}.changeset-commit{width:100%;padding:calc(var(--step) * .75);border:1px solid var(--cobalt);background:var(--cobalt);color:var(--paper);cursor:pointer;border-radius:2px;font-size:13px}.changeset-commit:disabled{border-color:var(--rule-firm);color:var(--quiet);cursor:not-allowed;background:0 0}.changeset-notice{margin-top:var(--step);padding:calc(var(--step) * .75) calc(var(--step) * 1);border:1px solid var(--eucalyptus);background:color-mix(in oklab, var(--eucalyptus) 15%, var(--sheet));color:var(--ink);border-radius:4px;font-size:12px}.changeset-notice p{margin:0 0 calc(var(--step) * .25);font-weight:700}.changeset-notice ul{font-family:var(--utility);margin:0;padding-left:1.1rem}.layout-notice-pill{inset:var(--step) var(--step) auto auto;z-index:4;align-items:center;gap:var(--step);max-width:calc(100% - var(--step) * 2);border:1px solid var(--rule-firm);background:var(--sheet);font-family:var(--utility);color:var(--ink);border-radius:999px;padding:.35rem .7rem;font-size:12px;display:flex;position:absolute}.layout-notice-pill span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.subject-form{gap:calc(var(--step) * 1.25);margin:calc(var(--step) * 1) 0;flex-direction:column;display:flex}.subject-form-field{grid-template-columns:var(--form-label-width) minmax(0, 1fr);align-items:center;gap:calc(var(--step) * .75);display:grid}.subject-form-field.subject-form-list{align-items:start}.subject-form-list>.subject-form-label{padding-top:.35rem}.subject-form-list-body{align-items:flex-start;gap:calc(var(--step) * .35);flex-direction:column;min-width:0;display:flex}.subject-form-label{font-family:var(--utility);letter-spacing:.02em;text-transform:uppercase;color:var(--quiet);white-space:nowrap;text-overflow:ellipsis;font-size:11px;overflow:hidden}.subject-form-field input[type=text],.subject-form-field select{border:1px solid var(--rule-firm);border-radius:calc(var(--step) * .5);background:var(--paper);font-family:var(--body);color:var(--ink);padding:.35rem .5rem;font-size:13px}.subject-fact-value{font-family:var(--body);color:var(--ink);overflow-wrap:anywhere;font-size:13px}.subject-form-list{border-top:1px solid var(--rule);padding-top:calc(var(--step) * .75)}.subject-form-row{align-items:flex-start;gap:calc(var(--step) * .5);margin-bottom:calc(var(--step) * .5);display:flex}.subject-form-row-body{align-items:center;gap:calc(var(--step) * .5);flex-wrap:wrap;flex:1;display:flex}.subject-form-toggle{align-items:center;gap:calc(var(--step) * .35);font-family:var(--utility);color:var(--quiet);font-size:12px;display:flex}.subject-form-row-add,.subject-form-row-remove{border:1px solid var(--rule-firm);border-radius:calc(var(--step) * .5);background:var(--sheet);font-family:var(--utility);cursor:pointer;padding:.25rem .6rem;font-size:12px}.context-menu{z-index:1100;min-width:184px;max-width:280px;max-height:70vh;padding:calc(var(--step) * .5) 0;background:var(--sheet);border:1px solid var(--rule-firm);border-radius:2px;position:fixed;overflow-y:auto;box-shadow:0 8px 24px #00000029}.context-menu:focus{outline:none}.context-menu ul{margin:0;padding:0;list-style:none}.context-menu-group+.context-menu-group{margin-top:calc(var(--step) * .5);padding-top:calc(var(--step) * .5);border-top:1px solid var(--rule)}.context-menu-destructive{margin-top:calc(var(--step) * .5);padding-top:calc(var(--step) * .5);border-top:1px solid var(--rule-firm)}.context-menu-heading{padding:calc(var(--step) * .5) calc(var(--step) * 1.5);font-family:var(--utility);letter-spacing:.08em;text-transform:uppercase;color:var(--quiet);margin:0;font-size:10px}.context-menu-item{align-items:center;gap:calc(var(--step) * .75);width:100%;padding:.3rem calc(var(--step) * 1.5);font:inherit;text-align:left;color:var(--ink);cursor:pointer;background:0 0;border:0;border-radius:0;font-size:13px;display:flex}.context-menu-item:hover{background:color-mix(in oklab, var(--cobalt) 10%, transparent)}.context-menu-destructive .context-menu-item{color:var(--failure)}.context-menu-destructive .context-menu-item:hover{background:color-mix(in oklab, var(--failure) 12%, transparent)}.context-menu-tick{width:8px;font-family:var(--utility);color:var(--cobalt);flex:none;font-size:12px}.context-menu-label{white-space:nowrap;text-overflow:ellipsis;flex:1;overflow:hidden}.changeset-row-scope{font-family:var(--utility);letter-spacing:.08em;text-transform:uppercase;padding:0 calc(var(--step) * .5);border:1px solid var(--rule);color:var(--quiet);border-radius:2px;flex:none;font-size:10px}.changeset-scope-view{color:var(--cobalt);border-color:color-mix(in oklab, var(--cobalt) 40%, transparent)}.prompt-dialog-form{gap:calc(var(--step) * .75);text-align:left;flex-direction:column;display:flex}.prompt-dialog-form label{font-family:var(--utility);letter-spacing:.08em;text-transform:uppercase;color:var(--quiet);font-size:10px}.prompt-dialog-form input{padding:calc(var(--step) * .75);font:inherit;color:var(--ink);background:var(--paper);border:1px solid var(--rule-firm);border-radius:2px;font-size:13px}.prompt-dialog-form input:focus{border-color:var(--cobalt)}.prompt-dialog-form .confirm-dialog-actions{margin-top:calc(var(--step) * .5)}.open-questions{gap:var(--step);padding:var(--step) 0;flex-direction:column;display:flex}.open-questions-scope,.open-questions-catalogue{color:var(--quiet);margin:0;font-size:.78rem}.question-list{gap:calc(var(--step) * .75);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.question-row{gap:calc(var(--step) * .25);flex-direction:column;display:flex}.question-text{font-size:.85rem;line-height:1.35}.question-meta{gap:var(--step);flex-wrap:wrap;align-items:baseline;display:flex}.question-verb{font:inherit;padding:0 calc(var(--step) * .75);min-height:calc(var(--step) * 3);color:var(--cobalt);border:1px solid var(--rule);cursor:pointer;background:0 0;border-radius:2px;margin-left:auto;font-size:.8rem}.question-verb:hover,.question-verb:focus-visible{border-color:var(--cobalt);outline:none}.connection-note,.connection-others summary{color:var(--quiet);margin:0 0 calc(var(--step) * .5);font-size:.85rem}.connection-others summary{cursor:pointer}.question-authority{letter-spacing:.04em;text-transform:uppercase;color:var(--quiet);border:1px solid var(--quiet);padding:0 calc(var(--step) * .75);border-radius:999px;font-size:.68rem;font-weight:600}.question-since{color:var(--quiet);font-size:.72rem}.saved-layout-pill{inset:auto auto var(--step) var(--step);z-index:4;align-items:center;gap:var(--step);max-width:calc(100% - var(--step) * 2);border:1px solid var(--rule-firm);background:var(--sheet);font-family:var(--utility);color:var(--ink);border-radius:999px;padding:.35rem .7rem;font-size:12px;display:flex;position:absolute}.saved-layout-pill span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.saved-layout-pill button{color:var(--cobalt);font-family:inherit;font-size:inherit;cursor:pointer;background:0 0;border:none;flex:none;padding:0;text-decoration:underline}.saved-layout-pill button:hover{color:var(--ink)}.zoom-controls{inset:auto var(--step) var(--step) auto;z-index:4;border:1px solid var(--rule-firm);border-radius:calc(var(--step) * .75);background:var(--sheet);align-items:stretch;display:flex;position:absolute;overflow:hidden}.zoom-controls button{color:var(--ink);font-family:var(--utility);cursor:pointer;background:0 0;border:none;padding:.3rem .6rem;font-size:13px;line-height:1}.zoom-controls button+button{border-left:1px solid var(--rule)}.zoom-controls button:hover{background:var(--paper)}.tree-row-staged .tree-label{font-style:italic}.tree-row-staged-delete .tree-label{text-decoration:line-through}.tree-staged{font-family:var(--utility);letter-spacing:.06em;text-transform:uppercase;color:var(--quiet);border:1px solid var(--rule-firm);border-radius:2px;flex:none;padding:0 .3em;font-size:9px}.tree-row-active .tree-staged{color:inherit;opacity:.75;border-color:currentColor}
|
|
2
2
|
/*$vite$:1*/
|
|
@@ -118,6 +118,29 @@ export interface VisualChoiceSelectedPayload {
|
|
|
118
118
|
readonly choiceId: string;
|
|
119
119
|
readonly optionId: string;
|
|
120
120
|
}
|
|
121
|
+
/**
|
|
122
|
+
* The reviewer hands one open question to the agent (#515, ADR 0151). The
|
|
123
|
+
* phrasing rides along so the transcript, the journal and the agent read the
|
|
124
|
+
* same words; the agent still computes the step from the record, because the
|
|
125
|
+
* question is a reading of the model at one moment and the model may have
|
|
126
|
+
* moved since the row was drawn.
|
|
127
|
+
*/
|
|
128
|
+
export interface VisualQuestionDelegatePayload {
|
|
129
|
+
readonly questionId: string;
|
|
130
|
+
/** Null for a workspace-scoped question, which names no subject. */
|
|
131
|
+
readonly subjectId: string | null;
|
|
132
|
+
readonly question: string;
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* The agent's answer to a delegated question: operations it PROPOSES, which
|
|
136
|
+
* the browser stages into the reviewer's changeset and the reviewer commits
|
|
137
|
+
* (ADR 0151). The agent never writes (ADR 0084, ADR 0088); this is how it
|
|
138
|
+
* answers without doing so. `note` is the line the transcript shows.
|
|
139
|
+
*/
|
|
140
|
+
export interface VisualOperationsProposePayload {
|
|
141
|
+
readonly note: string;
|
|
142
|
+
readonly operations: readonly YarramateOperation[];
|
|
143
|
+
}
|
|
121
144
|
export interface VisualViewNavigatePayload {
|
|
122
145
|
readonly viewId: string;
|
|
123
146
|
readonly requiresAttention: boolean;
|
|
@@ -410,6 +433,10 @@ export type VisualBrowserInput = {
|
|
|
410
433
|
readonly type: "session.end";
|
|
411
434
|
readonly lastAcknowledgedSequence: number;
|
|
412
435
|
readonly payload: VisualBrowserSessionEndPayload;
|
|
436
|
+
} | {
|
|
437
|
+
readonly type: "question.delegate";
|
|
438
|
+
readonly lastAcknowledgedSequence: number;
|
|
439
|
+
readonly payload: VisualQuestionDelegatePayload;
|
|
413
440
|
};
|
|
414
441
|
interface VisualEventEnvelope<Type extends string, Payload> {
|
|
415
442
|
readonly format: "yarramate/visual-event/v1";
|
|
@@ -420,7 +447,7 @@ interface VisualEventEnvelope<Type extends string, Payload> {
|
|
|
420
447
|
readonly timestamp: string;
|
|
421
448
|
readonly payload: Payload;
|
|
422
449
|
}
|
|
423
|
-
export type VisualEvent = VisualEventEnvelope<"chat.message", VisualChatMessagePayload> | VisualEventEnvelope<"choice.selected", VisualChoiceSelectedPayload> | VisualEventEnvelope<"view.navigate", VisualViewNavigatePayload> | VisualEventEnvelope<"session.end", VisualSessionEndPayload> | VisualEventEnvelope<"browser.connected", VisualBrowserConnectedPayload> | VisualEventEnvelope<"browser.disconnected", VisualBrowserDisconnectedPayload> | VisualEventEnvelope<"filter.query", VisualFilterQueryPayload> | VisualEventEnvelope<"changeset.commit", VisualChangesetCommitPayload> | VisualEventEnvelope<"layout.save", VisualLayoutSavePayload>;
|
|
450
|
+
export type VisualEvent = VisualEventEnvelope<"chat.message", VisualChatMessagePayload> | VisualEventEnvelope<"choice.selected", VisualChoiceSelectedPayload> | VisualEventEnvelope<"question.delegate", VisualQuestionDelegatePayload> | VisualEventEnvelope<"view.navigate", VisualViewNavigatePayload> | VisualEventEnvelope<"session.end", VisualSessionEndPayload> | VisualEventEnvelope<"browser.connected", VisualBrowserConnectedPayload> | VisualEventEnvelope<"browser.disconnected", VisualBrowserDisconnectedPayload> | VisualEventEnvelope<"filter.query", VisualFilterQueryPayload> | VisualEventEnvelope<"changeset.commit", VisualChangesetCommitPayload> | VisualEventEnvelope<"layout.save", VisualLayoutSavePayload>;
|
|
424
451
|
/**
|
|
425
452
|
* The filter a chat turn resolved to. The agent states `query` and nothing
|
|
426
453
|
* else: the runtime evaluates it against the same graph a `filter.query`
|
|
@@ -499,7 +526,7 @@ interface VisualResponseEnvelope<Type extends string, Payload> {
|
|
|
499
526
|
readonly timestamp: string;
|
|
500
527
|
readonly payload: Payload;
|
|
501
528
|
}
|
|
502
|
-
export type VisualResponse = VisualResponseEnvelope<"chat.response", VisualChatResponsePayload> | VisualResponseEnvelope<"agent.status", VisualAgentStatusPayload> | VisualResponseEnvelope<"choice.present", VisualChoicePresentPayload> | VisualResponseEnvelope<"handoff.complete", VisualHandoffSummary> | VisualResponseEnvelope<"diagnostic", VisualDiagnosticPayload>;
|
|
529
|
+
export type VisualResponse = VisualResponseEnvelope<"chat.response", VisualChatResponsePayload> | VisualResponseEnvelope<"agent.status", VisualAgentStatusPayload> | VisualResponseEnvelope<"choice.present", VisualChoicePresentPayload> | VisualResponseEnvelope<"operations.propose", VisualOperationsProposePayload> | VisualResponseEnvelope<"handoff.complete", VisualHandoffSummary> | VisualResponseEnvelope<"diagnostic", VisualDiagnosticPayload>;
|
|
503
530
|
export type VisualHandoffDecision = "completed" | "cancelled" | "failed";
|
|
504
531
|
export type VisualTerminationReason = "user-ended" | "child-failed" | "browser-timeout" | "main-cancelled" | "server-failed" | "compiler-failed";
|
|
505
532
|
export interface VisualHandoff extends VisualHandoffSummary {
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { CatalogueCondition } from '../../interrogate-command.js';
|
|
1
2
|
import type { CanvasGraph } from '../../graph-projection.js';
|
|
2
3
|
import type { PatternMembership, PatternVacancy } from '../../compiler.js';
|
|
3
4
|
import type { VISUAL_PROTOCOL_VERSION, VisualApplyResultPayload, VisualAuthority, VisualBrowserInput, VisualCapabilities, VisualChoicePresentPayload, VisualDiagnostic, VisualFilterResultPayload, VisualFreezeReason, VisualKindOption, VisualPatternOption, VisualLayoutPositions, VisualLayoutRoutes, VisualLayoutSaveResultPayload, VisualResponse, VisualTerminationReason, VisualViewSummary } from './protocol-contract.js';
|
|
@@ -18,6 +19,23 @@ export interface VisualQuestionEntry {
|
|
|
18
19
|
readonly question: string;
|
|
19
20
|
readonly authority: 'human' | 'agent' | 'either';
|
|
20
21
|
readonly since?: string;
|
|
22
|
+
/**
|
|
23
|
+
* Which list the row came from (#515): a workspace row names no subject
|
|
24
|
+
* and has no panel to open, a subject row is keyed under its subject.
|
|
25
|
+
* Optional so a host that constructs rows by hand is not broken by a
|
|
26
|
+
* field only the pane's verbs read.
|
|
27
|
+
*/
|
|
28
|
+
readonly scope?: 'workspace' | 'subject';
|
|
29
|
+
/** Why the question matters, in the catalogue's words (ADR 0110). */
|
|
30
|
+
readonly materiality?: string;
|
|
31
|
+
/** What would close it, in prose. */
|
|
32
|
+
readonly resolution?: string;
|
|
33
|
+
/**
|
|
34
|
+
* The catalogue conditions that opened it, verbatim (#515, ADR 0110): the
|
|
35
|
+
* machine-readable answer shape a row, a menu entry or a chip turns into
|
|
36
|
+
* a verb. Optional for the same reason as `scope`.
|
|
37
|
+
*/
|
|
38
|
+
readonly trigger?: readonly CatalogueCondition[];
|
|
21
39
|
}
|
|
22
40
|
/**
|
|
23
41
|
* The interrogation report, folded for drawing (#292).
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { type DecorationMap } from "./graph-canvas.js";
|
|
2
2
|
import type { EditorHost } from "./editor-host.js";
|
|
3
|
+
import type { VisualQuestionDelegatePayload } from "../adapters/visual/protocol-contract.js";
|
|
3
4
|
import { type EditorPointer, type RightSectionId } from "./workspace-state.js";
|
|
4
5
|
/**
|
|
5
6
|
* The editor.
|
|
@@ -16,10 +17,15 @@ import { type EditorPointer, type RightSectionId } from "./workspace-state.js";
|
|
|
16
17
|
* rather than disabled. A UI posture only: whatever this shell draws, the
|
|
17
18
|
* host still answers for its own store.
|
|
18
19
|
*/
|
|
19
|
-
export declare const App: ({ host, sections, readOnly, decorations: initialDecorations, onReady, }: {
|
|
20
|
+
export declare const App: ({ host, sections, readOnly, decorations: initialDecorations, onDelegateQuestion, onReady, }: {
|
|
20
21
|
readonly host: EditorHost;
|
|
21
22
|
readonly sections?: readonly RightSectionId[];
|
|
22
23
|
readonly readOnly?: boolean;
|
|
24
|
+
/**
|
|
25
|
+
* Where a delegated question goes when the host has no agent on the socket
|
|
26
|
+
* (#515, ADR 0151). See `MountOptions.onDelegateQuestion`.
|
|
27
|
+
*/
|
|
28
|
+
readonly onDelegateQuestion?: (question: VisualQuestionDelegatePayload) => void;
|
|
23
29
|
/**
|
|
24
30
|
* The host's per-subject marks at mount time (#314, ADR 0119) - the
|
|
25
31
|
* initial value only, the way React means an initial value: later
|
|
@@ -22,6 +22,8 @@
|
|
|
22
22
|
* Pure, and outside any component, because this repo renders React through
|
|
23
23
|
* `renderToStaticMarkup` and has no DOM test environment.
|
|
24
24
|
*/
|
|
25
|
+
import type { VisualQuestionEntry } from "../adapters/visual/wire.js";
|
|
26
|
+
import { type QuestionVerb } from "./question-verbs.js";
|
|
25
27
|
import type { CanvasGraph } from "../graph-projection.js";
|
|
26
28
|
import type { VisualKindOption } from "../adapters/visual/protocol-contract.js";
|
|
27
29
|
import type { ActiveViewMembership } from "./state.js";
|
|
@@ -171,6 +173,25 @@ export type ContextMenuIntent = {
|
|
|
171
173
|
} | {
|
|
172
174
|
readonly type: "view.remove-subject";
|
|
173
175
|
readonly id: string;
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* Answer an open question with the gesture its trigger implies (#516,
|
|
179
|
+
* ADR 0150). The verb is resolved here, in the pure model, so the menu's
|
|
180
|
+
* reduction is a lookup and a test can read it; `null` means the row has
|
|
181
|
+
* no gesture and the shell puts the subject's properties in front instead.
|
|
182
|
+
*/
|
|
183
|
+
| {
|
|
184
|
+
readonly type: "question.answer";
|
|
185
|
+
readonly questionId: string;
|
|
186
|
+
readonly subjectId: string | null;
|
|
187
|
+
readonly verb: QuestionVerb | null;
|
|
188
|
+
}
|
|
189
|
+
/** Hand the question to whoever answers questions for this host (ADR 0151). */
|
|
190
|
+
| {
|
|
191
|
+
readonly type: "question.delegate";
|
|
192
|
+
readonly questionId: string;
|
|
193
|
+
readonly subjectId: string | null;
|
|
194
|
+
readonly question: string;
|
|
174
195
|
};
|
|
175
196
|
/** Which half of the split an operation belongs to. */
|
|
176
197
|
export type ContextMenuScope = "view" | "model";
|
|
@@ -196,6 +217,21 @@ export interface ContextMenuGroup {
|
|
|
196
217
|
}
|
|
197
218
|
export interface ContextMenuContext {
|
|
198
219
|
readonly graph: CanvasGraph | null;
|
|
220
|
+
/**
|
|
221
|
+
* The interview overlay (#516): a subject's open questions become a group
|
|
222
|
+
* in its menu, and the workspace's become a group in the canvas menu.
|
|
223
|
+
* Absent on a host that ships no overlay, and the menus are as they were.
|
|
224
|
+
*/
|
|
225
|
+
readonly questions?: {
|
|
226
|
+
readonly workspace: readonly VisualQuestionEntry[];
|
|
227
|
+
readonly subjects: Readonly<Record<string, readonly VisualQuestionEntry[]>>;
|
|
228
|
+
};
|
|
229
|
+
/**
|
|
230
|
+
* The label of the delegate door for this host (ADR 0151): "Answer via
|
|
231
|
+
* agent", "Answer via assistant" or "Copy for my assistant". Absent, the
|
|
232
|
+
* group offers no door.
|
|
233
|
+
*/
|
|
234
|
+
readonly delegateLabel?: string;
|
|
199
235
|
readonly relationshipKinds: readonly VisualKindOption[];
|
|
200
236
|
/** The view the canvas is showing, or `ALL_SUBJECTS_VIEW`. */
|
|
201
237
|
readonly activeViewId: string;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { VisualQuestionDelegatePayload } from '../adapters/visual/protocol-contract.js';
|
|
1
2
|
import { type LocalHostOptions, type RefreshOutcome } from './local-host.js';
|
|
2
3
|
import type { DecorationMap } from './graph-canvas.js';
|
|
3
4
|
import type { EditorHost } from './editor-host.js';
|
|
@@ -72,6 +73,13 @@ export interface MountOptions extends LocalHostOptions {
|
|
|
72
73
|
* unmounting it terminates the worker and restores the bundled engine.
|
|
73
74
|
*/
|
|
74
75
|
readonly workerFactory?: () => LayoutWorker;
|
|
76
|
+
/**
|
|
77
|
+
* Where a delegated question goes on a host with no agent on the socket
|
|
78
|
+
* (#515, ADR 0151): a product with its own assistant routes it there. A host
|
|
79
|
+
* that passes nothing gets "Copy for my assistant" on every row instead, so
|
|
80
|
+
* the question still leaves the pane in a shape an assistant can answer.
|
|
81
|
+
*/
|
|
82
|
+
readonly onDelegateQuestion?: (question: VisualQuestionDelegatePayload) => void;
|
|
75
83
|
}
|
|
76
84
|
/**
|
|
77
85
|
* The handle a mount returns (#297, ADR 0118): the disposal it always had,
|
|
@@ -167,7 +175,7 @@ export declare const mountEditor: (element: Element, options: MountOptions) => M
|
|
|
167
175
|
* the same viewer posture `mountEditor` offers, and stays free to refuse
|
|
168
176
|
* writes on its own side of the seam as well.
|
|
169
177
|
*/
|
|
170
|
-
export declare const mountEditorWith: (element: Element, host: EditorHost, sections?: readonly RightSectionId[], readOnly?: boolean, decorations?: DecorationMap) => MountedEditor;
|
|
178
|
+
export declare const mountEditorWith: (element: Element, host: EditorHost, sections?: readonly RightSectionId[], readOnly?: boolean, decorations?: DecorationMap, onDelegateQuestion?: (question: VisualQuestionDelegatePayload) => void) => MountedEditor;
|
|
171
179
|
export type { EditorHost, EditorHostEvents } from './editor-host.js';
|
|
172
180
|
export type { DecorationMap, DecorationMark } from './graph-canvas.js';
|
|
173
181
|
export type { LocalEditorHost, LocalHostOptions, RefreshOutcome, } from './local-host.js';
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import type { VisualInterrogationOverlay } from '../adapters/visual/wire.js';
|
|
1
|
+
import type { VisualInterrogationOverlay, VisualQuestionEntry } from '../adapters/visual/wire.js';
|
|
2
|
+
import { type QuestionVerb } from './question-verbs.js';
|
|
2
3
|
/**
|
|
3
4
|
* The interview, where the drawing happens (#292).
|
|
4
5
|
*
|
|
@@ -9,7 +10,22 @@ import type { VisualInterrogationOverlay } from '../adapters/visual/wire.js';
|
|
|
9
10
|
* answer path stays `apply` (through the editor's own forms or an agent),
|
|
10
11
|
* never a text box here that would bypass the compile gate.
|
|
11
12
|
*/
|
|
12
|
-
export declare function OpenQuestions({ overlay, selectedId, }: {
|
|
13
|
+
export declare function OpenQuestions({ overlay, selectedId, readOnly, onVerb, onDelegate, delegateLabel, }: {
|
|
13
14
|
readonly overlay: VisualInterrogationOverlay;
|
|
14
15
|
readonly selectedId: string | null;
|
|
16
|
+
/** A viewer has no pen (#298): rows read, and offer nothing. */
|
|
17
|
+
readonly readOnly?: boolean;
|
|
18
|
+
/**
|
|
19
|
+
* Runs a row's verb (#515): the gesture that would answer it, derived from
|
|
20
|
+
* the trigger. Absent, rows carry no button, which is how a host without
|
|
21
|
+
* the gestures mounts the pane.
|
|
22
|
+
*/
|
|
23
|
+
readonly onVerb?: (entry: VisualQuestionEntry, verb: QuestionVerb, subjectId: string | null) => void;
|
|
24
|
+
/**
|
|
25
|
+
* Hands the question to whoever answers questions for this host (#515,
|
|
26
|
+
* ADR 0151): the agent on the socket, the host's own assistant, or the
|
|
27
|
+
* clipboard for an assistant that is elsewhere. The label says which.
|
|
28
|
+
*/
|
|
29
|
+
readonly onDelegate?: (entry: VisualQuestionEntry, subjectId: string | null) => void;
|
|
30
|
+
readonly delegateLabel?: string;
|
|
15
31
|
}): import("react").JSX.Element;
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import type { VisualQuestionEntry } from '../adapters/visual/wire.js';
|
|
2
|
+
/**
|
|
3
|
+
* What one gesture would answer an open question (#515).
|
|
4
|
+
*
|
|
5
|
+
* The catalogue declares why a question is open as typed conditions, and
|
|
6
|
+
* ADR 0110 put them on the design step so a host could build the answering
|
|
7
|
+
* affordance instead of re-deriving it. This is the editor's own use of that
|
|
8
|
+
* shape: a question row, a menu entry and a count chip all offer the same
|
|
9
|
+
* verb, and the verb is a lookup over the trigger, never a guess from the
|
|
10
|
+
* phrasing. A trigger this table does not know yields no verb, and the row
|
|
11
|
+
* stays what it was: a question a person reads.
|
|
12
|
+
*
|
|
13
|
+
* Every verb runs a gesture the surface already has - the connection tool,
|
|
14
|
+
* the Add-subject form, the properties panel - so what a verb can reach is
|
|
15
|
+
* exactly what a reviewer can reach by hand, and anything it stages still
|
|
16
|
+
* lands through the changeset.
|
|
17
|
+
*/
|
|
18
|
+
export type QuestionVerb = {
|
|
19
|
+
/** Arm the connection tool from the subject, kinds narrowed to these. */
|
|
20
|
+
readonly kind: 'connect';
|
|
21
|
+
readonly label: string;
|
|
22
|
+
/** Qualified relationship kind ids the trigger names; empty = any. */
|
|
23
|
+
readonly kinds: readonly string[];
|
|
24
|
+
/** Which end the subject is: `outgoing` draws from it, `incoming` to it. */
|
|
25
|
+
readonly direction: 'outgoing' | 'incoming';
|
|
26
|
+
} | {
|
|
27
|
+
/** Open the Add-subject form with this kind preselected. */
|
|
28
|
+
readonly kind: 'add';
|
|
29
|
+
readonly label: string;
|
|
30
|
+
/** The palette label of the first kind the trigger names. */
|
|
31
|
+
readonly subjectKind: string;
|
|
32
|
+
} | {
|
|
33
|
+
/** Select the subject and put the properties panel in front. */
|
|
34
|
+
readonly kind: 'describe';
|
|
35
|
+
readonly label: string;
|
|
36
|
+
};
|
|
37
|
+
/**
|
|
38
|
+
* The first actionable condition decides. `opensWhen` requires every
|
|
39
|
+
* condition to hold, so closing any one of them closes the question, and the
|
|
40
|
+
* first the table knows is as good a door as any.
|
|
41
|
+
*/
|
|
42
|
+
export declare const verbFor: (entry: VisualQuestionEntry) => QuestionVerb | null;
|
|
43
|
+
/**
|
|
44
|
+
* The question, ready to paste into an assistant that is not on the socket
|
|
45
|
+
* (#515, ADR 0151): claude.ai in a tab, a desktop app with no session, any
|
|
46
|
+
* chat. It carries what the design step would have given an agent - the
|
|
47
|
+
* phrasing, why it matters, what closes it - and the operations skeleton the
|
|
48
|
+
* trigger implies, so the answer comes back as a document `apply` accepts
|
|
49
|
+
* rather than as prose someone has to translate.
|
|
50
|
+
*/
|
|
51
|
+
export declare const assistantBrief: (entry: VisualQuestionEntry, subject: {
|
|
52
|
+
readonly id: string;
|
|
53
|
+
readonly name: string;
|
|
54
|
+
} | null) => string;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { VisualQuestionDelegatePayload } from '../adapters/visual/protocol-contract.js';
|
|
1
2
|
import type { ProjectionQuery } from '../projection.js';
|
|
2
3
|
import type { NestingKind } from '../nesting.js';
|
|
3
4
|
import type { VisualLayoutSavePayload, VisualViewOperation } from '../adapters/visual/protocol-contract.js';
|
|
@@ -19,6 +20,8 @@ export interface VisualSession {
|
|
|
19
20
|
readonly connected: boolean;
|
|
20
21
|
readonly ask: (text: string) => void;
|
|
21
22
|
readonly choose: (optionId: string) => void;
|
|
23
|
+
/** Hands one open question to the agent on the socket (#515, ADR 0151). */
|
|
24
|
+
readonly delegate: (payload: VisualQuestionDelegatePayload) => void;
|
|
22
25
|
readonly navigate: (viewId: string) => void;
|
|
23
26
|
readonly filter: (query: ProjectionQuery, origin?: FilterSource,
|
|
24
27
|
/**
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type VisualAgentStatusPayload, type VisualAuthority, type VisualBrowserInput, type VisualChangesetCommitPayload, type VisualViewOperation, type VisualChoicePresentPayload, type VisualDiagnostic, type VisualHandoffSummary, type VisualLayoutSavePayload, type VisualLayoutSaveResultPayload, type VisualViewSummary } from "../adapters/visual/protocol-contract.js";
|
|
1
|
+
import { type VisualAgentStatusPayload, type VisualAuthority, type VisualBrowserInput, type VisualChangesetCommitPayload, type VisualViewOperation, type VisualChoicePresentPayload, type VisualDiagnostic, type VisualHandoffSummary, type VisualLayoutSavePayload, type VisualQuestionDelegatePayload, type VisualLayoutSaveResultPayload, type VisualViewSummary } from "../adapters/visual/protocol-contract.js";
|
|
2
2
|
import type { YarramateOperation } from "../operations.js";
|
|
3
3
|
import type { NestingKind } from "../nesting.js";
|
|
4
4
|
import type { ProjectionExclusion, ProjectionQuery } from "../projection.js";
|
|
@@ -292,6 +292,9 @@ export type VisualAppIntent = {
|
|
|
292
292
|
} | {
|
|
293
293
|
readonly kind: "save-layout";
|
|
294
294
|
readonly payload: VisualLayoutSavePayload;
|
|
295
|
+
} | {
|
|
296
|
+
readonly kind: "delegate";
|
|
297
|
+
readonly payload: VisualQuestionDelegatePayload;
|
|
295
298
|
};
|
|
296
299
|
/**
|
|
297
300
|
* One intent as the frame the server admits. Every frame carries the sequence
|
|
@@ -39,6 +39,17 @@ export type SelectedDiagramSubject = SelectedElement | SelectedRelationship;
|
|
|
39
39
|
export interface ConnectionDraft {
|
|
40
40
|
readonly from: string;
|
|
41
41
|
readonly to: string | null;
|
|
42
|
+
/**
|
|
43
|
+
* A question's answer shape, when the tool was armed from one (#515):
|
|
44
|
+
* the relationship kinds the trigger names, qualified, narrowing what the
|
|
45
|
+
* panel offers first; and which end the subject is. `incoming` means the
|
|
46
|
+
* drawn relationship runs from the target TO `from`, because the question
|
|
47
|
+
* asked what realizes, influences or serves this subject, not what it
|
|
48
|
+
* reaches. Absent on a tool armed by hand, which offers everything the
|
|
49
|
+
* table permits, from `from` to the target.
|
|
50
|
+
*/
|
|
51
|
+
readonly kinds?: readonly string[];
|
|
52
|
+
readonly direction?: "outgoing" | "incoming";
|
|
42
53
|
}
|
|
43
54
|
export declare const normalizeSelectedElement: (node: CanvasNode) => SelectedElement;
|
|
44
55
|
export declare const normalizeSelectedRelationship: (edge: CanvasEdge, nodeTitles: ReadonlyMap<string, string>) => SelectedRelationship;
|
|
@@ -305,6 +316,8 @@ export type VisualWorkspaceAction = {
|
|
|
305
316
|
} | {
|
|
306
317
|
readonly type: "connection.started";
|
|
307
318
|
readonly from: string;
|
|
319
|
+
readonly kinds?: readonly string[];
|
|
320
|
+
readonly direction?: "outgoing" | "incoming";
|
|
308
321
|
} | {
|
|
309
322
|
readonly type: "connection.targeted";
|
|
310
323
|
readonly to: string;
|
|
@@ -718,11 +718,23 @@ Harnesses that load MCP servers can connect the bundled read-only adapter:
|
|
|
718
718
|
}
|
|
719
719
|
```
|
|
720
720
|
|
|
721
|
-
It exposes `yarramate_ask` (orientation, free text, subject
|
|
722
|
-
projection path, with an optional token budget), `yarramate_design
|
|
723
|
-
|
|
724
|
-
|
|
725
|
-
|
|
721
|
+
It exposes the whole loop: `yarramate_ask` (orientation, free text, subject
|
|
722
|
+
ids, or a projection path, with an optional token budget), `yarramate_design`
|
|
723
|
+
(the top open question with its answer skeleton), `yarramate_apply` (one
|
|
724
|
+
`yarramate/operations/v1` document, landed as the same atomic batch the CLI
|
|
725
|
+
lands, refused whole on any invalid operation), `yarramate_check`,
|
|
726
|
+
`yarramate_reconcile`, and `yarramate_export` (markdown, rtm, graph and briefs
|
|
727
|
+
come back as text; xlsx and likec4 write where `out` says). Every tool call
|
|
728
|
+
executes the same stable CLI in the repository; `apply` is the only write, and
|
|
729
|
+
it changes exactly what the CLI would (ADR 0149).
|
|
730
|
+
|
|
731
|
+
`workspace` is optional on every tool. It defaults to the `--workspace` the
|
|
732
|
+
server was started with, then to `.yarramate/workspace.yaml` under the working
|
|
733
|
+
directory. A desktop app starts the server outside the repository, so give it
|
|
734
|
+
`--workspace /full/path/to/.yarramate/workspace.yaml`; the CLI then runs at
|
|
735
|
+
that repository's root, as a person would run it. Every tool description
|
|
736
|
+
carries the loop in two sentences, because a desktop-app agent has never read
|
|
737
|
+
the skill file.
|
|
726
738
|
|
|
727
739
|
## Continuous drift signal in CI
|
|
728
740
|
|