@honeybee-ai/incubator 1.1.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 +586 -0
- package/dashboard/dist/assets/index-DFb8p7xI.js +9 -0
- package/dashboard/dist/assets/index-RKiEoHEo.css +1 -0
- package/dashboard/dist/index.html +13 -0
- package/dist/agent/acp/claim-manager.d.ts +24 -0
- package/dist/agent/acp/claim-manager.js +64 -0
- package/dist/agent/acp/claim-manager.js.map +1 -0
- package/dist/agent/acp/direct-runtime.d.ts +90 -0
- package/dist/agent/acp/direct-runtime.js +364 -0
- package/dist/agent/acp/direct-runtime.js.map +1 -0
- package/dist/agent/acp/event-client.d.ts +20 -0
- package/dist/agent/acp/event-client.js +60 -0
- package/dist/agent/acp/event-client.js.map +1 -0
- package/dist/agent/acp/event-matcher.d.ts +13 -0
- package/dist/agent/acp/event-matcher.js +31 -0
- package/dist/agent/acp/event-matcher.js.map +1 -0
- package/dist/agent/acp/progress.d.ts +23 -0
- package/dist/agent/acp/progress.js +54 -0
- package/dist/agent/acp/progress.js.map +1 -0
- package/dist/agent/acp/runtime.d.ts +156 -0
- package/dist/agent/acp/runtime.js +337 -0
- package/dist/agent/acp/runtime.js.map +1 -0
- package/dist/agent/acp/ws-event-client.d.ts +64 -0
- package/dist/agent/acp/ws-event-client.js +263 -0
- package/dist/agent/acp/ws-event-client.js.map +1 -0
- package/dist/agent/agent.d.ts +60 -0
- package/dist/agent/agent.js +121 -0
- package/dist/agent/agent.js.map +1 -0
- package/dist/agent/cli.d.ts +2 -0
- package/dist/agent/cli.js +311 -0
- package/dist/agent/cli.js.map +1 -0
- package/dist/agent/mcp-client.d.ts +37 -0
- package/dist/agent/mcp-client.js +92 -0
- package/dist/agent/mcp-client.js.map +1 -0
- package/dist/agent/mock-runner.d.ts +14 -0
- package/dist/agent/mock-runner.js +159 -0
- package/dist/agent/mock-runner.js.map +1 -0
- package/dist/agent/native-client.d.ts +18 -0
- package/dist/agent/native-client.js +42 -0
- package/dist/agent/native-client.js.map +1 -0
- package/dist/agent/prompt.d.ts +45 -0
- package/dist/agent/prompt.js +115 -0
- package/dist/agent/prompt.js.map +1 -0
- package/dist/agent/providers.d.ts +25 -0
- package/dist/agent/providers.js +696 -0
- package/dist/agent/providers.js.map +1 -0
- package/dist/agent/runner.d.ts +15 -0
- package/dist/agent/runner.js +625 -0
- package/dist/agent/runner.js.map +1 -0
- package/dist/agent/tool-client.d.ts +12 -0
- package/dist/agent/tool-client.js +2 -0
- package/dist/agent/tool-client.js.map +1 -0
- package/dist/agent/types.d.ts +116 -0
- package/dist/agent/types.js +2 -0
- package/dist/agent/types.js.map +1 -0
- package/dist/agent-pool.d.ts +44 -0
- package/dist/agent-pool.js +228 -0
- package/dist/agent-pool.js.map +1 -0
- package/dist/bin.d.ts +2 -0
- package/dist/bin.js +7 -0
- package/dist/bin.js.map +1 -0
- package/dist/bus.d.ts +24 -0
- package/dist/bus.js +79 -0
- package/dist/bus.js.map +1 -0
- package/dist/dances.d.ts +73 -0
- package/dist/dances.js +122 -0
- package/dist/dances.js.map +1 -0
- package/dist/guard.d.ts +52 -0
- package/dist/guard.js +210 -0
- package/dist/guard.js.map +1 -0
- package/dist/heartbeat.d.ts +41 -0
- package/dist/heartbeat.js +104 -0
- package/dist/heartbeat.js.map +1 -0
- package/dist/honeycomb.d.ts +63 -0
- package/dist/honeycomb.js +222 -0
- package/dist/honeycomb.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +601 -0
- package/dist/index.js.map +1 -0
- package/dist/integrations/config.d.ts +15 -0
- package/dist/integrations/config.js +62 -0
- package/dist/integrations/config.js.map +1 -0
- package/dist/integrations/index.d.ts +4 -0
- package/dist/integrations/index.js +4 -0
- package/dist/integrations/index.js.map +1 -0
- package/dist/integrations/loader.d.ts +8 -0
- package/dist/integrations/loader.js +27 -0
- package/dist/integrations/loader.js.map +1 -0
- package/dist/integrations/manager.d.ts +29 -0
- package/dist/integrations/manager.js +108 -0
- package/dist/integrations/manager.js.map +1 -0
- package/dist/log.d.ts +25 -0
- package/dist/log.js +67 -0
- package/dist/log.js.map +1 -0
- package/dist/namespaces.d.ts +28 -0
- package/dist/namespaces.js +100 -0
- package/dist/namespaces.js.map +1 -0
- package/dist/orchestrator.d.ts +119 -0
- package/dist/orchestrator.js +463 -0
- package/dist/orchestrator.js.map +1 -0
- package/dist/persistence.d.ts +7 -0
- package/dist/persistence.js +62 -0
- package/dist/persistence.js.map +1 -0
- package/dist/plugins/index.d.ts +2 -0
- package/dist/plugins/index.js +3 -0
- package/dist/plugins/index.js.map +1 -0
- package/dist/plugins/loader.d.ts +12 -0
- package/dist/plugins/loader.js +122 -0
- package/dist/plugins/loader.js.map +1 -0
- package/dist/plugins/manager.d.ts +76 -0
- package/dist/plugins/manager.js +238 -0
- package/dist/plugins/manager.js.map +1 -0
- package/dist/propolis/guard.d.ts +23 -0
- package/dist/propolis/guard.js +49 -0
- package/dist/propolis/guard.js.map +1 -0
- package/dist/propolis/tools/types.d.ts +9 -0
- package/dist/propolis/tools/types.js +9 -0
- package/dist/propolis/tools/types.js.map +1 -0
- package/dist/rest.d.ts +4 -0
- package/dist/rest.js +962 -0
- package/dist/rest.js.map +1 -0
- package/dist/run-watcher.d.ts +20 -0
- package/dist/run-watcher.js +74 -0
- package/dist/run-watcher.js.map +1 -0
- package/dist/server.d.ts +17 -0
- package/dist/server.js +412 -0
- package/dist/server.js.map +1 -0
- package/dist/stores/backend.d.ts +15 -0
- package/dist/stores/backend.js +28 -0
- package/dist/stores/backend.js.map +1 -0
- package/dist/stores/claims.d.ts +14 -0
- package/dist/stores/claims.js +77 -0
- package/dist/stores/claims.js.map +1 -0
- package/dist/stores/conflicts.d.ts +10 -0
- package/dist/stores/conflicts.js +39 -0
- package/dist/stores/conflicts.js.map +1 -0
- package/dist/stores/control.d.ts +37 -0
- package/dist/stores/control.js +105 -0
- package/dist/stores/control.js.map +1 -0
- package/dist/stores/discoveries.d.ts +11 -0
- package/dist/stores/discoveries.js +45 -0
- package/dist/stores/discoveries.js.map +1 -0
- package/dist/stores/events.d.ts +14 -0
- package/dist/stores/events.js +42 -0
- package/dist/stores/events.js.map +1 -0
- package/dist/stores/help.d.ts +11 -0
- package/dist/stores/help.js +46 -0
- package/dist/stores/help.js.map +1 -0
- package/dist/stores/interfaces.d.ts +125 -0
- package/dist/stores/interfaces.js +2 -0
- package/dist/stores/interfaces.js.map +1 -0
- package/dist/stores/messages.d.ts +8 -0
- package/dist/stores/messages.js +29 -0
- package/dist/stores/messages.js.map +1 -0
- package/dist/stores/progress.d.ts +8 -0
- package/dist/stores/progress.js +21 -0
- package/dist/stores/progress.js.map +1 -0
- package/dist/stores/proposals.d.ts +11 -0
- package/dist/stores/proposals.js +46 -0
- package/dist/stores/proposals.js.map +1 -0
- package/dist/stores/redis/claims.d.ts +16 -0
- package/dist/stores/redis/claims.js +126 -0
- package/dist/stores/redis/claims.js.map +1 -0
- package/dist/stores/redis/db.d.ts +39 -0
- package/dist/stores/redis/db.js +34 -0
- package/dist/stores/redis/db.js.map +1 -0
- package/dist/stores/redis/discoveries.d.ts +13 -0
- package/dist/stores/redis/discoveries.js +54 -0
- package/dist/stores/redis/discoveries.js.map +1 -0
- package/dist/stores/redis/events.d.ts +17 -0
- package/dist/stores/redis/events.js +57 -0
- package/dist/stores/redis/events.js.map +1 -0
- package/dist/stores/redis/index.d.ts +3 -0
- package/dist/stores/redis/index.js +31 -0
- package/dist/stores/redis/index.js.map +1 -0
- package/dist/stores/redis/state.d.ts +14 -0
- package/dist/stores/redis/state.js +83 -0
- package/dist/stores/redis/state.js.map +1 -0
- package/dist/stores/reinforcements.d.ts +11 -0
- package/dist/stores/reinforcements.js +42 -0
- package/dist/stores/reinforcements.js.map +1 -0
- package/dist/stores/roles.d.ts +9 -0
- package/dist/stores/roles.js +22 -0
- package/dist/stores/roles.js.map +1 -0
- package/dist/stores/runs.d.ts +15 -0
- package/dist/stores/runs.js +50 -0
- package/dist/stores/runs.js.map +1 -0
- package/dist/stores/sqlite/claims.d.ts +17 -0
- package/dist/stores/sqlite/claims.js +121 -0
- package/dist/stores/sqlite/claims.js.map +1 -0
- package/dist/stores/sqlite/db.d.ts +16 -0
- package/dist/stores/sqlite/db.js +77 -0
- package/dist/stores/sqlite/db.js.map +1 -0
- package/dist/stores/sqlite/discoveries.d.ts +14 -0
- package/dist/stores/sqlite/discoveries.js +66 -0
- package/dist/stores/sqlite/discoveries.js.map +1 -0
- package/dist/stores/sqlite/events.d.ts +16 -0
- package/dist/stores/sqlite/events.js +75 -0
- package/dist/stores/sqlite/events.js.map +1 -0
- package/dist/stores/sqlite/index.d.ts +2 -0
- package/dist/stores/sqlite/index.js +33 -0
- package/dist/stores/sqlite/index.js.map +1 -0
- package/dist/stores/sqlite/state.d.ts +15 -0
- package/dist/stores/sqlite/state.js +99 -0
- package/dist/stores/sqlite/state.js.map +1 -0
- package/dist/stores/state.d.ts +11 -0
- package/dist/stores/state.js +67 -0
- package/dist/stores/state.js.map +1 -0
- package/dist/transports/broker.d.ts +20 -0
- package/dist/transports/broker.js +102 -0
- package/dist/transports/broker.js.map +1 -0
- package/dist/transports/index.d.ts +3 -0
- package/dist/transports/index.js +3 -0
- package/dist/transports/index.js.map +1 -0
- package/dist/transports/ipc.d.ts +26 -0
- package/dist/transports/ipc.js +93 -0
- package/dist/transports/ipc.js.map +1 -0
- package/dist/transports/types.d.ts +39 -0
- package/dist/transports/types.js +8 -0
- package/dist/transports/types.js.map +1 -0
- package/dist/types.d.ts +45 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/dist/utils.d.ts +3 -0
- package/dist/utils.js +36 -0
- package/dist/utils.js.map +1 -0
- package/dist/waggle/client.d.ts +16 -0
- package/dist/waggle/client.js +28 -0
- package/dist/waggle/client.js.map +1 -0
- package/dist/waggle/compound.d.ts +22 -0
- package/dist/waggle/compound.js +194 -0
- package/dist/waggle/compound.js.map +1 -0
- package/dist/waggle/index.d.ts +25 -0
- package/dist/waggle/index.js +77 -0
- package/dist/waggle/index.js.map +1 -0
- package/dist/waggle/types.d.ts +54 -0
- package/dist/waggle/types.js +2 -0
- package/dist/waggle/types.js.map +1 -0
- package/dist/webhooks.d.ts +26 -0
- package/dist/webhooks.js +79 -0
- package/dist/webhooks.js.map +1 -0
- package/dist/ws.d.ts +33 -0
- package/dist/ws.js +195 -0
- package/dist/ws.js.map +1 -0
- package/package.json +122 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
@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-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-space-y-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-duration:initial}}}@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;--color-red-400:oklch(70.4% .191 22.216);--color-red-500:oklch(63.7% .237 25.331);--color-orange-400:oklch(75% .183 55.934);--color-orange-500:oklch(70.5% .213 47.604);--color-amber-400:oklch(82.8% .189 84.429);--color-amber-500:oklch(76.9% .188 70.08);--color-yellow-400:oklch(85.2% .199 91.936);--color-yellow-500:oklch(79.5% .184 86.047);--color-green-500:oklch(72.3% .219 149.579);--color-emerald-400:oklch(76.5% .177 163.223);--color-emerald-500:oklch(69.6% .17 162.48);--color-teal-400:oklch(77.7% .152 181.912);--color-teal-500:oklch(70.4% .14 182.503);--color-cyan-400:oklch(78.9% .154 211.53);--color-cyan-500:oklch(71.5% .143 215.221);--color-sky-400:oklch(74.6% .16 232.661);--color-sky-500:oklch(68.5% .169 237.323);--color-blue-400:oklch(70.7% .165 254.624);--color-blue-500:oklch(62.3% .214 259.815);--color-indigo-400:oklch(67.3% .182 276.935);--color-indigo-500:oklch(58.5% .233 277.117);--color-violet-400:oklch(70.2% .183 293.541);--color-violet-500:oklch(60.6% .25 292.717);--color-purple-400:oklch(71.4% .203 305.504);--color-purple-500:oklch(62.7% .265 303.9);--spacing:.25rem;--text-xs:.75rem;--text-xs--line-height:calc(1/.75);--text-sm:.875rem;--text-sm--line-height:calc(1.25/.875);--text-lg:1.125rem;--text-lg--line-height:calc(1.75/1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75/1.25);--font-weight-medium:500;--font-weight-semibold:600;--tracking-tight:-.025em;--tracking-wider:.05em;--leading-relaxed:1.625;--radius-md:.375rem;--radius-lg:.5rem;--animate-spin:spin 1s linear infinite;--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);--color-background:oklch(14.5% .015 285);--color-foreground:oklch(95% .005 285);--color-card:oklch(18.5% .015 285);--color-primary:oklch(70% .15 160);--color-secondary:oklch(22% .015 285);--color-secondary-foreground:oklch(90% .005 285);--color-muted:oklch(22% .015 285);--color-muted-foreground:oklch(60% .015 285);--color-accent:oklch(25% .02 285);--color-accent-foreground:oklch(90% .005 285);--color-border:oklch(28% .015 285);--color-ring:oklch(70% .15 160)}}@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;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}*{border-color:var(--color-border)}body{background-color:var(--color-background);color:var(--color-foreground);font-family:Inter,system-ui,-apple-system,sans-serif}}@layer components;@layer utilities{.absolute{position:absolute}.relative{position:relative}.top-1\/2{top:50%}.left-2\.5{left:calc(var(--spacing)*2.5)}.-mx-1{margin-inline:calc(var(--spacing)*-1)}.mx-auto{margin-inline:auto}.mt-1{margin-top:calc(var(--spacing)*1)}.mt-2{margin-top:calc(var(--spacing)*2)}.mr-1{margin-right:calc(var(--spacing)*1)}.mb-1{margin-bottom:calc(var(--spacing)*1)}.mb-2{margin-bottom:calc(var(--spacing)*2)}.ml-1{margin-left:calc(var(--spacing)*1)}.ml-auto{margin-left:auto}.flex{display:flex}.grid{display:grid}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.h-1{height:calc(var(--spacing)*1)}.h-1\.5{height:calc(var(--spacing)*1.5)}.h-2{height:calc(var(--spacing)*2)}.h-3{height:calc(var(--spacing)*3)}.h-3\.5{height:calc(var(--spacing)*3.5)}.h-4{height:calc(var(--spacing)*4)}.h-9{height:calc(var(--spacing)*9)}.h-10{height:calc(var(--spacing)*10)}.h-12{height:calc(var(--spacing)*12)}.h-64{height:calc(var(--spacing)*64)}.h-full{height:100%}.h-screen{height:100vh}.w-2{width:calc(var(--spacing)*2)}.w-3{width:calc(var(--spacing)*3)}.w-3\.5{width:calc(var(--spacing)*3.5)}.w-10{width:calc(var(--spacing)*10)}.w-12{width:calc(var(--spacing)*12)}.w-16{width:calc(var(--spacing)*16)}.w-36{width:calc(var(--spacing)*36)}.w-52{width:calc(var(--spacing)*52)}.w-full{width:100%}.max-w-\[300px\]{max-width:300px}.min-w-0{min-width:calc(var(--spacing)*0)}.flex-1{flex:1}.shrink-0{flex-shrink:0}.-translate-y-1\/2{--tw-translate-y: -50% ;translate:var(--tw-translate-x)var(--tw-translate-y)}.animate-spin{animation:var(--animate-spin)}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.gap-1{gap:calc(var(--spacing)*1)}.gap-1\.5{gap:calc(var(--spacing)*1.5)}.gap-2{gap:calc(var(--spacing)*2)}.gap-2\.5{gap:calc(var(--spacing)*2.5)}.gap-3{gap:calc(var(--spacing)*3)}.gap-4{gap:calc(var(--spacing)*4)}:where(.space-y-0\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*.5)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*.5)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*1)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*1)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*1.5)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*1.5)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*2)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*2)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*3)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*3)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*4)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*4)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-6>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*6)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*6)*calc(1 - var(--tw-space-y-reverse)))}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.border{border-style:var(--tw-border-style);border-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-border{border-color:var(--color-border)}.border-border\/50{border-color:#28283080}@supports (color:color-mix(in lab,red,red)){.border-border\/50{border-color:color-mix(in oklab,var(--color-border)50%,transparent)}}.border-primary{border-color:var(--color-primary)}.border-primary\/30{border-color:#23ba7d4d}@supports (color:color-mix(in lab,red,red)){.border-primary\/30{border-color:color-mix(in oklab,var(--color-primary)30%,transparent)}}.border-red-500\/30{border-color:#fb2c364d}@supports (color:color-mix(in lab,red,red)){.border-red-500\/30{border-color:color-mix(in oklab,var(--color-red-500)30%,transparent)}}.bg-amber-500\/15{background-color:#f99c0026}@supports (color:color-mix(in lab,red,red)){.bg-amber-500\/15{background-color:color-mix(in oklab,var(--color-amber-500)15%,transparent)}}.bg-blue-500\/15{background-color:#3080ff26}@supports (color:color-mix(in lab,red,red)){.bg-blue-500\/15{background-color:color-mix(in oklab,var(--color-blue-500)15%,transparent)}}.bg-card{background-color:var(--color-card)}.bg-cyan-500\/15{background-color:#00b7d726}@supports (color:color-mix(in lab,red,red)){.bg-cyan-500\/15{background-color:color-mix(in oklab,var(--color-cyan-500)15%,transparent)}}.bg-emerald-500{background-color:var(--color-emerald-500)}.bg-emerald-500\/15{background-color:#00bb7f26}@supports (color:color-mix(in lab,red,red)){.bg-emerald-500\/15{background-color:color-mix(in oklab,var(--color-emerald-500)15%,transparent)}}.bg-indigo-500\/15{background-color:#625fff26}@supports (color:color-mix(in lab,red,red)){.bg-indigo-500\/15{background-color:color-mix(in oklab,var(--color-indigo-500)15%,transparent)}}.bg-muted{background-color:var(--color-muted)}.bg-orange-500\/15{background-color:#fe6e0026}@supports (color:color-mix(in lab,red,red)){.bg-orange-500\/15{background-color:color-mix(in oklab,var(--color-orange-500)15%,transparent)}}.bg-primary{background-color:var(--color-primary)}.bg-primary\/10{background-color:#23ba7d1a}@supports (color:color-mix(in lab,red,red)){.bg-primary\/10{background-color:color-mix(in oklab,var(--color-primary)10%,transparent)}}.bg-primary\/15{background-color:#23ba7d26}@supports (color:color-mix(in lab,red,red)){.bg-primary\/15{background-color:color-mix(in oklab,var(--color-primary)15%,transparent)}}.bg-primary\/40{background-color:#23ba7d66}@supports (color:color-mix(in lab,red,red)){.bg-primary\/40{background-color:color-mix(in oklab,var(--color-primary)40%,transparent)}}.bg-primary\/60{background-color:#23ba7d99}@supports (color:color-mix(in lab,red,red)){.bg-primary\/60{background-color:color-mix(in oklab,var(--color-primary)60%,transparent)}}.bg-purple-500\/15{background-color:#ac4bff26}@supports (color:color-mix(in lab,red,red)){.bg-purple-500\/15{background-color:color-mix(in oklab,var(--color-purple-500)15%,transparent)}}.bg-red-500{background-color:var(--color-red-500)}.bg-red-500\/15{background-color:#fb2c3626}@supports (color:color-mix(in lab,red,red)){.bg-red-500\/15{background-color:color-mix(in oklab,var(--color-red-500)15%,transparent)}}.bg-secondary{background-color:var(--color-secondary)}.bg-sky-500\/15{background-color:#00a5ef26}@supports (color:color-mix(in lab,red,red)){.bg-sky-500\/15{background-color:color-mix(in oklab,var(--color-sky-500)15%,transparent)}}.bg-teal-500\/15{background-color:#00baa726}@supports (color:color-mix(in lab,red,red)){.bg-teal-500\/15{background-color:color-mix(in oklab,var(--color-teal-500)15%,transparent)}}.bg-violet-500\/15{background-color:#8d54ff26}@supports (color:color-mix(in lab,red,red)){.bg-violet-500\/15{background-color:color-mix(in oklab,var(--color-violet-500)15%,transparent)}}.bg-yellow-500\/15{background-color:#edb20026}@supports (color:color-mix(in lab,red,red)){.bg-yellow-500\/15{background-color:color-mix(in oklab,var(--color-yellow-500)15%,transparent)}}.p-1{padding:calc(var(--spacing)*1)}.p-2{padding:calc(var(--spacing)*2)}.p-2\.5{padding:calc(var(--spacing)*2.5)}.p-3{padding:calc(var(--spacing)*3)}.p-4{padding:calc(var(--spacing)*4)}.p-8{padding:calc(var(--spacing)*8)}.px-1{padding-inline:calc(var(--spacing)*1)}.px-1\.5{padding-inline:calc(var(--spacing)*1.5)}.px-2{padding-inline:calc(var(--spacing)*2)}.px-3{padding-inline:calc(var(--spacing)*3)}.px-4{padding-inline:calc(var(--spacing)*4)}.py-0\.5{padding-block:calc(var(--spacing)*.5)}.py-1{padding-block:calc(var(--spacing)*1)}.py-1\.5{padding-block:calc(var(--spacing)*1.5)}.py-2{padding-block:calc(var(--spacing)*2)}.py-4{padding-block:calc(var(--spacing)*4)}.pr-3{padding-right:calc(var(--spacing)*3)}.pb-0{padding-bottom:calc(var(--spacing)*0)}.pb-2{padding-bottom:calc(var(--spacing)*2)}.pb-3{padding-bottom:calc(var(--spacing)*3)}.pl-8{padding-left:calc(var(--spacing)*8)}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.font-mono{font-family:var(--font-mono)}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[9px\]{font-size:9px}.text-\[10px\]{font-size:10px}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.tracking-wider{--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider)}.whitespace-pre-wrap{white-space:pre-wrap}.text-amber-400{color:var(--color-amber-400)}.text-amber-500{color:var(--color-amber-500)}.text-blue-400{color:var(--color-blue-400)}.text-cyan-400{color:var(--color-cyan-400)}.text-emerald-400{color:var(--color-emerald-400)}.text-emerald-500{color:var(--color-emerald-500)}.text-foreground{color:var(--color-foreground)}.text-green-500{color:var(--color-green-500)}.text-indigo-400{color:var(--color-indigo-400)}.text-muted-foreground{color:var(--color-muted-foreground)}.text-muted-foreground\/60{color:#7f7f8999}@supports (color:color-mix(in lab,red,red)){.text-muted-foreground\/60{color:color-mix(in oklab,var(--color-muted-foreground)60%,transparent)}}.text-muted-foreground\/70{color:#7f7f89b3}@supports (color:color-mix(in lab,red,red)){.text-muted-foreground\/70{color:color-mix(in oklab,var(--color-muted-foreground)70%,transparent)}}.text-orange-400{color:var(--color-orange-400)}.text-primary{color:var(--color-primary)}.text-purple-400{color:var(--color-purple-400)}.text-red-400{color:var(--color-red-400)}.text-red-500{color:var(--color-red-500)}.text-secondary-foreground{color:var(--color-secondary-foreground)}.text-sky-400{color:var(--color-sky-400)}.text-teal-400{color:var(--color-teal-400)}.text-violet-400{color:var(--color-violet-400)}.text-yellow-400{color:var(--color-yellow-400)}.text-yellow-500{color:var(--color-yellow-500)}.uppercase{text-transform:uppercase}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,)var(--tw-slashed-zero,)var(--tw-numeric-figure,)var(--tw-numeric-spacing,)var(--tw-numeric-fraction,)}.opacity-40{opacity:.4}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.shadow-\[0_0_12px_oklch\(0\.7_0\.15_160\/0\.15\)\]{--tw-shadow:0 0 12px var(--tw-shadow-color,oklch(70% .15 160/.15));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.filter{filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.transition{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))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-500{--tw-duration:.5s;transition-duration:.5s}.placeholder\:text-muted-foreground::placeholder{color:var(--color-muted-foreground)}@media(hover:hover){.hover\:bg-accent:hover{background-color:var(--color-accent)}.hover\:bg-accent\/30:hover{background-color:#20202b4d}@supports (color:color-mix(in lab,red,red)){.hover\:bg-accent\/30:hover{background-color:color-mix(in oklab,var(--color-accent)30%,transparent)}}.hover\:bg-accent\/50:hover{background-color:#20202b80}@supports (color:color-mix(in lab,red,red)){.hover\:bg-accent\/50:hover{background-color:color-mix(in oklab,var(--color-accent)50%,transparent)}}.hover\:text-accent-foreground:hover{color:var(--color-accent-foreground)}.hover\:text-foreground:hover{color:var(--color-foreground)}}.focus\:ring-1:focus{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(1px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus\:ring-ring:focus{--tw-ring-color:var(--color-ring)}.focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}@media(min-width:40rem){.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}}@media(min-width:48rem){.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(min-width:64rem){.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}}}@keyframes flash-update{0%{background-color:#23ba7d4d}to{background-color:#0000}}.flash-update{animation:1.5s ease-out flash-update}@keyframes pulse-live{0%,to{opacity:1}50%{opacity:.5}}.pulse-live{animation:2s ease-in-out infinite pulse-live}@keyframes scroll-indicator{0%{transform:translateY(0)}50%{transform:translateY(3px)}to{transform:translateY(0)}}.scroll-indicator{animation:1.5s ease-in-out infinite scroll-indicator}@keyframes ttl-shrink{0%{width:100%}to{width:0%}}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:#393a42;border-radius:3px}::-webkit-scrollbar-thumb:hover{background:#54545e}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@keyframes spin{to{transform:rotate(360deg)}}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
<!doctype html>
|
|
2
|
+
<html lang="en" class="dark">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8" />
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
6
|
+
<title>Incubator Dashboard</title>
|
|
7
|
+
<script type="module" crossorigin src="/assets/index-DFb8p7xI.js"></script>
|
|
8
|
+
<link rel="stylesheet" crossorigin href="/assets/index-RKiEoHEo.css">
|
|
9
|
+
</head>
|
|
10
|
+
<body>
|
|
11
|
+
<div id="root"></div>
|
|
12
|
+
</body>
|
|
13
|
+
</html>
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { AcpClient } from '@agentcoordinationprotocol/sdk';
|
|
2
|
+
/**
|
|
3
|
+
* Lazy file-level claim manager. Acquires claims on first write,
|
|
4
|
+
* caches locally, and batch-releases on completion.
|
|
5
|
+
*/
|
|
6
|
+
export declare class ClaimManager {
|
|
7
|
+
private client;
|
|
8
|
+
private heldClaims;
|
|
9
|
+
private ttlMs;
|
|
10
|
+
constructor(client: AcpClient, ttlMs?: number);
|
|
11
|
+
/**
|
|
12
|
+
* Ensure we hold a claim for a file path.
|
|
13
|
+
* Returns null if claim acquired (or already held), or an error message if conflict.
|
|
14
|
+
*/
|
|
15
|
+
ensureClaim(filePath: string): Promise<string | null>;
|
|
16
|
+
/**
|
|
17
|
+
* Release all held claims.
|
|
18
|
+
*/
|
|
19
|
+
releaseAll(): Promise<void>;
|
|
20
|
+
/**
|
|
21
|
+
* Get all currently held claims.
|
|
22
|
+
*/
|
|
23
|
+
getHeldClaims(): string[];
|
|
24
|
+
}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
const DEFAULT_TTL_MS = 5 * 60 * 1000; // 5 minutes
|
|
2
|
+
/**
|
|
3
|
+
* Lazy file-level claim manager. Acquires claims on first write,
|
|
4
|
+
* caches locally, and batch-releases on completion.
|
|
5
|
+
*/
|
|
6
|
+
export class ClaimManager {
|
|
7
|
+
client;
|
|
8
|
+
heldClaims = new Map(); // resource → acquire timestamp
|
|
9
|
+
ttlMs;
|
|
10
|
+
constructor(client, ttlMs = DEFAULT_TTL_MS) {
|
|
11
|
+
this.client = client;
|
|
12
|
+
this.ttlMs = ttlMs;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Ensure we hold a claim for a file path.
|
|
16
|
+
* Returns null if claim acquired (or already held), or an error message if conflict.
|
|
17
|
+
*/
|
|
18
|
+
async ensureClaim(filePath) {
|
|
19
|
+
const resource = `file:${filePath}`;
|
|
20
|
+
// Already held by us
|
|
21
|
+
if (this.heldClaims.has(resource)) {
|
|
22
|
+
return null;
|
|
23
|
+
}
|
|
24
|
+
try {
|
|
25
|
+
const res = await this.client.claim(resource, `writing to ${filePath}`, { ttlMs: this.ttlMs });
|
|
26
|
+
if (res.ok && res.data.status === 'approved') {
|
|
27
|
+
this.heldClaims.set(resource, Date.now());
|
|
28
|
+
return null;
|
|
29
|
+
}
|
|
30
|
+
// Rejected — another agent holds it
|
|
31
|
+
if (res.data.status === 'rejected') {
|
|
32
|
+
const owner = res.data.claim?.owner ?? 'another agent';
|
|
33
|
+
return `Cannot write to "${filePath}": claimed by ${owner}. Coordinate with them or choose a different file.`;
|
|
34
|
+
}
|
|
35
|
+
return `Claim for "${filePath}" returned unexpected status: ${res.data.status}`;
|
|
36
|
+
}
|
|
37
|
+
catch (err) {
|
|
38
|
+
// If the server is unreachable, allow the write (best-effort coordination)
|
|
39
|
+
return null;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Release all held claims.
|
|
44
|
+
*/
|
|
45
|
+
async releaseAll() {
|
|
46
|
+
const resources = [...this.heldClaims.keys()];
|
|
47
|
+
for (const resource of resources) {
|
|
48
|
+
try {
|
|
49
|
+
await this.client.releaseClaim(resource);
|
|
50
|
+
}
|
|
51
|
+
catch {
|
|
52
|
+
// Best-effort release
|
|
53
|
+
}
|
|
54
|
+
this.heldClaims.delete(resource);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Get all currently held claims.
|
|
59
|
+
*/
|
|
60
|
+
getHeldClaims() {
|
|
61
|
+
return [...this.heldClaims.keys()];
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=claim-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claim-manager.js","sourceRoot":"","sources":["../../../src/agent/acp/claim-manager.ts"],"names":[],"mappings":"AAEA,MAAM,cAAc,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,YAAY;AAElD;;;GAGG;AACH,MAAM,OAAO,YAAY;IACf,MAAM,CAAY;IAClB,UAAU,GAAG,IAAI,GAAG,EAAkB,CAAC,CAAC,+BAA+B;IACvE,KAAK,CAAS;IAEtB,YAAY,MAAiB,EAAE,QAAgB,cAAc;QAC3D,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,WAAW,CAAC,QAAgB;QAChC,MAAM,QAAQ,GAAG,QAAQ,QAAQ,EAAE,CAAC;QAEpC,qBAAqB;QACrB,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YAClC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,cAAc,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;YAC/F,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;gBAC7C,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;gBAC1C,OAAO,IAAI,CAAC;YACd,CAAC;YAED,oCAAoC;YACpC,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;gBACnC,MAAM,KAAK,GAAI,GAAG,CAAC,IAAuC,CAAC,KAAK,EAAE,KAAK,IAAI,eAAe,CAAC;gBAC3F,OAAO,oBAAoB,QAAQ,iBAAiB,KAAK,oDAAoD,CAAC;YAChH,CAAC;YAED,OAAO,cAAc,QAAQ,iCAAiC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;QAClF,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,2EAA2E;YAC3E,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,UAAU;QACd,MAAM,SAAS,GAAG,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC;QAC9C,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;YACjC,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;YAC3C,CAAC;YAAC,MAAM,CAAC;gBACP,sBAAsB;YACxB,CAAC;YACD,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACnC,CAAC;IACH,CAAC;IAED;;OAEG;IACH,aAAa;QACX,OAAO,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC;IACrC,CAAC;CACF"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DirectRuntime — in-process ACP runtime that talks to stores directly.
|
|
3
|
+
* Same public interface as AcpRuntime but bypasses HTTP/WS entirely.
|
|
4
|
+
* Used by AgentPool for worker agents running inside the incubator process.
|
|
5
|
+
*/
|
|
6
|
+
import type { Stores } from '../../stores/interfaces.js';
|
|
7
|
+
import type { NotificationBus } from '../../bus.js';
|
|
8
|
+
import type { ProtocolResponse } from './runtime.js';
|
|
9
|
+
import type { WakeCondition } from './ws-event-client.js';
|
|
10
|
+
import type { ToolDef } from '../types.js';
|
|
11
|
+
import type { DanceModule } from '../../dances.js';
|
|
12
|
+
interface ControlStatus {
|
|
13
|
+
halted: boolean;
|
|
14
|
+
paused: boolean;
|
|
15
|
+
reason?: string;
|
|
16
|
+
}
|
|
17
|
+
export interface DirectRuntimeConfig {
|
|
18
|
+
stores: Stores;
|
|
19
|
+
bus: NotificationBus;
|
|
20
|
+
namespace: string;
|
|
21
|
+
agentId: string;
|
|
22
|
+
role: string;
|
|
23
|
+
maxIterations: number;
|
|
24
|
+
verbose?: boolean;
|
|
25
|
+
danceModule?: DanceModule;
|
|
26
|
+
protocolData?: ProtocolResponse;
|
|
27
|
+
}
|
|
28
|
+
export declare class DirectRuntime {
|
|
29
|
+
private stores;
|
|
30
|
+
private bus;
|
|
31
|
+
private namespace;
|
|
32
|
+
private agentId;
|
|
33
|
+
private role;
|
|
34
|
+
private maxIterations;
|
|
35
|
+
private verbose;
|
|
36
|
+
private danceModule?;
|
|
37
|
+
private protocolData?;
|
|
38
|
+
private iterationCount;
|
|
39
|
+
private eventBuffer;
|
|
40
|
+
private unsubscribe?;
|
|
41
|
+
private claimedResources;
|
|
42
|
+
private cachedInject;
|
|
43
|
+
private lastEventCursor;
|
|
44
|
+
constructor(config: DirectRuntimeConfig);
|
|
45
|
+
/** Connect — register role and subscribe to bus events. */
|
|
46
|
+
connect(): Promise<void>;
|
|
47
|
+
/** Disconnect — release claims, unsubscribe, report. */
|
|
48
|
+
disconnect(): Promise<void>;
|
|
49
|
+
/** Wait for a wake event matching the condition. */
|
|
50
|
+
waitForWake(condition: WakeCondition): Promise<string[]>;
|
|
51
|
+
/** Get last inject string from dance module. Consumed on read. */
|
|
52
|
+
getLastInject(): string | null;
|
|
53
|
+
/** Call a dance tool directly. If handler returns `wait`, blocks until event before returning. */
|
|
54
|
+
callDanceTool(tool: string, args: Record<string, unknown>): Promise<unknown>;
|
|
55
|
+
/** Get dance tool definitions. */
|
|
56
|
+
getDanceTools(): ToolDef[] | null;
|
|
57
|
+
/** Called before each iteration — drain events, report progress. */
|
|
58
|
+
beforeIteration(): Promise<string[]>;
|
|
59
|
+
/** Called on file write — auto-claim the file. */
|
|
60
|
+
onFileWrite(path: string): Promise<string | null>;
|
|
61
|
+
/** Called on completion — release claims, update run. */
|
|
62
|
+
onComplete(summary: string, usage?: {
|
|
63
|
+
promptTokens: number;
|
|
64
|
+
completionTokens: number;
|
|
65
|
+
totalTokens: number;
|
|
66
|
+
}): Promise<void>;
|
|
67
|
+
/** Fetch protocol — returns pre-loaded data (no HTTP needed). */
|
|
68
|
+
fetchProtocol(): Promise<ProtocolResponse | null>;
|
|
69
|
+
/** Publish a coordination event. */
|
|
70
|
+
publishEvent(type: string, data?: Record<string, unknown>): Promise<string>;
|
|
71
|
+
/** Set shared state. */
|
|
72
|
+
setState(key: string, value: unknown): Promise<string>;
|
|
73
|
+
/** Get shared state. */
|
|
74
|
+
getState(): Promise<string>;
|
|
75
|
+
/** Claim a resource. */
|
|
76
|
+
claimResource(resource: string, reason?: string): Promise<string>;
|
|
77
|
+
/** Release a claimed resource. */
|
|
78
|
+
releaseResource(resource: string): Promise<string>;
|
|
79
|
+
/** Check halt/pause status. */
|
|
80
|
+
checkControl(): Promise<ControlStatus>;
|
|
81
|
+
/** Wait for resume after pause. */
|
|
82
|
+
waitForResume(pollIntervalMs?: number): Promise<string>;
|
|
83
|
+
/** Replay events from the store that we may have missed (published before bus subscription). */
|
|
84
|
+
private replayMissedEvents;
|
|
85
|
+
private drainMatchingEvents;
|
|
86
|
+
private getStateMap;
|
|
87
|
+
private buildDanceHelper;
|
|
88
|
+
private refreshInjectCache;
|
|
89
|
+
}
|
|
90
|
+
export {};
|
|
@@ -0,0 +1,364 @@
|
|
|
1
|
+
import { danceToolDefs, callDanceTool, runInject, buildAcpHelper } from '../../dances.js';
|
|
2
|
+
import { normalizeWait } from '../../waggle/compound.js';
|
|
3
|
+
import { createTypeMatcher } from './event-matcher.js';
|
|
4
|
+
export class DirectRuntime {
|
|
5
|
+
stores;
|
|
6
|
+
bus;
|
|
7
|
+
namespace;
|
|
8
|
+
agentId;
|
|
9
|
+
role;
|
|
10
|
+
maxIterations;
|
|
11
|
+
verbose;
|
|
12
|
+
danceModule;
|
|
13
|
+
protocolData;
|
|
14
|
+
iterationCount = 0;
|
|
15
|
+
eventBuffer = [];
|
|
16
|
+
unsubscribe;
|
|
17
|
+
claimedResources = new Set();
|
|
18
|
+
cachedInject = null;
|
|
19
|
+
lastEventCursor = 0;
|
|
20
|
+
constructor(config) {
|
|
21
|
+
this.stores = config.stores;
|
|
22
|
+
this.bus = config.bus;
|
|
23
|
+
this.namespace = config.namespace;
|
|
24
|
+
this.agentId = config.agentId;
|
|
25
|
+
this.role = config.role;
|
|
26
|
+
this.maxIterations = config.maxIterations;
|
|
27
|
+
this.verbose = config.verbose ?? false;
|
|
28
|
+
this.danceModule = config.danceModule;
|
|
29
|
+
this.protocolData = config.protocolData;
|
|
30
|
+
}
|
|
31
|
+
/** Connect — register role and subscribe to bus events. */
|
|
32
|
+
async connect() {
|
|
33
|
+
await this.stores.roles.assign(this.agentId, this.role);
|
|
34
|
+
await this.stores.runs.start(this.agentId, this.role);
|
|
35
|
+
// Subscribe to bus for event notifications
|
|
36
|
+
this.unsubscribe = this.bus.subscribe(this.namespace, (event) => {
|
|
37
|
+
// Skip own events
|
|
38
|
+
if (event.publishedBy === this.agentId)
|
|
39
|
+
return;
|
|
40
|
+
this.eventBuffer.push(formatEvent(event));
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
/** Disconnect — release claims, unsubscribe, report. */
|
|
44
|
+
async disconnect() {
|
|
45
|
+
// Release all claims
|
|
46
|
+
for (const resource of this.claimedResources) {
|
|
47
|
+
try {
|
|
48
|
+
await this.stores.claims.release(resource, this.agentId);
|
|
49
|
+
}
|
|
50
|
+
catch { /* ignore */ }
|
|
51
|
+
}
|
|
52
|
+
this.claimedResources.clear();
|
|
53
|
+
if (this.unsubscribe) {
|
|
54
|
+
this.unsubscribe();
|
|
55
|
+
this.unsubscribe = undefined;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
/** Wait for a wake event matching the condition. */
|
|
59
|
+
async waitForWake(condition) {
|
|
60
|
+
// Pre-compute inject for when we wake (runner calls getLastInject right after)
|
|
61
|
+
await this.refreshInjectCache();
|
|
62
|
+
// Replay missed events from the store (covers events published before bus subscription)
|
|
63
|
+
await this.replayMissedEvents();
|
|
64
|
+
// Check buffer first (includes both bus-delivered and store-replayed events)
|
|
65
|
+
const buffered = this.drainMatchingEvents(condition.types ?? null);
|
|
66
|
+
if (buffered.length > 0)
|
|
67
|
+
return buffered;
|
|
68
|
+
// Wait for new events via bus
|
|
69
|
+
const timeout = condition.timeout && condition.timeout > 0 ? condition.timeout : 0;
|
|
70
|
+
return new Promise((resolve) => {
|
|
71
|
+
let timer;
|
|
72
|
+
let unsub;
|
|
73
|
+
const cleanup = () => {
|
|
74
|
+
if (timer)
|
|
75
|
+
clearTimeout(timer);
|
|
76
|
+
if (unsub)
|
|
77
|
+
unsub();
|
|
78
|
+
};
|
|
79
|
+
unsub = this.bus.subscribe(this.namespace, (event) => {
|
|
80
|
+
if (event.publishedBy === this.agentId)
|
|
81
|
+
return;
|
|
82
|
+
const formatted = formatEvent(event);
|
|
83
|
+
if (condition.types) {
|
|
84
|
+
const matches = createTypeMatcher(condition.types);
|
|
85
|
+
if (!matches(event.type)) {
|
|
86
|
+
// Buffer non-matching events
|
|
87
|
+
this.eventBuffer.push(formatted);
|
|
88
|
+
return;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
cleanup();
|
|
92
|
+
// Refresh inject cache on wake
|
|
93
|
+
this.refreshInjectCache().then(() => resolve([formatted]));
|
|
94
|
+
});
|
|
95
|
+
if (timeout > 0) {
|
|
96
|
+
timer = setTimeout(() => {
|
|
97
|
+
cleanup();
|
|
98
|
+
resolve([]);
|
|
99
|
+
}, timeout);
|
|
100
|
+
}
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
/** Get last inject string from dance module. Consumed on read. */
|
|
104
|
+
getLastInject() {
|
|
105
|
+
const inject = this.cachedInject;
|
|
106
|
+
this.cachedInject = null;
|
|
107
|
+
return inject;
|
|
108
|
+
}
|
|
109
|
+
/** Call a dance tool directly. If handler returns `wait`, blocks until event before returning. */
|
|
110
|
+
async callDanceTool(tool, args) {
|
|
111
|
+
if (!this.danceModule) {
|
|
112
|
+
throw new Error('No dance module loaded');
|
|
113
|
+
}
|
|
114
|
+
const helper = this.buildDanceHelper();
|
|
115
|
+
const getState = async () => this.getStateMap();
|
|
116
|
+
const result = await callDanceTool(this.danceModule, tool, args, this.role, this.agentId, getState, helper);
|
|
117
|
+
// If handler failed or no wait returned, return as-is
|
|
118
|
+
if ('error' in result || !result.wait) {
|
|
119
|
+
return result;
|
|
120
|
+
}
|
|
121
|
+
// Normalize wait spec from handler result and block until wake
|
|
122
|
+
const normalized = normalizeWait(result.wait);
|
|
123
|
+
if (!normalized)
|
|
124
|
+
return result;
|
|
125
|
+
// Strip wait from the result sent to LLM
|
|
126
|
+
const { wait: _, ...cleanResult } = result;
|
|
127
|
+
// Sync cursor + clear buffer — only wait for events AFTER this dance completed
|
|
128
|
+
try {
|
|
129
|
+
const { cursor } = await this.stores.events.getEvents();
|
|
130
|
+
this.lastEventCursor = cursor;
|
|
131
|
+
}
|
|
132
|
+
catch { /* ignore */ }
|
|
133
|
+
this.eventBuffer = [];
|
|
134
|
+
let wakeEvents = [];
|
|
135
|
+
if (normalized.pureDelay) {
|
|
136
|
+
await new Promise(r => setTimeout(r, normalized.timeout));
|
|
137
|
+
}
|
|
138
|
+
else {
|
|
139
|
+
wakeEvents = await this.waitForWake({
|
|
140
|
+
types: normalized.types ?? undefined,
|
|
141
|
+
timeout: normalized.timeout,
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
// Fresh inject after wake
|
|
145
|
+
const inject = this.getLastInject();
|
|
146
|
+
return {
|
|
147
|
+
...cleanResult,
|
|
148
|
+
wakeEvents,
|
|
149
|
+
...(inject ? { inject } : {}),
|
|
150
|
+
};
|
|
151
|
+
}
|
|
152
|
+
/** Get dance tool definitions. */
|
|
153
|
+
getDanceTools() {
|
|
154
|
+
if (!this.danceModule)
|
|
155
|
+
return null;
|
|
156
|
+
const defs = danceToolDefs(this.danceModule);
|
|
157
|
+
return defs.length > 0 ? defs : null;
|
|
158
|
+
}
|
|
159
|
+
/** Called before each iteration — drain events, report progress. */
|
|
160
|
+
async beforeIteration() {
|
|
161
|
+
this.iterationCount++;
|
|
162
|
+
await this.stores.progress.report(this.agentId, this.agentId, this.iterationCount / this.maxIterations, `Iteration ${this.iterationCount}/${this.maxIterations}`);
|
|
163
|
+
// Drain event buffer
|
|
164
|
+
const messages = [...this.eventBuffer];
|
|
165
|
+
this.eventBuffer = [];
|
|
166
|
+
// Drain direct messages
|
|
167
|
+
const directMessages = await this.stores.messages.getFor(this.agentId);
|
|
168
|
+
for (const msg of directMessages) {
|
|
169
|
+
messages.push(`Message from ${msg.from}: ${msg.content}`);
|
|
170
|
+
}
|
|
171
|
+
// Refresh dance inject every iteration (not just on wake)
|
|
172
|
+
if (this.danceModule) {
|
|
173
|
+
await this.refreshInjectCache();
|
|
174
|
+
}
|
|
175
|
+
return messages;
|
|
176
|
+
}
|
|
177
|
+
/** Called on file write — auto-claim the file. */
|
|
178
|
+
async onFileWrite(path) {
|
|
179
|
+
const result = await this.stores.claims.claim(path, path, this.agentId, 5 * 60 * 1000);
|
|
180
|
+
if (result.status === 'approved') {
|
|
181
|
+
this.claimedResources.add(path);
|
|
182
|
+
return null;
|
|
183
|
+
}
|
|
184
|
+
const owner = result.claim?.owner ?? 'another agent';
|
|
185
|
+
return JSON.stringify({ error: `File "${path}" is claimed by ${owner}` });
|
|
186
|
+
}
|
|
187
|
+
/** Called on completion — release claims, update run. */
|
|
188
|
+
async onComplete(summary, usage) {
|
|
189
|
+
await this.stores.runs.complete(this.agentId, {
|
|
190
|
+
status: 'completed',
|
|
191
|
+
summary,
|
|
192
|
+
iterations: this.iterationCount,
|
|
193
|
+
usage,
|
|
194
|
+
});
|
|
195
|
+
for (const resource of this.claimedResources) {
|
|
196
|
+
try {
|
|
197
|
+
await this.stores.claims.release(resource, this.agentId);
|
|
198
|
+
}
|
|
199
|
+
catch { /* ignore */ }
|
|
200
|
+
}
|
|
201
|
+
this.claimedResources.clear();
|
|
202
|
+
}
|
|
203
|
+
/** Fetch protocol — returns pre-loaded data (no HTTP needed). */
|
|
204
|
+
async fetchProtocol() {
|
|
205
|
+
return this.protocolData ?? null;
|
|
206
|
+
}
|
|
207
|
+
/** Publish a coordination event. */
|
|
208
|
+
async publishEvent(type, data = {}) {
|
|
209
|
+
try {
|
|
210
|
+
await this.stores.events.publish(type, data, this.agentId);
|
|
211
|
+
return JSON.stringify({ published: true, type });
|
|
212
|
+
}
|
|
213
|
+
catch (err) {
|
|
214
|
+
return JSON.stringify({ error: `publishEvent failed: ${err.message}` });
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
/** Set shared state. */
|
|
218
|
+
async setState(key, value) {
|
|
219
|
+
try {
|
|
220
|
+
await this.stores.state.set(key, value, this.agentId);
|
|
221
|
+
return JSON.stringify({ ok: true, key });
|
|
222
|
+
}
|
|
223
|
+
catch (err) {
|
|
224
|
+
return JSON.stringify({ error: `setState failed: ${err.message}` });
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
/** Get shared state. */
|
|
228
|
+
async getState() {
|
|
229
|
+
try {
|
|
230
|
+
const entries = await this.stores.state.query();
|
|
231
|
+
const state = {};
|
|
232
|
+
for (const entry of entries) {
|
|
233
|
+
state[entry.key] = entry.value;
|
|
234
|
+
}
|
|
235
|
+
return JSON.stringify(state);
|
|
236
|
+
}
|
|
237
|
+
catch (err) {
|
|
238
|
+
return JSON.stringify({ error: `getState failed: ${err.message}` });
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
/** Claim a resource. */
|
|
242
|
+
async claimResource(resource, reason) {
|
|
243
|
+
try {
|
|
244
|
+
const result = await this.stores.claims.claim(resource, reason ?? resource, this.agentId, 5 * 60 * 1000);
|
|
245
|
+
if (result.status === 'approved') {
|
|
246
|
+
this.claimedResources.add(resource);
|
|
247
|
+
return JSON.stringify({ status: 'approved', resource });
|
|
248
|
+
}
|
|
249
|
+
const owner = result.claim?.owner ?? 'another agent';
|
|
250
|
+
return JSON.stringify({ status: 'rejected', resource, owner, message: `Already claimed by ${owner}` });
|
|
251
|
+
}
|
|
252
|
+
catch (err) {
|
|
253
|
+
return JSON.stringify({ error: `claimResource failed: ${err.message}` });
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
/** Release a claimed resource. */
|
|
257
|
+
async releaseResource(resource) {
|
|
258
|
+
try {
|
|
259
|
+
await this.stores.claims.release(resource, this.agentId);
|
|
260
|
+
this.claimedResources.delete(resource);
|
|
261
|
+
return JSON.stringify({ released: true, resource });
|
|
262
|
+
}
|
|
263
|
+
catch (err) {
|
|
264
|
+
return JSON.stringify({ error: `releaseResource failed: ${err.message}` });
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
/** Check halt/pause status. */
|
|
268
|
+
async checkControl() {
|
|
269
|
+
const status = this.stores.control.getStatus(this.agentId);
|
|
270
|
+
return {
|
|
271
|
+
halted: status.halted,
|
|
272
|
+
paused: status.paused,
|
|
273
|
+
reason: status.haltReason ?? status.pauseReason,
|
|
274
|
+
};
|
|
275
|
+
}
|
|
276
|
+
/** Wait for resume after pause. */
|
|
277
|
+
async waitForResume(pollIntervalMs = 2000) {
|
|
278
|
+
while (true) {
|
|
279
|
+
await new Promise(resolve => setTimeout(resolve, pollIntervalMs));
|
|
280
|
+
const status = this.stores.control.getStatus(this.agentId);
|
|
281
|
+
if (!status.paused) {
|
|
282
|
+
return 'resumed';
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
// ─── Private helpers ──────────────────────────────────────
|
|
287
|
+
/** Replay events from the store that we may have missed (published before bus subscription). */
|
|
288
|
+
async replayMissedEvents() {
|
|
289
|
+
try {
|
|
290
|
+
const { events, cursor } = await this.stores.events.getEvents(this.lastEventCursor);
|
|
291
|
+
this.lastEventCursor = cursor;
|
|
292
|
+
for (const event of events) {
|
|
293
|
+
if (event.publishedBy === this.agentId)
|
|
294
|
+
continue;
|
|
295
|
+
const formatted = formatEvent(event);
|
|
296
|
+
// Avoid duplicates — only add if not already in buffer
|
|
297
|
+
if (!this.eventBuffer.includes(formatted)) {
|
|
298
|
+
this.eventBuffer.push(formatted);
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
catch { /* store query failed — rely on bus events */ }
|
|
303
|
+
}
|
|
304
|
+
drainMatchingEvents(types) {
|
|
305
|
+
if (this.eventBuffer.length === 0)
|
|
306
|
+
return [];
|
|
307
|
+
if (!types) {
|
|
308
|
+
const all = [...this.eventBuffer];
|
|
309
|
+
this.eventBuffer = [];
|
|
310
|
+
return all;
|
|
311
|
+
}
|
|
312
|
+
const matches = createTypeMatcher(types);
|
|
313
|
+
const matching = [];
|
|
314
|
+
const remaining = [];
|
|
315
|
+
for (const msg of this.eventBuffer) {
|
|
316
|
+
const m = msg.match(/\[([^\]]+)\]/);
|
|
317
|
+
if (m && matches(m[1])) {
|
|
318
|
+
matching.push(msg);
|
|
319
|
+
}
|
|
320
|
+
else {
|
|
321
|
+
remaining.push(msg);
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
this.eventBuffer = remaining;
|
|
325
|
+
return matching;
|
|
326
|
+
}
|
|
327
|
+
async getStateMap() {
|
|
328
|
+
const entries = await this.stores.state.query();
|
|
329
|
+
const state = {};
|
|
330
|
+
for (const entry of entries) {
|
|
331
|
+
state[entry.key] = typeof entry.value === 'string' ? entry.value : JSON.stringify(entry.value);
|
|
332
|
+
}
|
|
333
|
+
return state;
|
|
334
|
+
}
|
|
335
|
+
buildDanceHelper() {
|
|
336
|
+
return buildAcpHelper({
|
|
337
|
+
publishEvent: async (_ns, type, data, agentId) => {
|
|
338
|
+
// Note: stores.events.publish is patched by NamespaceRegistry to also bus.publish
|
|
339
|
+
await this.stores.events.publish(type, data, agentId ?? this.agentId);
|
|
340
|
+
},
|
|
341
|
+
claimResource: async (_ns, resource, agentId, ttl) => {
|
|
342
|
+
const result = await this.stores.claims.claim(resource, resource, agentId, ttl);
|
|
343
|
+
return result.status;
|
|
344
|
+
},
|
|
345
|
+
releaseResource: async (_ns, resource) => {
|
|
346
|
+
await this.stores.claims.release(resource, this.agentId);
|
|
347
|
+
},
|
|
348
|
+
setState: async (_ns, key, value) => {
|
|
349
|
+
await this.stores.state.set(key, value, this.agentId);
|
|
350
|
+
},
|
|
351
|
+
}, this.namespace, this.agentId);
|
|
352
|
+
}
|
|
353
|
+
async refreshInjectCache() {
|
|
354
|
+
if (!this.danceModule)
|
|
355
|
+
return;
|
|
356
|
+
const state = await this.getStateMap();
|
|
357
|
+
this.cachedInject = runInject(this.danceModule, state, this.role, this.agentId);
|
|
358
|
+
}
|
|
359
|
+
}
|
|
360
|
+
function formatEvent(event) {
|
|
361
|
+
const data = typeof event.data === 'string' ? event.data : JSON.stringify(event.data);
|
|
362
|
+
return `Event from ${event.publishedBy}: [${event.type}] ${data}`;
|
|
363
|
+
}
|
|
364
|
+
//# sourceMappingURL=direct-runtime.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"direct-runtime.js","sourceRoot":"","sources":["../../../src/agent/acp/direct-runtime.ts"],"names":[],"mappings":"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"}
|