agentweaver 0.1.17 → 0.1.18
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 +104 -23
- package/dist/artifacts.js +41 -0
- package/dist/index.js +252 -27
- package/dist/interactive/controller.js +249 -13
- package/dist/interactive/ink/index.js +2 -2
- package/dist/interactive/state.js +1 -0
- package/dist/interactive/web/index.js +179 -0
- package/dist/interactive/web/protocol.js +154 -0
- package/dist/interactive/web/server.js +575 -0
- package/dist/interactive/web/static/app.js +709 -0
- package/dist/interactive/web/static/index.html +77 -0
- package/dist/interactive/web/static/styles.css +2 -0
- package/dist/interactive/web/static/styles.input.css +469 -0
- package/dist/pipeline/flow-catalog.js +4 -0
- package/dist/pipeline/flow-specs/auto-common-guided.json +313 -0
- package/dist/pipeline/flow-specs/auto-common.json +3 -1
- package/dist/pipeline/flow-specs/design-review/design-review-loop.json +2 -0
- package/dist/pipeline/flow-specs/design-review.json +2 -0
- package/dist/pipeline/flow-specs/implement.json +3 -1
- package/dist/pipeline/flow-specs/plan.json +4 -0
- package/dist/pipeline/flow-specs/playbook-init.json +199 -0
- package/dist/pipeline/flow-specs/review/review-fix.json +3 -1
- package/dist/pipeline/flow-specs/review/review-loop.json +4 -0
- package/dist/pipeline/flow-specs/review/review.json +2 -0
- package/dist/pipeline/node-registry.js +45 -0
- package/dist/pipeline/nodes/flow-run-node.js +13 -1
- package/dist/pipeline/nodes/playbook-ensure-node.js +115 -0
- package/dist/pipeline/nodes/playbook-inventory-node.js +51 -0
- package/dist/pipeline/nodes/playbook-questions-form-node.js +166 -0
- package/dist/pipeline/nodes/playbook-write-node.js +243 -0
- package/dist/pipeline/nodes/project-guidance-node.js +69 -0
- package/dist/pipeline/prompt-registry.js +4 -1
- package/dist/pipeline/prompt-runtime.js +6 -2
- package/dist/pipeline/spec-types.js +19 -0
- package/dist/pipeline/value-resolver.js +39 -1
- package/dist/playbook/practice-candidates.js +12 -0
- package/dist/playbook/repo-inventory.js +208 -0
- package/dist/prompts.js +31 -0
- package/dist/runtime/playbook.js +485 -0
- package/dist/runtime/project-guidance.js +339 -0
- package/dist/structured-artifact-schema-registry.js +8 -0
- package/dist/structured-artifact-schemas.json +235 -0
- package/dist/structured-artifacts.js +7 -1
- package/docs/declarative-workflows.md +565 -0
- package/docs/features.md +77 -0
- package/docs/playbook.md +327 -0
- package/package.json +8 -3
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
<!doctype html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8">
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
6
|
+
<title>AgentWeaver Operator Console</title>
|
|
7
|
+
<link rel="stylesheet" href="/static/styles.css">
|
|
8
|
+
</head>
|
|
9
|
+
<body>
|
|
10
|
+
<div class="app-shell">
|
|
11
|
+
<header class="topbar">
|
|
12
|
+
<div class="identity">
|
|
13
|
+
<h1 id="app-title">AgentWeaver</h1>
|
|
14
|
+
<p id="header-text">Waiting for session snapshot.</p>
|
|
15
|
+
</div>
|
|
16
|
+
<div class="status-strip" aria-label="Session status">
|
|
17
|
+
<span id="connection-state" class="connection connection-connecting">Connecting</span>
|
|
18
|
+
<span id="session-status">Idle</span>
|
|
19
|
+
</div>
|
|
20
|
+
<div class="topbar-actions">
|
|
21
|
+
<button id="run-button" type="button">Run</button>
|
|
22
|
+
<button id="interrupt-button" type="button">Interrupt</button>
|
|
23
|
+
<button id="help-button" type="button" aria-pressed="false">Help</button>
|
|
24
|
+
</div>
|
|
25
|
+
</header>
|
|
26
|
+
|
|
27
|
+
<main class="workspace">
|
|
28
|
+
<aside class="flows-pane" aria-label="Flows">
|
|
29
|
+
<div class="pane-heading">
|
|
30
|
+
<h2 id="flows-title">Flows</h2>
|
|
31
|
+
</div>
|
|
32
|
+
<div id="flows-list" class="flows-list" role="tree" tabindex="0"></div>
|
|
33
|
+
</aside>
|
|
34
|
+
|
|
35
|
+
<section class="details-pane" aria-label="Selected flow details">
|
|
36
|
+
<div class="pane-heading">
|
|
37
|
+
<h2>Flow Details</h2>
|
|
38
|
+
</div>
|
|
39
|
+
<pre id="description-text" class="text-panel compact">No flow selected.</pre>
|
|
40
|
+
<div class="split-panels">
|
|
41
|
+
<section class="work-panel" aria-label="Progress">
|
|
42
|
+
<div class="pane-heading">
|
|
43
|
+
<h2 id="progress-title">Progress</h2>
|
|
44
|
+
</div>
|
|
45
|
+
<pre id="progress-text" class="text-panel">No progress yet.</pre>
|
|
46
|
+
</section>
|
|
47
|
+
<section class="work-panel" aria-label="Task summary">
|
|
48
|
+
<div class="pane-heading">
|
|
49
|
+
<h2 id="summary-title">Task Summary</h2>
|
|
50
|
+
</div>
|
|
51
|
+
<pre id="summary-text" class="text-panel">No task summary yet.</pre>
|
|
52
|
+
</section>
|
|
53
|
+
</div>
|
|
54
|
+
</section>
|
|
55
|
+
|
|
56
|
+
<section class="log-pane" aria-label="Activity log">
|
|
57
|
+
<div class="pane-heading">
|
|
58
|
+
<h2 id="log-title">Activity</h2>
|
|
59
|
+
<button id="clear-log-button" type="button">Clear Log</button>
|
|
60
|
+
</div>
|
|
61
|
+
<pre id="log-text" class="text-panel log-output"></pre>
|
|
62
|
+
</section>
|
|
63
|
+
|
|
64
|
+
<section id="help-panel" class="help-panel" aria-label="Help" hidden>
|
|
65
|
+
<div class="pane-heading">
|
|
66
|
+
<h2>Help</h2>
|
|
67
|
+
<button id="close-help-button" type="button">Close</button>
|
|
68
|
+
</div>
|
|
69
|
+
<pre id="help-text" class="text-panel">No help is available.</pre>
|
|
70
|
+
</section>
|
|
71
|
+
</main>
|
|
72
|
+
</div>
|
|
73
|
+
|
|
74
|
+
<div id="modal-root" class="modal-root" aria-live="polite"></div>
|
|
75
|
+
<script src="/static/app.js" defer></script>
|
|
76
|
+
</body>
|
|
77
|
+
</html>
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
/*! tailwindcss v4.2.4 | MIT License | https://tailwindcss.com */
|
|
2
|
+
@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-font-weight:initial;--tw-leading:initial;--tw-tracking:initial;--tw-border-style:solid}}}@layer theme{:root,:host{--font-sans:ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--spacing:.25rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-xl:1.25rem;--text-xl--line-height:calc(1.75 / 1.25);--font-weight-semibold:600;--font-weight-bold:700;--tracking-normal:0em;--leading-tight:1.25;--radius-md:.375rem;--radius-lg:.5rem;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.visible{visibility:visible}.hidden{display:none}}:root{color-scheme:dark;--aw-bg:#070b0a;--aw-bg-soft:#0b1210;--aw-panel:#0f1714;--aw-panel-muted:#111d19;--aw-border:#22352e;--aw-border-strong:#36564a;--aw-text:#e8f3ed;--aw-muted:#91a79b;--aw-dim:#6f8379;--aw-accent:#38e08f;--aw-accent-strong:#7af7bd;--aw-accent-soft:#38e08f21;--aw-cyan:#65d8ff;--aw-danger:#ff6b6b;--aw-success:#38e08f;--aw-warning:#f2c94c;--aw-shadow:0 28px 90px #00000073;--aw-glow:0 0 0 1px #38e08f14, 0 18px 60px #38e08f14;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}*{box-sizing:border-box}[hidden]{display:none!important}html,body{height:100%}body{margin:calc(var(--spacing) * 0);background:linear-gradient(180deg, #38e08f14, transparent 24rem), radial-gradient(circle at 88% 8%, #65d8ff17, transparent 24rem), var(--aw-bg);color:var(--aw-text);overflow:hidden}button,input,select,textarea{font:inherit}button{min-height:calc(var(--spacing) * 8);justify-content:center;align-items:center;gap:calc(var(--spacing) * 2);border-radius:var(--radius-md);padding-inline:calc(var(--spacing) * 3);padding-block:calc(var(--spacing) * 1.5);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold);transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));border:1px solid var(--aw-border-strong);color:var(--aw-text);cursor:pointer;background:linear-gradient(#ffffff09,#ffffff04);display:inline-flex}button:hover,button:focus-visible{border-color:var(--aw-accent);color:var(--aw-accent-strong);outline:2px solid #0000;box-shadow:0 0 0 3px #38e08f1f}button.primary{color:var(--aw-accent-strong);background:linear-gradient(#38e08f42,#38e08f21);border-color:#38e08fbf}button.danger{color:#ffb3b3;border-color:#ff6b6bad}button:disabled{cursor:not-allowed;opacity:.48}.app-shell{grid-template-rows:auto minmax(0,1fr);height:100%;display:grid}.topbar{align-items:center;gap:calc(var(--spacing) * 4);padding-inline:calc(var(--spacing) * 4);padding-block:calc(var(--spacing) * 3);border-bottom:1px solid var(--aw-border);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);background:#070b0ae0;grid-template-columns:minmax(220px,1fr) auto auto;display:grid}.identity{min-width:0}h1,h2,p{letter-spacing:0;margin:0}h1{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height));--tw-leading:var(--leading-tight);line-height:var(--leading-tight);--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold);color:var(--aw-text)}h1:before{content:"▰";color:var(--aw-accent);margin-right:.55rem;font-size:.78em}h2{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold);--tw-tracking:var(--tracking-normal);letter-spacing:var(--tracking-normal);text-transform:uppercase;color:var(--aw-muted)}.identity p,.status-strip{color:var(--aw-muted);font-size:13px;line-height:1.35}.identity p{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.status-strip,.topbar-actions,.pane-heading,.modal-actions{align-items:center;gap:calc(var(--spacing) * 2);display:flex}.topbar-actions{justify-content:flex-end}.connection{min-width:calc(var(--spacing) * 24);padding-inline:calc(var(--spacing) * 2.5);padding-block:calc(var(--spacing) * 1);font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold);border:1px solid;border-radius:3.40282e38px;justify-content:center;display:inline-flex}.connection-connecting{color:var(--aw-warning);background:#f2c94c21}.connection-connected{color:var(--aw-success);background:#38e08f24}.connection-disconnected,.connection-error,.connection-closed{color:var(--aw-danger);background:#ff6b6b1f}.workspace{min-height:calc(var(--spacing) * 0);gap:calc(var(--spacing) * 3);padding:calc(var(--spacing) * 3);grid-template-columns:minmax(230px,300px) minmax(380px,1fr) minmax(300px,440px);display:grid}.flows-pane,.details-pane,.log-pane,.help-panel,.work-panel{min-height:calc(var(--spacing) * 0);border-radius:var(--radius-lg);border:1px solid var(--aw-border);box-shadow:var(--aw-glow);background:linear-gradient(#0f1714f5,#0a100ef5);grid-template-rows:auto minmax(0,1fr);display:grid;overflow:hidden}.details-pane{grid-template-rows:auto minmax(92px,.24fr) minmax(0,1fr);gap:10px}.split-panels{min-height:calc(var(--spacing) * 0);gap:calc(var(--spacing) * 3);grid-template-columns:minmax(0,1fr) minmax(0,1fr);display:grid}.pane-heading{min-height:calc(var(--spacing) * 10);padding-inline:calc(var(--spacing) * 3);padding-block:calc(var(--spacing) * 2);border-bottom:1px solid var(--aw-border);background:linear-gradient(#ffffff09,#ffffff03);justify-content:space-between}.flows-list{min-height:calc(var(--spacing) * 0);padding:calc(var(--spacing) * 2);overflow:auto}.flow-row{align-items:center;gap:calc(var(--spacing) * 2);border-radius:var(--radius-md);border-style:var(--tw-border-style);width:100%;padding-inline:calc(var(--spacing) * 2);padding-block:calc(var(--spacing) * 1.5);text-align:left;background-color:#0000;border-width:1px;border-color:#0000;grid-template-columns:20px minmax(0,1fr);min-height:36px;display:grid}.flow-row:hover,.flow-row:focus-visible{background:#38e08f14}.flow-row.selected{background:var(--aw-accent-soft);color:var(--aw-accent-strong);border-color:#38e08f9e}.flow-row.folder{font-weight:700}.flow-icon{color:var(--aw-dim);text-align:center}.flow-label{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.flow-meta{text-overflow:ellipsis;white-space:nowrap;color:var(--aw-dim);grid-column:2;font-size:11px;overflow:hidden}.text-panel{margin:calc(var(--spacing) * 0);min-height:calc(var(--spacing) * 0);padding:calc(var(--spacing) * 3);overflow-wrap:anywhere;white-space:pre-wrap;color:#d7eadf;background:#070b0a6b;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,Liberation Mono,monospace;font-size:12px;line-height:1.5;overflow:auto}.text-panel.compact{border-bottom:1px solid var(--aw-border)}.log-output{color:#d8f7e7;background:linear-gradient(#38e08f09,#0000 8rem),#050806}.help-panel{z-index:6;width:min(520px,100vw - 24px);max-height:calc(100vh - 88px);box-shadow:var(--aw-shadow);position:absolute;top:72px;right:12px}.modal-root:empty{display:none}.modal-root{inset:calc(var(--spacing) * 0);z-index:20;padding:calc(var(--spacing) * 5);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#020504b8;place-items:center;display:grid;position:fixed}.modal{border-radius:var(--radius-lg);border:1px solid var(--aw-border-strong);background:var(--aw-panel);width:min(720px,100%);max-height:min(760px,100vh - 40px);box-shadow:var(--aw-shadow);grid-template-rows:auto minmax(0,1fr) auto;display:grid}.modal.form-flow-routing-editor{width:min(940px,100%)}.modal-header,.modal-body,.modal-footer{padding:12px 14px}.modal-header{border-bottom:1px solid var(--aw-border)}.modal-header p,.field-help,.field-option small,.modal-note{color:var(--aw-muted);font-size:13px}.modal-body{min-height:calc(var(--spacing) * 0);gap:calc(var(--spacing) * 3);display:grid;overflow:auto}.modal-footer{justify-content:space-between;align-items:center;gap:calc(var(--spacing) * 3);border-top:1px solid var(--aw-border);display:flex}.modal-actions{flex-wrap:wrap;justify-content:flex-end}.form-fields{gap:calc(var(--spacing) * 3);display:grid}.form-fields.route-fields{gap:0}.field-pair{align-items:flex-start;gap:calc(var(--spacing) * 4);padding-block:calc(var(--spacing) * 3);border-bottom:1px solid var(--aw-border);grid-template-columns:minmax(220px,.9fr) minmax(280px,1.1fr);display:grid}.field-pair:first-child{padding-top:0}.field-pair:last-child{border-bottom:0;padding-bottom:0}.field{gap:calc(var(--spacing) * 1.5);display:grid}.field label,.field-title{font-weight:700}.field input[type=text],.field textarea,.field select{min-height:calc(var(--spacing) * 9);border-radius:var(--radius-md);width:100%;padding-inline:calc(var(--spacing) * 2.5);padding-block:calc(var(--spacing) * 2);border:1px solid var(--aw-border-strong);color:var(--aw-text);background:#070b0a}.field input[type=text]:focus,.field textarea:focus,.field select:focus{border-color:var(--aw-accent);outline:2px solid #0000;box-shadow:0 0 0 3px #38e08f1f}.field textarea{resize:vertical}.check-row,.field-option{align-items:flex-start;gap:calc(var(--spacing) * 2);display:flex}.option-list{gap:calc(var(--spacing) * 1.5);display:grid}.error-text{color:var(--aw-danger);font-weight:700}::selection{color:var(--aw-text);background:#38e08f52}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-thumb{background:#284137;border:2px solid #08100d;border-radius:999px}::-webkit-scrollbar-track{background:#08100d}@media (max-width:1080px){body{overflow:auto}.app-shell{height:auto;min-height:100%}.workspace{grid-template-rows:minmax(260px,42vh) minmax(320px,1fr);grid-template-columns:minmax(220px,.35fr) minmax(0,1fr)}.log-pane{grid-column:1/-1;min-height:320px}}@media (max-width:760px){.topbar{grid-template-columns:1fr;gap:10px}.status-strip,.topbar-actions{flex-wrap:wrap;justify-content:flex-start}.workspace,.split-panels{grid-template-columns:1fr}.workspace{grid-template-rows:260px 520px 340px}.field-pair{grid-template-columns:1fr;gap:12px}}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-leading{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}
|
|
@@ -0,0 +1,469 @@
|
|
|
1
|
+
@import "tailwindcss" source(none);
|
|
2
|
+
|
|
3
|
+
@source "./index.html";
|
|
4
|
+
@source "./app.js";
|
|
5
|
+
|
|
6
|
+
:root {
|
|
7
|
+
color-scheme: dark;
|
|
8
|
+
--aw-bg: #070b0a;
|
|
9
|
+
--aw-bg-soft: #0b1210;
|
|
10
|
+
--aw-panel: #0f1714;
|
|
11
|
+
--aw-panel-muted: #111d19;
|
|
12
|
+
--aw-border: #22352e;
|
|
13
|
+
--aw-border-strong: #36564a;
|
|
14
|
+
--aw-text: #e8f3ed;
|
|
15
|
+
--aw-muted: #91a79b;
|
|
16
|
+
--aw-dim: #6f8379;
|
|
17
|
+
--aw-accent: #38e08f;
|
|
18
|
+
--aw-accent-strong: #7af7bd;
|
|
19
|
+
--aw-accent-soft: rgba(56, 224, 143, 0.13);
|
|
20
|
+
--aw-cyan: #65d8ff;
|
|
21
|
+
--aw-danger: #ff6b6b;
|
|
22
|
+
--aw-success: #38e08f;
|
|
23
|
+
--aw-warning: #f2c94c;
|
|
24
|
+
--aw-shadow: 0 28px 90px rgba(0, 0, 0, 0.45);
|
|
25
|
+
--aw-glow: 0 0 0 1px rgba(56, 224, 143, 0.08), 0 18px 60px rgba(56, 224, 143, 0.08);
|
|
26
|
+
font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
* {
|
|
30
|
+
box-sizing: border-box;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
[hidden] {
|
|
34
|
+
display: none !important;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
html,
|
|
38
|
+
body {
|
|
39
|
+
height: 100%;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
body {
|
|
43
|
+
@apply m-0 overflow-hidden;
|
|
44
|
+
background:
|
|
45
|
+
linear-gradient(180deg, rgba(56, 224, 143, 0.08), transparent 24rem),
|
|
46
|
+
radial-gradient(circle at 88% 8%, rgba(101, 216, 255, 0.09), transparent 24rem),
|
|
47
|
+
var(--aw-bg);
|
|
48
|
+
color: var(--aw-text);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
button,
|
|
52
|
+
input,
|
|
53
|
+
select,
|
|
54
|
+
textarea {
|
|
55
|
+
font: inherit;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
button {
|
|
59
|
+
@apply inline-flex min-h-8 items-center justify-center gap-2 rounded-md px-3 py-1.5 text-sm font-semibold transition;
|
|
60
|
+
border: 1px solid var(--aw-border-strong);
|
|
61
|
+
background: linear-gradient(180deg, rgba(255, 255, 255, 0.035), rgba(255, 255, 255, 0.015));
|
|
62
|
+
color: var(--aw-text);
|
|
63
|
+
cursor: pointer;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
button:hover,
|
|
67
|
+
button:focus-visible {
|
|
68
|
+
border-color: var(--aw-accent);
|
|
69
|
+
color: var(--aw-accent-strong);
|
|
70
|
+
outline: 2px solid transparent;
|
|
71
|
+
box-shadow: 0 0 0 3px rgba(56, 224, 143, 0.12);
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
button.primary {
|
|
75
|
+
border-color: rgba(56, 224, 143, 0.75);
|
|
76
|
+
background: linear-gradient(180deg, rgba(56, 224, 143, 0.26), rgba(56, 224, 143, 0.13));
|
|
77
|
+
color: var(--aw-accent-strong);
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
button.danger {
|
|
81
|
+
border-color: rgba(255, 107, 107, 0.68);
|
|
82
|
+
color: #ffb3b3;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
button:disabled {
|
|
86
|
+
cursor: not-allowed;
|
|
87
|
+
opacity: 0.48;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
.app-shell {
|
|
91
|
+
@apply grid h-full;
|
|
92
|
+
grid-template-rows: auto minmax(0, 1fr);
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
.topbar {
|
|
96
|
+
@apply grid items-center gap-4 px-4 py-3;
|
|
97
|
+
grid-template-columns: minmax(220px, 1fr) auto auto;
|
|
98
|
+
border-bottom: 1px solid var(--aw-border);
|
|
99
|
+
background: rgba(7, 11, 10, 0.88);
|
|
100
|
+
backdrop-filter: blur(16px);
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
.identity {
|
|
104
|
+
min-width: 0;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
h1,
|
|
108
|
+
h2,
|
|
109
|
+
p {
|
|
110
|
+
margin: 0;
|
|
111
|
+
letter-spacing: 0;
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
h1 {
|
|
115
|
+
@apply text-xl font-semibold leading-tight;
|
|
116
|
+
color: var(--aw-text);
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
h1::before {
|
|
120
|
+
content: "▰";
|
|
121
|
+
margin-right: 0.55rem;
|
|
122
|
+
color: var(--aw-accent);
|
|
123
|
+
font-size: 0.78em;
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
h2 {
|
|
127
|
+
@apply text-xs font-bold uppercase tracking-normal;
|
|
128
|
+
color: var(--aw-muted);
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
.identity p,
|
|
132
|
+
.status-strip {
|
|
133
|
+
color: var(--aw-muted);
|
|
134
|
+
font-size: 13px;
|
|
135
|
+
line-height: 1.35;
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
.identity p {
|
|
139
|
+
@apply overflow-hidden text-ellipsis whitespace-nowrap;
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
.status-strip,
|
|
143
|
+
.topbar-actions,
|
|
144
|
+
.pane-heading,
|
|
145
|
+
.modal-actions {
|
|
146
|
+
@apply flex items-center gap-2;
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
.topbar-actions {
|
|
150
|
+
@apply justify-end;
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
.connection {
|
|
154
|
+
@apply inline-flex min-w-24 justify-center rounded-full px-2.5 py-1 text-xs font-bold;
|
|
155
|
+
border: 1px solid currentColor;
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
.connection-connecting {
|
|
159
|
+
color: var(--aw-warning);
|
|
160
|
+
background: rgba(242, 201, 76, 0.13);
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
.connection-connected {
|
|
164
|
+
color: var(--aw-success);
|
|
165
|
+
background: rgba(56, 224, 143, 0.14);
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
.connection-disconnected,
|
|
169
|
+
.connection-error,
|
|
170
|
+
.connection-closed {
|
|
171
|
+
color: var(--aw-danger);
|
|
172
|
+
background: rgba(255, 107, 107, 0.12);
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
.workspace {
|
|
176
|
+
@apply grid min-h-0 gap-3 p-3;
|
|
177
|
+
grid-template-columns: minmax(230px, 300px) minmax(380px, 1fr) minmax(300px, 440px);
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
.flows-pane,
|
|
181
|
+
.details-pane,
|
|
182
|
+
.log-pane,
|
|
183
|
+
.help-panel,
|
|
184
|
+
.work-panel {
|
|
185
|
+
@apply grid min-h-0 overflow-hidden rounded-lg;
|
|
186
|
+
grid-template-rows: auto minmax(0, 1fr);
|
|
187
|
+
border: 1px solid var(--aw-border);
|
|
188
|
+
background: linear-gradient(180deg, rgba(15, 23, 20, 0.96), rgba(10, 16, 14, 0.96));
|
|
189
|
+
box-shadow: var(--aw-glow);
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
.details-pane {
|
|
193
|
+
gap: 10px;
|
|
194
|
+
grid-template-rows: auto minmax(92px, 0.24fr) minmax(0, 1fr);
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
.split-panels {
|
|
198
|
+
@apply grid min-h-0 gap-3;
|
|
199
|
+
grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
.pane-heading {
|
|
203
|
+
@apply min-h-10 justify-between px-3 py-2;
|
|
204
|
+
border-bottom: 1px solid var(--aw-border);
|
|
205
|
+
background: linear-gradient(180deg, rgba(255, 255, 255, 0.035), rgba(255, 255, 255, 0.012));
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
.flows-list {
|
|
209
|
+
@apply min-h-0 overflow-auto p-2;
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
.flow-row {
|
|
213
|
+
@apply grid w-full items-center gap-2 rounded-md border border-transparent bg-transparent px-2 py-1.5 text-left;
|
|
214
|
+
grid-template-columns: 20px minmax(0, 1fr);
|
|
215
|
+
min-height: 36px;
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
.flow-row:hover,
|
|
219
|
+
.flow-row:focus-visible {
|
|
220
|
+
background: rgba(56, 224, 143, 0.08);
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
.flow-row.selected {
|
|
224
|
+
border-color: rgba(56, 224, 143, 0.62);
|
|
225
|
+
background: var(--aw-accent-soft);
|
|
226
|
+
color: var(--aw-accent-strong);
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
.flow-row.folder {
|
|
230
|
+
font-weight: 700;
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
.flow-icon {
|
|
234
|
+
color: var(--aw-dim);
|
|
235
|
+
text-align: center;
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
.flow-label {
|
|
239
|
+
@apply overflow-hidden text-ellipsis whitespace-nowrap;
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
.flow-meta {
|
|
243
|
+
@apply overflow-hidden text-ellipsis whitespace-nowrap;
|
|
244
|
+
grid-column: 2;
|
|
245
|
+
color: var(--aw-dim);
|
|
246
|
+
font-size: 11px;
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
.text-panel {
|
|
250
|
+
@apply m-0 min-h-0 overflow-auto p-3;
|
|
251
|
+
overflow-wrap: anywhere;
|
|
252
|
+
white-space: pre-wrap;
|
|
253
|
+
font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, "Liberation Mono", monospace;
|
|
254
|
+
font-size: 12px;
|
|
255
|
+
line-height: 1.5;
|
|
256
|
+
background: rgba(7, 11, 10, 0.42);
|
|
257
|
+
color: #d7eadf;
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
.text-panel.compact {
|
|
261
|
+
border-bottom: 1px solid var(--aw-border);
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
.log-output {
|
|
265
|
+
background:
|
|
266
|
+
linear-gradient(180deg, rgba(56, 224, 143, 0.035), transparent 8rem),
|
|
267
|
+
#050806;
|
|
268
|
+
color: #d8f7e7;
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
.help-panel {
|
|
272
|
+
position: absolute;
|
|
273
|
+
top: 72px;
|
|
274
|
+
right: 12px;
|
|
275
|
+
width: min(520px, calc(100vw - 24px));
|
|
276
|
+
max-height: calc(100vh - 88px);
|
|
277
|
+
z-index: 6;
|
|
278
|
+
box-shadow: var(--aw-shadow);
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
.modal-root:empty {
|
|
282
|
+
display: none;
|
|
283
|
+
}
|
|
284
|
+
|
|
285
|
+
.modal-root {
|
|
286
|
+
@apply fixed inset-0 z-20 grid place-items-center p-5;
|
|
287
|
+
background: rgba(2, 5, 4, 0.72);
|
|
288
|
+
backdrop-filter: blur(8px);
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
.modal {
|
|
292
|
+
@apply grid w-full rounded-lg;
|
|
293
|
+
width: min(720px, 100%);
|
|
294
|
+
max-height: min(760px, calc(100vh - 40px));
|
|
295
|
+
grid-template-rows: auto minmax(0, 1fr) auto;
|
|
296
|
+
border: 1px solid var(--aw-border-strong);
|
|
297
|
+
background: var(--aw-panel);
|
|
298
|
+
box-shadow: var(--aw-shadow);
|
|
299
|
+
}
|
|
300
|
+
|
|
301
|
+
.modal.form-flow-routing-editor {
|
|
302
|
+
width: min(940px, 100%);
|
|
303
|
+
}
|
|
304
|
+
|
|
305
|
+
.modal-header,
|
|
306
|
+
.modal-body,
|
|
307
|
+
.modal-footer {
|
|
308
|
+
padding: 12px 14px;
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
.modal-header {
|
|
312
|
+
border-bottom: 1px solid var(--aw-border);
|
|
313
|
+
}
|
|
314
|
+
|
|
315
|
+
.modal-header p,
|
|
316
|
+
.field-help,
|
|
317
|
+
.field-option small,
|
|
318
|
+
.modal-note {
|
|
319
|
+
color: var(--aw-muted);
|
|
320
|
+
font-size: 13px;
|
|
321
|
+
}
|
|
322
|
+
|
|
323
|
+
.modal-body {
|
|
324
|
+
@apply grid min-h-0 gap-3 overflow-auto;
|
|
325
|
+
}
|
|
326
|
+
|
|
327
|
+
.modal-footer {
|
|
328
|
+
@apply flex items-center justify-between gap-3;
|
|
329
|
+
border-top: 1px solid var(--aw-border);
|
|
330
|
+
}
|
|
331
|
+
|
|
332
|
+
.modal-actions {
|
|
333
|
+
@apply flex-wrap justify-end;
|
|
334
|
+
}
|
|
335
|
+
|
|
336
|
+
.form-fields {
|
|
337
|
+
@apply grid gap-3;
|
|
338
|
+
}
|
|
339
|
+
|
|
340
|
+
.form-fields.route-fields {
|
|
341
|
+
gap: 0;
|
|
342
|
+
}
|
|
343
|
+
|
|
344
|
+
.field-pair {
|
|
345
|
+
@apply grid items-start gap-4 py-3;
|
|
346
|
+
grid-template-columns: minmax(220px, 0.9fr) minmax(280px, 1.1fr);
|
|
347
|
+
border-bottom: 1px solid var(--aw-border);
|
|
348
|
+
}
|
|
349
|
+
|
|
350
|
+
.field-pair:first-child {
|
|
351
|
+
padding-top: 0;
|
|
352
|
+
}
|
|
353
|
+
|
|
354
|
+
.field-pair:last-child {
|
|
355
|
+
border-bottom: 0;
|
|
356
|
+
padding-bottom: 0;
|
|
357
|
+
}
|
|
358
|
+
|
|
359
|
+
.field {
|
|
360
|
+
@apply grid gap-1.5;
|
|
361
|
+
}
|
|
362
|
+
|
|
363
|
+
.field label,
|
|
364
|
+
.field-title {
|
|
365
|
+
font-weight: 700;
|
|
366
|
+
}
|
|
367
|
+
|
|
368
|
+
.field input[type="text"],
|
|
369
|
+
.field textarea,
|
|
370
|
+
.field select {
|
|
371
|
+
@apply min-h-9 w-full rounded-md px-2.5 py-2;
|
|
372
|
+
border: 1px solid var(--aw-border-strong);
|
|
373
|
+
background: #070b0a;
|
|
374
|
+
color: var(--aw-text);
|
|
375
|
+
}
|
|
376
|
+
|
|
377
|
+
.field input[type="text"]:focus,
|
|
378
|
+
.field textarea:focus,
|
|
379
|
+
.field select:focus {
|
|
380
|
+
border-color: var(--aw-accent);
|
|
381
|
+
outline: 2px solid transparent;
|
|
382
|
+
box-shadow: 0 0 0 3px rgba(56, 224, 143, 0.12);
|
|
383
|
+
}
|
|
384
|
+
|
|
385
|
+
.field textarea {
|
|
386
|
+
resize: vertical;
|
|
387
|
+
}
|
|
388
|
+
|
|
389
|
+
.check-row,
|
|
390
|
+
.field-option {
|
|
391
|
+
@apply flex items-start gap-2;
|
|
392
|
+
}
|
|
393
|
+
|
|
394
|
+
.option-list {
|
|
395
|
+
@apply grid gap-1.5;
|
|
396
|
+
}
|
|
397
|
+
|
|
398
|
+
.error-text {
|
|
399
|
+
color: var(--aw-danger);
|
|
400
|
+
font-weight: 700;
|
|
401
|
+
}
|
|
402
|
+
|
|
403
|
+
::selection {
|
|
404
|
+
background: rgba(56, 224, 143, 0.32);
|
|
405
|
+
color: var(--aw-text);
|
|
406
|
+
}
|
|
407
|
+
|
|
408
|
+
::-webkit-scrollbar {
|
|
409
|
+
width: 10px;
|
|
410
|
+
height: 10px;
|
|
411
|
+
}
|
|
412
|
+
|
|
413
|
+
::-webkit-scrollbar-thumb {
|
|
414
|
+
background: #284137;
|
|
415
|
+
border: 2px solid #08100d;
|
|
416
|
+
border-radius: 999px;
|
|
417
|
+
}
|
|
418
|
+
|
|
419
|
+
::-webkit-scrollbar-track {
|
|
420
|
+
background: #08100d;
|
|
421
|
+
}
|
|
422
|
+
|
|
423
|
+
@media (max-width: 1080px) {
|
|
424
|
+
body {
|
|
425
|
+
overflow: auto;
|
|
426
|
+
}
|
|
427
|
+
|
|
428
|
+
.app-shell {
|
|
429
|
+
min-height: 100%;
|
|
430
|
+
height: auto;
|
|
431
|
+
}
|
|
432
|
+
|
|
433
|
+
.workspace {
|
|
434
|
+
grid-template-columns: minmax(220px, 0.35fr) minmax(0, 1fr);
|
|
435
|
+
grid-template-rows: minmax(260px, 42vh) minmax(320px, 1fr);
|
|
436
|
+
}
|
|
437
|
+
|
|
438
|
+
.log-pane {
|
|
439
|
+
grid-column: 1 / -1;
|
|
440
|
+
min-height: 320px;
|
|
441
|
+
}
|
|
442
|
+
}
|
|
443
|
+
|
|
444
|
+
@media (max-width: 760px) {
|
|
445
|
+
.topbar {
|
|
446
|
+
grid-template-columns: 1fr;
|
|
447
|
+
gap: 10px;
|
|
448
|
+
}
|
|
449
|
+
|
|
450
|
+
.status-strip,
|
|
451
|
+
.topbar-actions {
|
|
452
|
+
justify-content: flex-start;
|
|
453
|
+
flex-wrap: wrap;
|
|
454
|
+
}
|
|
455
|
+
|
|
456
|
+
.workspace,
|
|
457
|
+
.split-panels {
|
|
458
|
+
grid-template-columns: 1fr;
|
|
459
|
+
}
|
|
460
|
+
|
|
461
|
+
.workspace {
|
|
462
|
+
grid-template-rows: 260px 520px 340px;
|
|
463
|
+
}
|
|
464
|
+
|
|
465
|
+
.field-pair {
|
|
466
|
+
grid-template-columns: 1fr;
|
|
467
|
+
gap: 12px;
|
|
468
|
+
}
|
|
469
|
+
}
|
|
@@ -5,6 +5,7 @@ import { collectFlowRoutingGroups, loadDeclarativeFlow } from "./declarative-flo
|
|
|
5
5
|
import { globalFlowSpecsDir, listBuiltInFlowSpecFiles, listGlobalFlowSpecFiles, listProjectFlowSpecFiles, projectFlowSpecsDir } from "./spec-loader.js";
|
|
6
6
|
export const BUILT_IN_COMMAND_FLOW_IDS = [
|
|
7
7
|
"auto-golang",
|
|
8
|
+
"auto-common-guided",
|
|
8
9
|
"auto-common",
|
|
9
10
|
"auto-simple",
|
|
10
11
|
"bug-analyze",
|
|
@@ -17,6 +18,7 @@ export const BUILT_IN_COMMAND_FLOW_IDS = [
|
|
|
17
18
|
"mr-description",
|
|
18
19
|
"plan",
|
|
19
20
|
"plan-revise",
|
|
21
|
+
"playbook-init",
|
|
20
22
|
"task-describe",
|
|
21
23
|
"implement",
|
|
22
24
|
"review",
|
|
@@ -27,6 +29,7 @@ export const BUILT_IN_COMMAND_FLOW_IDS = [
|
|
|
27
29
|
];
|
|
28
30
|
const BUILT_IN_COMMAND_FLOW_FILES = {
|
|
29
31
|
"auto-golang": "auto-golang.json",
|
|
32
|
+
"auto-common-guided": "auto-common-guided.json",
|
|
30
33
|
"auto-common": "auto-common.json",
|
|
31
34
|
"auto-simple": "auto-simple.json",
|
|
32
35
|
"bug-analyze": "bugz/bug-analyze.json",
|
|
@@ -39,6 +42,7 @@ const BUILT_IN_COMMAND_FLOW_FILES = {
|
|
|
39
42
|
"mr-description": "gitlab/mr-description.json",
|
|
40
43
|
plan: "plan.json",
|
|
41
44
|
"plan-revise": "plan-revise.json",
|
|
45
|
+
"playbook-init": "playbook-init.json",
|
|
42
46
|
"task-describe": "task-describe.json",
|
|
43
47
|
implement: "implement.json",
|
|
44
48
|
review: "review/review.json",
|