groove-dev 0.26.39 → 0.27.1
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/CHANGELOG.md +76 -0
- package/CLAUDE.md +31 -19
- package/node_modules/@groove-dev/cli/package.json +1 -1
- package/node_modules/@groove-dev/daemon/integrations-registry.json +548 -0
- package/node_modules/@groove-dev/daemon/package.json +1 -1
- package/node_modules/@groove-dev/daemon/src/api.js +172 -4
- package/node_modules/@groove-dev/daemon/src/classifier.js +20 -1
- package/node_modules/@groove-dev/daemon/src/firstrun.js +14 -1
- package/node_modules/@groove-dev/daemon/src/gateways/manager.js +2 -2
- package/node_modules/@groove-dev/daemon/src/index.js +3 -1
- package/node_modules/@groove-dev/daemon/src/introducer.js +56 -5
- package/node_modules/@groove-dev/daemon/src/journalist.js +72 -10
- package/node_modules/@groove-dev/daemon/src/lockmanager.js +60 -0
- package/node_modules/@groove-dev/daemon/src/mcp-manager.js +2 -1
- package/node_modules/@groove-dev/daemon/src/memory.js +370 -0
- package/node_modules/@groove-dev/daemon/src/pm.js +1 -1
- package/node_modules/@groove-dev/daemon/src/process.js +20 -1
- package/node_modules/@groove-dev/daemon/src/rotator.js +184 -5
- package/node_modules/@groove-dev/daemon/src/router.js +43 -0
- package/node_modules/@groove-dev/daemon/src/tokentracker.js +62 -8
- package/node_modules/@groove-dev/daemon/src/validate.js +0 -13
- package/node_modules/@groove-dev/daemon/test/journalist.test.js +5 -2
- package/node_modules/@groove-dev/daemon/test/lockmanager.test.js +64 -0
- package/node_modules/@groove-dev/daemon/test/memory.test.js +252 -0
- package/node_modules/@groove-dev/daemon/test/rotator.test.js +156 -0
- package/node_modules/@groove-dev/daemon/test/router.test.js +64 -0
- package/node_modules/@groove-dev/daemon/test/tokentracker.test.js +78 -0
- package/node_modules/@groove-dev/gui/dist/assets/index-Bl1_J0sN.js +652 -0
- package/node_modules/@groove-dev/gui/dist/assets/index-DjORRpF0.css +1 -0
- package/node_modules/@groove-dev/gui/dist/index.html +2 -2
- package/node_modules/@groove-dev/gui/package.json +1 -4
- package/node_modules/@groove-dev/gui/src/components/agents/spawn-wizard.jsx +18 -0
- package/node_modules/@groove-dev/gui/src/components/dashboard/cache-ring.jsx +6 -2
- package/node_modules/@groove-dev/gui/src/components/dashboard/intel-panel.jsx +251 -8
- package/node_modules/@groove-dev/gui/src/components/dashboard/team-burn-panel.jsx +55 -0
- package/node_modules/@groove-dev/gui/src/components/marketplace/marketplace-card.jsx +22 -4
- package/node_modules/@groove-dev/gui/src/lib/format.js +0 -6
- package/node_modules/@groove-dev/gui/src/lib/hooks/use-dashboard.js +18 -1
- package/node_modules/@groove-dev/gui/src/stores/groove.js +41 -16
- package/node_modules/@groove-dev/gui/src/views/dashboard.jsx +9 -2
- package/node_modules/@groove-dev/gui/src/views/marketplace.jsx +103 -77
- package/package.json +2 -8
- package/packages/cli/package.json +1 -1
- package/packages/daemon/integrations-registry.json +548 -0
- package/packages/daemon/package.json +1 -1
- package/packages/daemon/src/api.js +172 -4
- package/packages/daemon/src/classifier.js +20 -1
- package/packages/daemon/src/firstrun.js +14 -1
- package/packages/daemon/src/gateways/manager.js +2 -2
- package/packages/daemon/src/index.js +3 -1
- package/packages/daemon/src/introducer.js +56 -5
- package/packages/daemon/src/journalist.js +72 -10
- package/packages/daemon/src/lockmanager.js +60 -0
- package/packages/daemon/src/mcp-manager.js +2 -1
- package/packages/daemon/src/memory.js +370 -0
- package/packages/daemon/src/pm.js +1 -1
- package/packages/daemon/src/process.js +20 -1
- package/packages/daemon/src/rotator.js +184 -5
- package/packages/daemon/src/router.js +43 -0
- package/packages/daemon/src/tokentracker.js +62 -8
- package/packages/daemon/src/validate.js +0 -13
- package/packages/gui/dist/assets/index-Bl1_J0sN.js +652 -0
- package/packages/gui/dist/assets/index-DjORRpF0.css +1 -0
- package/packages/gui/dist/index.html +2 -2
- package/packages/gui/package.json +1 -4
- package/packages/gui/src/components/agents/spawn-wizard.jsx +18 -0
- package/packages/gui/src/components/dashboard/cache-ring.jsx +6 -2
- package/packages/gui/src/components/dashboard/intel-panel.jsx +251 -8
- package/packages/gui/src/components/dashboard/team-burn-panel.jsx +55 -0
- package/packages/gui/src/components/marketplace/marketplace-card.jsx +22 -4
- package/packages/gui/src/lib/format.js +0 -6
- package/packages/gui/src/lib/hooks/use-dashboard.js +18 -1
- package/packages/gui/src/stores/groove.js +41 -16
- package/packages/gui/src/views/dashboard.jsx +9 -2
- package/packages/gui/src/views/marketplace.jsx +103 -77
- package/docs-manager/DOCS-WORKFLOW.md +0 -176
- package/node_modules/@groove-dev/gui/dist/assets/index-BkY43sei.css +0 -1
- package/node_modules/@groove-dev/gui/dist/assets/index-DmKZLrXU.js +0 -652
- package/node_modules/@groove-dev/gui/dist/groove-logo-short.png +0 -0
- package/node_modules/@groove-dev/gui/dist/groove-logo.png +0 -0
- package/node_modules/@groove-dev/gui/public/groove-logo-short.png +0 -0
- package/node_modules/@groove-dev/gui/public/groove-logo.png +0 -0
- package/node_modules/@groove-dev/gui/src/components/ui/dropdown-menu.jsx +0 -60
- package/node_modules/@groove-dev/gui/src/lib/hooks/use-media-query.js +0 -18
- package/node_modules/@radix-ui/react-dropdown-menu/LICENSE +0 -21
- package/node_modules/@radix-ui/react-dropdown-menu/README.md +0 -3
- package/node_modules/@radix-ui/react-dropdown-menu/dist/index.d.mts +0 -97
- package/node_modules/@radix-ui/react-dropdown-menu/dist/index.d.ts +0 -97
- package/node_modules/@radix-ui/react-dropdown-menu/dist/index.js +0 -337
- package/node_modules/@radix-ui/react-dropdown-menu/dist/index.js.map +0 -7
- package/node_modules/@radix-ui/react-dropdown-menu/dist/index.mjs +0 -305
- package/node_modules/@radix-ui/react-dropdown-menu/dist/index.mjs.map +0 -7
- package/node_modules/@radix-ui/react-dropdown-menu/package.json +0 -75
- package/node_modules/@radix-ui/react-popover/LICENSE +0 -21
- package/node_modules/@radix-ui/react-popover/README.md +0 -3
- package/node_modules/@radix-ui/react-popover/dist/index.d.mts +0 -85
- package/node_modules/@radix-ui/react-popover/dist/index.d.ts +0 -85
- package/node_modules/@radix-ui/react-popover/dist/index.js +0 -352
- package/node_modules/@radix-ui/react-popover/dist/index.js.map +0 -7
- package/node_modules/@radix-ui/react-popover/dist/index.mjs +0 -320
- package/node_modules/@radix-ui/react-popover/dist/index.mjs.map +0 -7
- package/node_modules/@radix-ui/react-popover/package.json +0 -82
- package/node_modules/@radix-ui/react-separator/LICENSE +0 -21
- package/node_modules/@radix-ui/react-separator/README.md +0 -3
- package/node_modules/@radix-ui/react-separator/dist/index.d.mts +0 -21
- package/node_modules/@radix-ui/react-separator/dist/index.d.ts +0 -21
- package/node_modules/@radix-ui/react-separator/dist/index.js +0 -65
- package/node_modules/@radix-ui/react-separator/dist/index.js.map +0 -7
- package/node_modules/@radix-ui/react-separator/dist/index.mjs +0 -32
- package/node_modules/@radix-ui/react-separator/dist/index.mjs.map +0 -7
- package/node_modules/@radix-ui/react-separator/node_modules/@radix-ui/react-primitive/LICENSE +0 -21
- package/node_modules/@radix-ui/react-separator/node_modules/@radix-ui/react-primitive/README.md +0 -3
- package/node_modules/@radix-ui/react-separator/node_modules/@radix-ui/react-primitive/dist/index.d.mts +0 -52
- package/node_modules/@radix-ui/react-separator/node_modules/@radix-ui/react-primitive/dist/index.d.ts +0 -52
- package/node_modules/@radix-ui/react-separator/node_modules/@radix-ui/react-primitive/dist/index.js +0 -80
- package/node_modules/@radix-ui/react-separator/node_modules/@radix-ui/react-primitive/dist/index.js.map +0 -7
- package/node_modules/@radix-ui/react-separator/node_modules/@radix-ui/react-primitive/dist/index.mjs +0 -47
- package/node_modules/@radix-ui/react-separator/node_modules/@radix-ui/react-primitive/dist/index.mjs.map +0 -7
- package/node_modules/@radix-ui/react-separator/node_modules/@radix-ui/react-primitive/package.json +0 -69
- package/node_modules/@radix-ui/react-separator/node_modules/@radix-ui/react-slot/LICENSE +0 -21
- package/node_modules/@radix-ui/react-separator/node_modules/@radix-ui/react-slot/README.md +0 -3
- package/node_modules/@radix-ui/react-separator/node_modules/@radix-ui/react-slot/dist/index.d.mts +0 -22
- package/node_modules/@radix-ui/react-separator/node_modules/@radix-ui/react-slot/dist/index.d.ts +0 -22
- package/node_modules/@radix-ui/react-separator/node_modules/@radix-ui/react-slot/dist/index.js +0 -152
- package/node_modules/@radix-ui/react-separator/node_modules/@radix-ui/react-slot/dist/index.js.map +0 -7
- package/node_modules/@radix-ui/react-separator/node_modules/@radix-ui/react-slot/dist/index.mjs +0 -119
- package/node_modules/@radix-ui/react-separator/node_modules/@radix-ui/react-slot/dist/index.mjs.map +0 -7
- package/node_modules/@radix-ui/react-separator/node_modules/@radix-ui/react-slot/package.json +0 -64
- package/node_modules/@radix-ui/react-separator/package.json +0 -69
- package/packages/gui/dist/assets/index-BkY43sei.css +0 -1
- package/packages/gui/dist/assets/index-DmKZLrXU.js +0 -652
- package/packages/gui/dist/groove-logo-short.png +0 -0
- package/packages/gui/dist/groove-logo.png +0 -0
- package/packages/gui/public/groove-logo-short.png +0 -0
- package/packages/gui/public/groove-logo.png +0 -0
- package/packages/gui/src/components/ui/dropdown-menu.jsx +0 -60
- package/packages/gui/src/lib/hooks/use-media-query.js +0 -18
- package/slides/convert-slides.js +0 -1120
- package/slides/deck.pptx +0 -0
- package/slides/index.html +0 -825
- package/slides/node_modules/.package-lock.json +0 -527
- package/slides/node_modules/@types/node/LICENSE +0 -21
- package/slides/node_modules/@types/node/README.md +0 -15
- package/slides/node_modules/@types/node/assert/strict.d.ts +0 -111
- package/slides/node_modules/@types/node/assert.d.ts +0 -1078
- package/slides/node_modules/@types/node/async_hooks.d.ts +0 -603
- package/slides/node_modules/@types/node/buffer.buffer.d.ts +0 -472
- package/slides/node_modules/@types/node/buffer.d.ts +0 -1934
- package/slides/node_modules/@types/node/child_process.d.ts +0 -1476
- package/slides/node_modules/@types/node/cluster.d.ts +0 -578
- package/slides/node_modules/@types/node/compatibility/disposable.d.ts +0 -14
- package/slides/node_modules/@types/node/compatibility/index.d.ts +0 -9
- package/slides/node_modules/@types/node/compatibility/indexable.d.ts +0 -20
- package/slides/node_modules/@types/node/compatibility/iterators.d.ts +0 -20
- package/slides/node_modules/@types/node/console.d.ts +0 -452
- package/slides/node_modules/@types/node/constants.d.ts +0 -21
- package/slides/node_modules/@types/node/crypto.d.ts +0 -4545
- package/slides/node_modules/@types/node/dgram.d.ts +0 -600
- package/slides/node_modules/@types/node/diagnostics_channel.d.ts +0 -578
- package/slides/node_modules/@types/node/dns/promises.d.ts +0 -503
- package/slides/node_modules/@types/node/dns.d.ts +0 -923
- package/slides/node_modules/@types/node/domain.d.ts +0 -170
- package/slides/node_modules/@types/node/events.d.ts +0 -976
- package/slides/node_modules/@types/node/fs/promises.d.ts +0 -1295
- package/slides/node_modules/@types/node/fs.d.ts +0 -4461
- package/slides/node_modules/@types/node/globals.d.ts +0 -172
- package/slides/node_modules/@types/node/globals.typedarray.d.ts +0 -38
- package/slides/node_modules/@types/node/http.d.ts +0 -2089
- package/slides/node_modules/@types/node/http2.d.ts +0 -2644
- package/slides/node_modules/@types/node/https.d.ts +0 -579
- package/slides/node_modules/@types/node/index.d.ts +0 -97
- package/slides/node_modules/@types/node/inspector.d.ts +0 -253
- package/slides/node_modules/@types/node/inspector.generated.d.ts +0 -4052
- package/slides/node_modules/@types/node/module.d.ts +0 -891
- package/slides/node_modules/@types/node/net.d.ts +0 -1076
- package/slides/node_modules/@types/node/os.d.ts +0 -506
- package/slides/node_modules/@types/node/package.json +0 -145
- package/slides/node_modules/@types/node/path.d.ts +0 -200
- package/slides/node_modules/@types/node/perf_hooks.d.ts +0 -968
- package/slides/node_modules/@types/node/process.d.ts +0 -2084
- package/slides/node_modules/@types/node/punycode.d.ts +0 -117
- package/slides/node_modules/@types/node/querystring.d.ts +0 -152
- package/slides/node_modules/@types/node/readline/promises.d.ts +0 -161
- package/slides/node_modules/@types/node/readline.d.ts +0 -594
- package/slides/node_modules/@types/node/repl.d.ts +0 -428
- package/slides/node_modules/@types/node/sea.d.ts +0 -153
- package/slides/node_modules/@types/node/sqlite.d.ts +0 -721
- package/slides/node_modules/@types/node/stream/consumers.d.ts +0 -38
- package/slides/node_modules/@types/node/stream/promises.d.ts +0 -90
- package/slides/node_modules/@types/node/stream/web.d.ts +0 -622
- package/slides/node_modules/@types/node/stream.d.ts +0 -1687
- package/slides/node_modules/@types/node/string_decoder.d.ts +0 -67
- package/slides/node_modules/@types/node/test.d.ts +0 -2163
- package/slides/node_modules/@types/node/timers/promises.d.ts +0 -108
- package/slides/node_modules/@types/node/timers.d.ts +0 -287
- package/slides/node_modules/@types/node/tls.d.ts +0 -1319
- package/slides/node_modules/@types/node/trace_events.d.ts +0 -197
- package/slides/node_modules/@types/node/ts5.6/buffer.buffer.d.ts +0 -468
- package/slides/node_modules/@types/node/ts5.6/globals.typedarray.d.ts +0 -34
- package/slides/node_modules/@types/node/ts5.6/index.d.ts +0 -97
- package/slides/node_modules/@types/node/tty.d.ts +0 -208
- package/slides/node_modules/@types/node/url.d.ts +0 -984
- package/slides/node_modules/@types/node/util.d.ts +0 -2606
- package/slides/node_modules/@types/node/v8.d.ts +0 -920
- package/slides/node_modules/@types/node/vm.d.ts +0 -1000
- package/slides/node_modules/@types/node/wasi.d.ts +0 -181
- package/slides/node_modules/@types/node/web-globals/abortcontroller.d.ts +0 -34
- package/slides/node_modules/@types/node/web-globals/domexception.d.ts +0 -68
- package/slides/node_modules/@types/node/web-globals/events.d.ts +0 -97
- package/slides/node_modules/@types/node/web-globals/fetch.d.ts +0 -55
- package/slides/node_modules/@types/node/web-globals/navigator.d.ts +0 -22
- package/slides/node_modules/@types/node/web-globals/storage.d.ts +0 -24
- package/slides/node_modules/@types/node/worker_threads.d.ts +0 -784
- package/slides/node_modules/@types/node/zlib.d.ts +0 -747
- package/slides/node_modules/base64-js/LICENSE +0 -21
- package/slides/node_modules/base64-js/README.md +0 -34
- package/slides/node_modules/base64-js/base64js.min.js +0 -1
- package/slides/node_modules/base64-js/index.d.ts +0 -3
- package/slides/node_modules/base64-js/index.js +0 -150
- package/slides/node_modules/base64-js/package.json +0 -47
- package/slides/node_modules/bl/.travis.yml +0 -17
- package/slides/node_modules/bl/BufferList.js +0 -396
- package/slides/node_modules/bl/LICENSE.md +0 -13
- package/slides/node_modules/bl/README.md +0 -247
- package/slides/node_modules/bl/bl.js +0 -84
- package/slides/node_modules/bl/node_modules/readable-stream/CONTRIBUTING.md +0 -38
- package/slides/node_modules/bl/node_modules/readable-stream/GOVERNANCE.md +0 -136
- package/slides/node_modules/bl/node_modules/readable-stream/LICENSE +0 -47
- package/slides/node_modules/bl/node_modules/readable-stream/README.md +0 -106
- package/slides/node_modules/bl/node_modules/readable-stream/errors-browser.js +0 -127
- package/slides/node_modules/bl/node_modules/readable-stream/errors.js +0 -116
- package/slides/node_modules/bl/node_modules/readable-stream/experimentalWarning.js +0 -17
- package/slides/node_modules/bl/node_modules/readable-stream/lib/_stream_duplex.js +0 -126
- package/slides/node_modules/bl/node_modules/readable-stream/lib/_stream_passthrough.js +0 -37
- package/slides/node_modules/bl/node_modules/readable-stream/lib/_stream_readable.js +0 -1027
- package/slides/node_modules/bl/node_modules/readable-stream/lib/_stream_transform.js +0 -190
- package/slides/node_modules/bl/node_modules/readable-stream/lib/_stream_writable.js +0 -641
- package/slides/node_modules/bl/node_modules/readable-stream/lib/internal/streams/async_iterator.js +0 -180
- package/slides/node_modules/bl/node_modules/readable-stream/lib/internal/streams/buffer_list.js +0 -183
- package/slides/node_modules/bl/node_modules/readable-stream/lib/internal/streams/destroy.js +0 -96
- package/slides/node_modules/bl/node_modules/readable-stream/lib/internal/streams/end-of-stream.js +0 -86
- package/slides/node_modules/bl/node_modules/readable-stream/lib/internal/streams/from-browser.js +0 -3
- package/slides/node_modules/bl/node_modules/readable-stream/lib/internal/streams/from.js +0 -52
- package/slides/node_modules/bl/node_modules/readable-stream/lib/internal/streams/pipeline.js +0 -86
- package/slides/node_modules/bl/node_modules/readable-stream/lib/internal/streams/state.js +0 -22
- package/slides/node_modules/bl/node_modules/readable-stream/lib/internal/streams/stream-browser.js +0 -1
- package/slides/node_modules/bl/node_modules/readable-stream/lib/internal/streams/stream.js +0 -1
- package/slides/node_modules/bl/node_modules/readable-stream/package.json +0 -68
- package/slides/node_modules/bl/node_modules/readable-stream/readable-browser.js +0 -9
- package/slides/node_modules/bl/node_modules/readable-stream/readable.js +0 -16
- package/slides/node_modules/bl/package.json +0 -37
- package/slides/node_modules/bl/test/convert.js +0 -21
- package/slides/node_modules/bl/test/indexOf.js +0 -492
- package/slides/node_modules/bl/test/isBufferList.js +0 -32
- package/slides/node_modules/bl/test/test.js +0 -869
- package/slides/node_modules/buffer/AUTHORS.md +0 -70
- package/slides/node_modules/buffer/LICENSE +0 -21
- package/slides/node_modules/buffer/README.md +0 -410
- package/slides/node_modules/buffer/index.d.ts +0 -186
- package/slides/node_modules/buffer/index.js +0 -1817
- package/slides/node_modules/buffer/package.json +0 -96
- package/slides/node_modules/canvas/Readme.md +0 -657
- package/slides/node_modules/canvas/binding.gyp +0 -229
- package/slides/node_modules/canvas/browser.js +0 -31
- package/slides/node_modules/canvas/build/Makefile +0 -347
- package/slides/node_modules/canvas/build/Release/canvas.node +0 -0
- package/slides/node_modules/canvas/build/Release/libX11.6.dylib +0 -0
- package/slides/node_modules/canvas/build/Release/libXau.6.dylib +0 -0
- package/slides/node_modules/canvas/build/Release/libXdmcp.6.dylib +0 -0
- package/slides/node_modules/canvas/build/Release/libXext.6.dylib +0 -0
- package/slides/node_modules/canvas/build/Release/libXrender.1.dylib +0 -0
- package/slides/node_modules/canvas/build/Release/libcairo-gobject.2.dylib +0 -0
- package/slides/node_modules/canvas/build/Release/libcairo.2.dylib +0 -0
- package/slides/node_modules/canvas/build/Release/libdatrie.1.dylib +0 -0
- package/slides/node_modules/canvas/build/Release/libfontconfig.1.dylib +0 -0
- package/slides/node_modules/canvas/build/Release/libfreetype.6.dylib +0 -0
- package/slides/node_modules/canvas/build/Release/libfribidi.0.dylib +0 -0
- package/slides/node_modules/canvas/build/Release/libgdk_pixbuf-2.0.0.dylib +0 -0
- package/slides/node_modules/canvas/build/Release/libgif.7.2.0.dylib +0 -0
- package/slides/node_modules/canvas/build/Release/libgio-2.0.0.dylib +0 -0
- package/slides/node_modules/canvas/build/Release/libglib-2.0.0.dylib +0 -0
- package/slides/node_modules/canvas/build/Release/libgmodule-2.0.0.dylib +0 -0
- package/slides/node_modules/canvas/build/Release/libgobject-2.0.0.dylib +0 -0
- package/slides/node_modules/canvas/build/Release/libgraphite2.3.2.1.dylib +0 -0
- package/slides/node_modules/canvas/build/Release/libharfbuzz.0.dylib +0 -0
- package/slides/node_modules/canvas/build/Release/libintl.8.dylib +0 -0
- package/slides/node_modules/canvas/build/Release/libjpeg.8.3.2.dylib +0 -0
- package/slides/node_modules/canvas/build/Release/libpango-1.0.0.dylib +0 -0
- package/slides/node_modules/canvas/build/Release/libpangocairo-1.0.0.dylib +0 -0
- package/slides/node_modules/canvas/build/Release/libpangoft2-1.0.0.dylib +0 -0
- package/slides/node_modules/canvas/build/Release/libpcre2-8.0.dylib +0 -0
- package/slides/node_modules/canvas/build/Release/libpixman-1.0.dylib +0 -0
- package/slides/node_modules/canvas/build/Release/libpng16.16.dylib +0 -0
- package/slides/node_modules/canvas/build/Release/librsvg-2.2.dylib +0 -0
- package/slides/node_modules/canvas/build/Release/libthai.0.dylib +0 -0
- package/slides/node_modules/canvas/build/Release/libxcb-render.0.0.0.dylib +0 -0
- package/slides/node_modules/canvas/build/Release/libxcb-shm.0.0.0.dylib +0 -0
- package/slides/node_modules/canvas/build/Release/libxcb.1.1.0.dylib +0 -0
- package/slides/node_modules/canvas/build/binding.Makefile +0 -6
- package/slides/node_modules/canvas/build/canvas.target.mk +0 -299
- package/slides/node_modules/canvas/build/gyp-mac-tool +0 -766
- package/slides/node_modules/canvas/index.d.ts +0 -507
- package/slides/node_modules/canvas/index.js +0 -94
- package/slides/node_modules/canvas/lib/DOMMatrix.js +0 -678
- package/slides/node_modules/canvas/lib/bindings.js +0 -43
- package/slides/node_modules/canvas/lib/canvas.js +0 -113
- package/slides/node_modules/canvas/lib/context2d.js +0 -11
- package/slides/node_modules/canvas/lib/image.js +0 -97
- package/slides/node_modules/canvas/lib/jpegstream.js +0 -41
- package/slides/node_modules/canvas/lib/pattern.js +0 -15
- package/slides/node_modules/canvas/lib/pdfstream.js +0 -35
- package/slides/node_modules/canvas/lib/pngstream.js +0 -42
- package/slides/node_modules/canvas/package.json +0 -71
- package/slides/node_modules/canvas/src/Backends.h +0 -9
- package/slides/node_modules/canvas/src/Canvas.cc +0 -1026
- package/slides/node_modules/canvas/src/Canvas.h +0 -128
- package/slides/node_modules/canvas/src/CanvasError.h +0 -37
- package/slides/node_modules/canvas/src/CanvasGradient.cc +0 -113
- package/slides/node_modules/canvas/src/CanvasGradient.h +0 -20
- package/slides/node_modules/canvas/src/CanvasPattern.cc +0 -129
- package/slides/node_modules/canvas/src/CanvasPattern.h +0 -33
- package/slides/node_modules/canvas/src/CanvasRenderingContext2d.cc +0 -3527
- package/slides/node_modules/canvas/src/CanvasRenderingContext2d.h +0 -238
- package/slides/node_modules/canvas/src/CharData.h +0 -233
- package/slides/node_modules/canvas/src/FontParser.cc +0 -605
- package/slides/node_modules/canvas/src/FontParser.h +0 -115
- package/slides/node_modules/canvas/src/Image.cc +0 -1719
- package/slides/node_modules/canvas/src/Image.h +0 -146
- package/slides/node_modules/canvas/src/ImageData.cc +0 -138
- package/slides/node_modules/canvas/src/ImageData.h +0 -26
- package/slides/node_modules/canvas/src/InstanceData.h +0 -12
- package/slides/node_modules/canvas/src/JPEGStream.h +0 -157
- package/slides/node_modules/canvas/src/PNG.h +0 -292
- package/slides/node_modules/canvas/src/Point.h +0 -11
- package/slides/node_modules/canvas/src/Util.h +0 -9
- package/slides/node_modules/canvas/src/bmp/BMPParser.cc +0 -459
- package/slides/node_modules/canvas/src/bmp/BMPParser.h +0 -60
- package/slides/node_modules/canvas/src/bmp/LICENSE.md +0 -24
- package/slides/node_modules/canvas/src/closure.cc +0 -52
- package/slides/node_modules/canvas/src/closure.h +0 -98
- package/slides/node_modules/canvas/src/color.cc +0 -796
- package/slides/node_modules/canvas/src/color.h +0 -30
- package/slides/node_modules/canvas/src/dll_visibility.h +0 -20
- package/slides/node_modules/canvas/src/init.cc +0 -114
- package/slides/node_modules/canvas/src/register_font.cc +0 -352
- package/slides/node_modules/canvas/src/register_font.h +0 -7
- package/slides/node_modules/canvas/util/has_lib.js +0 -119
- package/slides/node_modules/canvas/util/win_jpeg_lookup.js +0 -21
- package/slides/node_modules/chownr/LICENSE +0 -15
- package/slides/node_modules/chownr/README.md +0 -3
- package/slides/node_modules/chownr/chownr.js +0 -167
- package/slides/node_modules/chownr/package.json +0 -29
- package/slides/node_modules/core-util-is/LICENSE +0 -19
- package/slides/node_modules/core-util-is/README.md +0 -3
- package/slides/node_modules/core-util-is/lib/util.js +0 -107
- package/slides/node_modules/core-util-is/package.json +0 -38
- package/slides/node_modules/decompress-response/index.d.ts +0 -22
- package/slides/node_modules/decompress-response/index.js +0 -58
- package/slides/node_modules/decompress-response/license +0 -9
- package/slides/node_modules/decompress-response/package.json +0 -56
- package/slides/node_modules/decompress-response/readme.md +0 -48
- package/slides/node_modules/deep-extend/CHANGELOG.md +0 -46
- package/slides/node_modules/deep-extend/LICENSE +0 -20
- package/slides/node_modules/deep-extend/README.md +0 -91
- package/slides/node_modules/deep-extend/index.js +0 -1
- package/slides/node_modules/deep-extend/lib/deep-extend.js +0 -150
- package/slides/node_modules/deep-extend/package.json +0 -62
- package/slides/node_modules/detect-libc/LICENSE +0 -201
- package/slides/node_modules/detect-libc/README.md +0 -163
- package/slides/node_modules/detect-libc/index.d.ts +0 -14
- package/slides/node_modules/detect-libc/lib/detect-libc.js +0 -313
- package/slides/node_modules/detect-libc/lib/elf.js +0 -39
- package/slides/node_modules/detect-libc/lib/filesystem.js +0 -51
- package/slides/node_modules/detect-libc/lib/process.js +0 -24
- package/slides/node_modules/detect-libc/package.json +0 -44
- package/slides/node_modules/end-of-stream/LICENSE +0 -21
- package/slides/node_modules/end-of-stream/README.md +0 -54
- package/slides/node_modules/end-of-stream/index.js +0 -96
- package/slides/node_modules/end-of-stream/package.json +0 -37
- package/slides/node_modules/expand-template/.travis.yml +0 -6
- package/slides/node_modules/expand-template/LICENSE +0 -21
- package/slides/node_modules/expand-template/README.md +0 -43
- package/slides/node_modules/expand-template/index.js +0 -26
- package/slides/node_modules/expand-template/package.json +0 -29
- package/slides/node_modules/expand-template/test.js +0 -67
- package/slides/node_modules/fs-constants/LICENSE +0 -21
- package/slides/node_modules/fs-constants/README.md +0 -26
- package/slides/node_modules/fs-constants/browser.js +0 -1
- package/slides/node_modules/fs-constants/index.js +0 -1
- package/slides/node_modules/fs-constants/package.json +0 -19
- package/slides/node_modules/github-from-package/.travis.yml +0 -4
- package/slides/node_modules/github-from-package/LICENSE +0 -18
- package/slides/node_modules/github-from-package/example/package.json +0 -8
- package/slides/node_modules/github-from-package/example/url.js +0 -3
- package/slides/node_modules/github-from-package/index.js +0 -17
- package/slides/node_modules/github-from-package/package.json +0 -30
- package/slides/node_modules/github-from-package/readme.markdown +0 -53
- package/slides/node_modules/github-from-package/test/a.json +0 -8
- package/slides/node_modules/github-from-package/test/b.json +0 -5
- package/slides/node_modules/github-from-package/test/c.json +0 -5
- package/slides/node_modules/github-from-package/test/d.json +0 -7
- package/slides/node_modules/github-from-package/test/e.json +0 -5
- package/slides/node_modules/github-from-package/test/url.js +0 -19
- package/slides/node_modules/https/package.json +0 -15
- package/slides/node_modules/ieee754/LICENSE +0 -11
- package/slides/node_modules/ieee754/README.md +0 -51
- package/slides/node_modules/ieee754/index.d.ts +0 -10
- package/slides/node_modules/ieee754/index.js +0 -85
- package/slides/node_modules/ieee754/package.json +0 -52
- package/slides/node_modules/image-size/LICENSE +0 -9
- package/slides/node_modules/image-size/Readme.md +0 -184
- package/slides/node_modules/image-size/bin/image-size.js +0 -53
- package/slides/node_modules/image-size/dist/detector.d.ts +0 -2
- package/slides/node_modules/image-size/dist/detector.js +0 -30
- package/slides/node_modules/image-size/dist/index.d.ts +0 -10
- package/slides/node_modules/image-size/dist/index.js +0 -129
- package/slides/node_modules/image-size/dist/types/bmp.d.ts +0 -2
- package/slides/node_modules/image-size/dist/types/bmp.js +0 -11
- package/slides/node_modules/image-size/dist/types/cur.d.ts +0 -2
- package/slides/node_modules/image-size/dist/types/cur.js +0 -17
- package/slides/node_modules/image-size/dist/types/dds.d.ts +0 -2
- package/slides/node_modules/image-size/dist/types/dds.js +0 -11
- package/slides/node_modules/image-size/dist/types/gif.d.ts +0 -2
- package/slides/node_modules/image-size/dist/types/gif.js +0 -12
- package/slides/node_modules/image-size/dist/types/heif.d.ts +0 -2
- package/slides/node_modules/image-size/dist/types/heif.js +0 -40
- package/slides/node_modules/image-size/dist/types/icns.d.ts +0 -2
- package/slides/node_modules/image-size/dist/types/icns.js +0 -101
- package/slides/node_modules/image-size/dist/types/ico.d.ts +0 -2
- package/slides/node_modules/image-size/dist/types/ico.js +0 -68
- package/slides/node_modules/image-size/dist/types/index.d.ts +0 -23
- package/slides/node_modules/image-size/dist/types/index.js +0 -46
- package/slides/node_modules/image-size/dist/types/interface.d.ts +0 -13
- package/slides/node_modules/image-size/dist/types/interface.js +0 -2
- package/slides/node_modules/image-size/dist/types/j2c.d.ts +0 -2
- package/slides/node_modules/image-size/dist/types/j2c.js +0 -12
- package/slides/node_modules/image-size/dist/types/jp2.d.ts +0 -2
- package/slides/node_modules/image-size/dist/types/jp2.js +0 -27
- package/slides/node_modules/image-size/dist/types/jpg.d.ts +0 -2
- package/slides/node_modules/image-size/dist/types/jpg.js +0 -123
- package/slides/node_modules/image-size/dist/types/jxl-stream.d.ts +0 -2
- package/slides/node_modules/image-size/dist/types/jxl-stream.js +0 -45
- package/slides/node_modules/image-size/dist/types/jxl.d.ts +0 -2
- package/slides/node_modules/image-size/dist/types/jxl.js +0 -59
- package/slides/node_modules/image-size/dist/types/ktx.d.ts +0 -2
- package/slides/node_modules/image-size/dist/types/ktx.js +0 -19
- package/slides/node_modules/image-size/dist/types/png.d.ts +0 -2
- package/slides/node_modules/image-size/dist/types/png.js +0 -35
- package/slides/node_modules/image-size/dist/types/pnm.d.ts +0 -2
- package/slides/node_modules/image-size/dist/types/pnm.js +0 -72
- package/slides/node_modules/image-size/dist/types/psd.d.ts +0 -2
- package/slides/node_modules/image-size/dist/types/psd.js +0 -11
- package/slides/node_modules/image-size/dist/types/svg.d.ts +0 -2
- package/slides/node_modules/image-size/dist/types/svg.js +0 -90
- package/slides/node_modules/image-size/dist/types/tga.d.ts +0 -2
- package/slides/node_modules/image-size/dist/types/tga.js +0 -15
- package/slides/node_modules/image-size/dist/types/tiff.d.ts +0 -2
- package/slides/node_modules/image-size/dist/types/tiff.js +0 -95
- package/slides/node_modules/image-size/dist/types/utils.d.ts +0 -15
- package/slides/node_modules/image-size/dist/types/utils.js +0 -75
- package/slides/node_modules/image-size/dist/types/webp.d.ts +0 -2
- package/slides/node_modules/image-size/dist/types/webp.js +0 -60
- package/slides/node_modules/image-size/dist/utils/bit-reader.d.ts +0 -10
- package/slides/node_modules/image-size/dist/utils/bit-reader.js +0 -44
- package/slides/node_modules/image-size/package.json +0 -81
- package/slides/node_modules/immediate/LICENSE.txt +0 -20
- package/slides/node_modules/immediate/README.md +0 -93
- package/slides/node_modules/immediate/dist/immediate.js +0 -75
- package/slides/node_modules/immediate/dist/immediate.min.js +0 -1
- package/slides/node_modules/immediate/lib/browser.js +0 -69
- package/slides/node_modules/immediate/lib/index.js +0 -73
- package/slides/node_modules/immediate/package.json +0 -42
- package/slides/node_modules/inherits/LICENSE +0 -16
- package/slides/node_modules/inherits/README.md +0 -42
- package/slides/node_modules/inherits/inherits.js +0 -9
- package/slides/node_modules/inherits/inherits_browser.js +0 -27
- package/slides/node_modules/inherits/package.json +0 -29
- package/slides/node_modules/ini/LICENSE +0 -15
- package/slides/node_modules/ini/README.md +0 -102
- package/slides/node_modules/ini/ini.js +0 -206
- package/slides/node_modules/ini/package.json +0 -33
- package/slides/node_modules/isarray/.travis.yml +0 -4
- package/slides/node_modules/isarray/Makefile +0 -6
- package/slides/node_modules/isarray/README.md +0 -60
- package/slides/node_modules/isarray/component.json +0 -19
- package/slides/node_modules/isarray/index.js +0 -5
- package/slides/node_modules/isarray/package.json +0 -45
- package/slides/node_modules/isarray/test.js +0 -20
- package/slides/node_modules/jszip/.codeclimate.yml +0 -16
- package/slides/node_modules/jszip/.editorconfig +0 -8
- package/slides/node_modules/jszip/.eslintrc.js +0 -43
- package/slides/node_modules/jszip/.github/workflows/pr.yaml +0 -58
- package/slides/node_modules/jszip/.jekyll-metadata +0 -0
- package/slides/node_modules/jszip/.travis.yml +0 -17
- package/slides/node_modules/jszip/CHANGES.md +0 -204
- package/slides/node_modules/jszip/LICENSE.markdown +0 -651
- package/slides/node_modules/jszip/README.markdown +0 -33
- package/slides/node_modules/jszip/deps.js +0 -37
- package/slides/node_modules/jszip/dist/jszip.js +0 -11577
- package/slides/node_modules/jszip/dist/jszip.min.js +0 -13
- package/slides/node_modules/jszip/graph.svg +0 -601
- package/slides/node_modules/jszip/index.d.ts +0 -330
- package/slides/node_modules/jszip/lib/base64.js +0 -106
- package/slides/node_modules/jszip/lib/compressedObject.js +0 -74
- package/slides/node_modules/jszip/lib/compressions.js +0 -14
- package/slides/node_modules/jszip/lib/crc32.js +0 -77
- package/slides/node_modules/jszip/lib/defaults.js +0 -11
- package/slides/node_modules/jszip/lib/external.js +0 -18
- package/slides/node_modules/jszip/lib/flate.js +0 -85
- package/slides/node_modules/jszip/lib/generate/ZipFileWorker.js +0 -539
- package/slides/node_modules/jszip/lib/generate/index.js +0 -57
- package/slides/node_modules/jszip/lib/index.js +0 -55
- package/slides/node_modules/jszip/lib/license_header.js +0 -11
- package/slides/node_modules/jszip/lib/load.js +0 -88
- package/slides/node_modules/jszip/lib/nodejs/NodejsStreamInputAdapter.js +0 -74
- package/slides/node_modules/jszip/lib/nodejs/NodejsStreamOutputAdapter.js +0 -42
- package/slides/node_modules/jszip/lib/nodejsUtils.js +0 -57
- package/slides/node_modules/jszip/lib/object.js +0 -384
- package/slides/node_modules/jszip/lib/readable-stream-browser.js +0 -10
- package/slides/node_modules/jszip/lib/reader/ArrayReader.js +0 -57
- package/slides/node_modules/jszip/lib/reader/DataReader.js +0 -116
- package/slides/node_modules/jszip/lib/reader/NodeBufferReader.js +0 -19
- package/slides/node_modules/jszip/lib/reader/StringReader.js +0 -38
- package/slides/node_modules/jszip/lib/reader/Uint8ArrayReader.js +0 -22
- package/slides/node_modules/jszip/lib/reader/readerFor.js +0 -28
- package/slides/node_modules/jszip/lib/signature.js +0 -7
- package/slides/node_modules/jszip/lib/stream/ConvertWorker.js +0 -26
- package/slides/node_modules/jszip/lib/stream/Crc32Probe.js +0 -24
- package/slides/node_modules/jszip/lib/stream/DataLengthProbe.js +0 -29
- package/slides/node_modules/jszip/lib/stream/DataWorker.js +0 -116
- package/slides/node_modules/jszip/lib/stream/GenericWorker.js +0 -263
- package/slides/node_modules/jszip/lib/stream/StreamHelper.js +0 -214
- package/slides/node_modules/jszip/lib/support.js +0 -38
- package/slides/node_modules/jszip/lib/utf8.js +0 -275
- package/slides/node_modules/jszip/lib/utils.js +0 -501
- package/slides/node_modules/jszip/lib/zipEntries.js +0 -261
- package/slides/node_modules/jszip/lib/zipEntry.js +0 -293
- package/slides/node_modules/jszip/lib/zipObject.js +0 -133
- package/slides/node_modules/jszip/package.json +0 -67
- package/slides/node_modules/jszip/sponsors.md +0 -21
- package/slides/node_modules/jszip/tsconfig.json +0 -101
- package/slides/node_modules/jszip/vendor/FileSaver.js +0 -247
- package/slides/node_modules/lie/README.md +0 -62
- package/slides/node_modules/lie/dist/lie.js +0 -350
- package/slides/node_modules/lie/dist/lie.min.js +0 -1
- package/slides/node_modules/lie/dist/lie.polyfill.js +0 -358
- package/slides/node_modules/lie/dist/lie.polyfill.min.js +0 -1
- package/slides/node_modules/lie/lib/browser.js +0 -273
- package/slides/node_modules/lie/lib/index.js +0 -298
- package/slides/node_modules/lie/license.md +0 -7
- package/slides/node_modules/lie/lie.d.ts +0 -244
- package/slides/node_modules/lie/package.json +0 -69
- package/slides/node_modules/lie/polyfill.js +0 -4
- package/slides/node_modules/mimic-response/index.d.ts +0 -17
- package/slides/node_modules/mimic-response/index.js +0 -77
- package/slides/node_modules/mimic-response/license +0 -9
- package/slides/node_modules/mimic-response/package.json +0 -42
- package/slides/node_modules/mimic-response/readme.md +0 -78
- package/slides/node_modules/minimist/.eslintrc +0 -29
- package/slides/node_modules/minimist/.github/FUNDING.yml +0 -12
- package/slides/node_modules/minimist/.nycrc +0 -14
- package/slides/node_modules/minimist/CHANGELOG.md +0 -298
- package/slides/node_modules/minimist/LICENSE +0 -18
- package/slides/node_modules/minimist/README.md +0 -121
- package/slides/node_modules/minimist/example/parse.js +0 -4
- package/slides/node_modules/minimist/index.js +0 -263
- package/slides/node_modules/minimist/package.json +0 -75
- package/slides/node_modules/minimist/test/all_bool.js +0 -34
- package/slides/node_modules/minimist/test/bool.js +0 -177
- package/slides/node_modules/minimist/test/dash.js +0 -43
- package/slides/node_modules/minimist/test/default_bool.js +0 -37
- package/slides/node_modules/minimist/test/dotted.js +0 -24
- package/slides/node_modules/minimist/test/kv_short.js +0 -32
- package/slides/node_modules/minimist/test/long.js +0 -33
- package/slides/node_modules/minimist/test/num.js +0 -38
- package/slides/node_modules/minimist/test/parse.js +0 -209
- package/slides/node_modules/minimist/test/parse_modified.js +0 -11
- package/slides/node_modules/minimist/test/proto.js +0 -64
- package/slides/node_modules/minimist/test/short.js +0 -69
- package/slides/node_modules/minimist/test/stop_early.js +0 -17
- package/slides/node_modules/minimist/test/unknown.js +0 -104
- package/slides/node_modules/minimist/test/whitespace.js +0 -10
- package/slides/node_modules/mkdirp-classic/LICENSE +0 -21
- package/slides/node_modules/mkdirp-classic/README.md +0 -18
- package/slides/node_modules/mkdirp-classic/index.js +0 -98
- package/slides/node_modules/mkdirp-classic/package.json +0 -18
- package/slides/node_modules/napi-build-utils/.github/workflows/run-npm-tests.yml +0 -31
- package/slides/node_modules/napi-build-utils/LICENSE +0 -21
- package/slides/node_modules/napi-build-utils/README.md +0 -52
- package/slides/node_modules/napi-build-utils/index.js +0 -214
- package/slides/node_modules/napi-build-utils/index.md +0 -0
- package/slides/node_modules/napi-build-utils/package.json +0 -42
- package/slides/node_modules/node-abi/LICENSE +0 -21
- package/slides/node_modules/node-abi/README.md +0 -54
- package/slides/node_modules/node-abi/abi_registry.json +0 -439
- package/slides/node_modules/node-abi/index.js +0 -179
- package/slides/node_modules/node-abi/package.json +0 -45
- package/slides/node_modules/node-addon-api/LICENSE.md +0 -9
- package/slides/node_modules/node-addon-api/README.md +0 -319
- package/slides/node_modules/node-addon-api/common.gypi +0 -20
- package/slides/node_modules/node-addon-api/except.gypi +0 -25
- package/slides/node_modules/node-addon-api/index.js +0 -12
- package/slides/node_modules/node-addon-api/napi-inl.deprecated.h +0 -186
- package/slides/node_modules/node-addon-api/napi-inl.h +0 -6607
- package/slides/node_modules/node-addon-api/napi.h +0 -3201
- package/slides/node_modules/node-addon-api/node_addon_api.gyp +0 -32
- package/slides/node_modules/node-addon-api/node_api.gyp +0 -9
- package/slides/node_modules/node-addon-api/noexcept.gypi +0 -26
- package/slides/node_modules/node-addon-api/nothing.c +0 -0
- package/slides/node_modules/node-addon-api/package-support.json +0 -21
- package/slides/node_modules/node-addon-api/package.json +0 -480
- package/slides/node_modules/node-addon-api/tools/README.md +0 -73
- package/slides/node_modules/node-addon-api/tools/check-napi.js +0 -99
- package/slides/node_modules/node-addon-api/tools/clang-format.js +0 -71
- package/slides/node_modules/node-addon-api/tools/conversion.js +0 -301
- package/slides/node_modules/node-addon-api/tools/eslint-format.js +0 -79
- package/slides/node_modules/once/LICENSE +0 -15
- package/slides/node_modules/once/README.md +0 -79
- package/slides/node_modules/once/once.js +0 -42
- package/slides/node_modules/once/package.json +0 -33
- package/slides/node_modules/pako/CHANGELOG.md +0 -164
- package/slides/node_modules/pako/LICENSE +0 -21
- package/slides/node_modules/pako/README.md +0 -191
- package/slides/node_modules/pako/dist/pako.js +0 -6818
- package/slides/node_modules/pako/dist/pako.min.js +0 -1
- package/slides/node_modules/pako/dist/pako_deflate.js +0 -3997
- package/slides/node_modules/pako/dist/pako_deflate.min.js +0 -1
- package/slides/node_modules/pako/dist/pako_inflate.js +0 -3300
- package/slides/node_modules/pako/dist/pako_inflate.min.js +0 -1
- package/slides/node_modules/pako/index.js +0 -14
- package/slides/node_modules/pako/lib/deflate.js +0 -400
- package/slides/node_modules/pako/lib/inflate.js +0 -423
- package/slides/node_modules/pako/lib/utils/common.js +0 -105
- package/slides/node_modules/pako/lib/utils/strings.js +0 -187
- package/slides/node_modules/pako/lib/zlib/README +0 -59
- package/slides/node_modules/pako/lib/zlib/adler32.js +0 -51
- package/slides/node_modules/pako/lib/zlib/constants.js +0 -68
- package/slides/node_modules/pako/lib/zlib/crc32.js +0 -59
- package/slides/node_modules/pako/lib/zlib/deflate.js +0 -1874
- package/slides/node_modules/pako/lib/zlib/gzheader.js +0 -58
- package/slides/node_modules/pako/lib/zlib/inffast.js +0 -345
- package/slides/node_modules/pako/lib/zlib/inflate.js +0 -1556
- package/slides/node_modules/pako/lib/zlib/inftrees.js +0 -343
- package/slides/node_modules/pako/lib/zlib/messages.js +0 -32
- package/slides/node_modules/pako/lib/zlib/trees.js +0 -1222
- package/slides/node_modules/pako/lib/zlib/zstream.js +0 -47
- package/slides/node_modules/pako/package.json +0 -44
- package/slides/node_modules/pptxgenjs/LICENSE +0 -21
- package/slides/node_modules/pptxgenjs/README.md +0 -224
- package/slides/node_modules/pptxgenjs/dist/pptxgen.bundle.js +0 -96
- package/slides/node_modules/pptxgenjs/dist/pptxgen.bundle.js.map +0 -1
- package/slides/node_modules/pptxgenjs/dist/pptxgen.cjs.js +0 -7370
- package/slides/node_modules/pptxgenjs/dist/pptxgen.es.js +0 -7368
- package/slides/node_modules/pptxgenjs/dist/pptxgen.min.js +0 -96
- package/slides/node_modules/pptxgenjs/dist/pptxgen.min.js.map +0 -1
- package/slides/node_modules/pptxgenjs/package.json +0 -96
- package/slides/node_modules/pptxgenjs/types/index.d.ts +0 -2679
- package/slides/node_modules/prebuild-install/CHANGELOG.md +0 -131
- package/slides/node_modules/prebuild-install/CONTRIBUTING.md +0 -6
- package/slides/node_modules/prebuild-install/LICENSE +0 -21
- package/slides/node_modules/prebuild-install/README.md +0 -163
- package/slides/node_modules/prebuild-install/asset.js +0 -44
- package/slides/node_modules/prebuild-install/bin.js +0 -78
- package/slides/node_modules/prebuild-install/download.js +0 -142
- package/slides/node_modules/prebuild-install/error.js +0 -14
- package/slides/node_modules/prebuild-install/help.txt +0 -16
- package/slides/node_modules/prebuild-install/index.js +0 -1
- package/slides/node_modules/prebuild-install/log.js +0 -33
- package/slides/node_modules/prebuild-install/package.json +0 -67
- package/slides/node_modules/prebuild-install/proxy.js +0 -35
- package/slides/node_modules/prebuild-install/rc.js +0 -64
- package/slides/node_modules/prebuild-install/util.js +0 -143
- package/slides/node_modules/process-nextick-args/index.js +0 -45
- package/slides/node_modules/process-nextick-args/license.md +0 -19
- package/slides/node_modules/process-nextick-args/package.json +0 -25
- package/slides/node_modules/process-nextick-args/readme.md +0 -18
- package/slides/node_modules/pump/.github/FUNDING.yml +0 -2
- package/slides/node_modules/pump/.travis.yml +0 -5
- package/slides/node_modules/pump/LICENSE +0 -21
- package/slides/node_modules/pump/README.md +0 -74
- package/slides/node_modules/pump/SECURITY.md +0 -5
- package/slides/node_modules/pump/empty.js +0 -1
- package/slides/node_modules/pump/index.js +0 -86
- package/slides/node_modules/pump/package.json +0 -30
- package/slides/node_modules/pump/test-browser.js +0 -66
- package/slides/node_modules/pump/test-node.js +0 -53
- package/slides/node_modules/queue/LICENSE +0 -8
- package/slides/node_modules/queue/index.d.ts +0 -173
- package/slides/node_modules/queue/index.js +0 -195
- package/slides/node_modules/queue/package.json +0 -43
- package/slides/node_modules/queue/readme.md +0 -221
- package/slides/node_modules/rc/LICENSE.APACHE2 +0 -15
- package/slides/node_modules/rc/LICENSE.BSD +0 -26
- package/slides/node_modules/rc/LICENSE.MIT +0 -24
- package/slides/node_modules/rc/README.md +0 -227
- package/slides/node_modules/rc/browser.js +0 -7
- package/slides/node_modules/rc/cli.js +0 -4
- package/slides/node_modules/rc/index.js +0 -53
- package/slides/node_modules/rc/lib/utils.js +0 -104
- package/slides/node_modules/rc/package.json +0 -29
- package/slides/node_modules/rc/test/ini.js +0 -16
- package/slides/node_modules/rc/test/nested-env-vars.js +0 -50
- package/slides/node_modules/rc/test/test.js +0 -59
- package/slides/node_modules/readable-stream/.travis.yml +0 -34
- package/slides/node_modules/readable-stream/CONTRIBUTING.md +0 -38
- package/slides/node_modules/readable-stream/GOVERNANCE.md +0 -136
- package/slides/node_modules/readable-stream/LICENSE +0 -47
- package/slides/node_modules/readable-stream/README.md +0 -58
- package/slides/node_modules/readable-stream/doc/wg-meetings/2015-01-30.md +0 -60
- package/slides/node_modules/readable-stream/duplex-browser.js +0 -1
- package/slides/node_modules/readable-stream/duplex.js +0 -1
- package/slides/node_modules/readable-stream/lib/_stream_duplex.js +0 -131
- package/slides/node_modules/readable-stream/lib/_stream_passthrough.js +0 -47
- package/slides/node_modules/readable-stream/lib/_stream_readable.js +0 -1019
- package/slides/node_modules/readable-stream/lib/_stream_transform.js +0 -214
- package/slides/node_modules/readable-stream/lib/_stream_writable.js +0 -685
- package/slides/node_modules/readable-stream/lib/internal/streams/BufferList.js +0 -78
- package/slides/node_modules/readable-stream/lib/internal/streams/destroy.js +0 -84
- package/slides/node_modules/readable-stream/lib/internal/streams/stream-browser.js +0 -1
- package/slides/node_modules/readable-stream/lib/internal/streams/stream.js +0 -1
- package/slides/node_modules/readable-stream/package.json +0 -52
- package/slides/node_modules/readable-stream/passthrough.js +0 -1
- package/slides/node_modules/readable-stream/readable-browser.js +0 -7
- package/slides/node_modules/readable-stream/readable.js +0 -19
- package/slides/node_modules/readable-stream/transform.js +0 -1
- package/slides/node_modules/readable-stream/writable-browser.js +0 -1
- package/slides/node_modules/readable-stream/writable.js +0 -8
- package/slides/node_modules/safe-buffer/LICENSE +0 -21
- package/slides/node_modules/safe-buffer/README.md +0 -584
- package/slides/node_modules/safe-buffer/index.d.ts +0 -187
- package/slides/node_modules/safe-buffer/index.js +0 -62
- package/slides/node_modules/safe-buffer/package.json +0 -37
- package/slides/node_modules/semver/LICENSE +0 -15
- package/slides/node_modules/semver/README.md +0 -665
- package/slides/node_modules/semver/bin/semver.js +0 -191
- package/slides/node_modules/semver/classes/comparator.js +0 -143
- package/slides/node_modules/semver/classes/index.js +0 -7
- package/slides/node_modules/semver/classes/range.js +0 -557
- package/slides/node_modules/semver/classes/semver.js +0 -333
- package/slides/node_modules/semver/functions/clean.js +0 -8
- package/slides/node_modules/semver/functions/cmp.js +0 -54
- package/slides/node_modules/semver/functions/coerce.js +0 -62
- package/slides/node_modules/semver/functions/compare-build.js +0 -9
- package/slides/node_modules/semver/functions/compare-loose.js +0 -5
- package/slides/node_modules/semver/functions/compare.js +0 -7
- package/slides/node_modules/semver/functions/diff.js +0 -60
- package/slides/node_modules/semver/functions/eq.js +0 -5
- package/slides/node_modules/semver/functions/gt.js +0 -5
- package/slides/node_modules/semver/functions/gte.js +0 -5
- package/slides/node_modules/semver/functions/inc.js +0 -21
- package/slides/node_modules/semver/functions/lt.js +0 -5
- package/slides/node_modules/semver/functions/lte.js +0 -5
- package/slides/node_modules/semver/functions/major.js +0 -5
- package/slides/node_modules/semver/functions/minor.js +0 -5
- package/slides/node_modules/semver/functions/neq.js +0 -5
- package/slides/node_modules/semver/functions/parse.js +0 -18
- package/slides/node_modules/semver/functions/patch.js +0 -5
- package/slides/node_modules/semver/functions/prerelease.js +0 -8
- package/slides/node_modules/semver/functions/rcompare.js +0 -5
- package/slides/node_modules/semver/functions/rsort.js +0 -5
- package/slides/node_modules/semver/functions/satisfies.js +0 -12
- package/slides/node_modules/semver/functions/sort.js +0 -5
- package/slides/node_modules/semver/functions/valid.js +0 -8
- package/slides/node_modules/semver/index.js +0 -91
- package/slides/node_modules/semver/internal/constants.js +0 -37
- package/slides/node_modules/semver/internal/debug.js +0 -11
- package/slides/node_modules/semver/internal/identifiers.js +0 -29
- package/slides/node_modules/semver/internal/lrucache.js +0 -42
- package/slides/node_modules/semver/internal/parse-options.js +0 -17
- package/slides/node_modules/semver/internal/re.js +0 -223
- package/slides/node_modules/semver/package.json +0 -78
- package/slides/node_modules/semver/preload.js +0 -4
- package/slides/node_modules/semver/range.bnf +0 -16
- package/slides/node_modules/semver/ranges/gtr.js +0 -6
- package/slides/node_modules/semver/ranges/intersects.js +0 -9
- package/slides/node_modules/semver/ranges/ltr.js +0 -6
- package/slides/node_modules/semver/ranges/max-satisfying.js +0 -27
- package/slides/node_modules/semver/ranges/min-satisfying.js +0 -26
- package/slides/node_modules/semver/ranges/min-version.js +0 -63
- package/slides/node_modules/semver/ranges/outside.js +0 -82
- package/slides/node_modules/semver/ranges/simplify.js +0 -49
- package/slides/node_modules/semver/ranges/subset.js +0 -249
- package/slides/node_modules/semver/ranges/to-comparators.js +0 -10
- package/slides/node_modules/semver/ranges/valid.js +0 -13
- package/slides/node_modules/setimmediate/LICENSE.txt +0 -20
- package/slides/node_modules/setimmediate/package.json +0 -30
- package/slides/node_modules/setimmediate/setImmediate.js +0 -186
- package/slides/node_modules/simple-concat/.travis.yml +0 -3
- package/slides/node_modules/simple-concat/LICENSE +0 -20
- package/slides/node_modules/simple-concat/README.md +0 -44
- package/slides/node_modules/simple-concat/index.js +0 -15
- package/slides/node_modules/simple-concat/package.json +0 -47
- package/slides/node_modules/simple-concat/test/basic.js +0 -41
- package/slides/node_modules/simple-get/.github/dependabot.yml +0 -15
- package/slides/node_modules/simple-get/.github/workflows/ci.yml +0 -23
- package/slides/node_modules/simple-get/LICENSE +0 -20
- package/slides/node_modules/simple-get/README.md +0 -333
- package/slides/node_modules/simple-get/index.js +0 -108
- package/slides/node_modules/simple-get/package.json +0 -67
- package/slides/node_modules/string_decoder/.travis.yml +0 -50
- package/slides/node_modules/string_decoder/LICENSE +0 -48
- package/slides/node_modules/string_decoder/README.md +0 -47
- package/slides/node_modules/string_decoder/lib/string_decoder.js +0 -296
- package/slides/node_modules/string_decoder/package.json +0 -31
- package/slides/node_modules/strip-json-comments/index.js +0 -70
- package/slides/node_modules/strip-json-comments/license +0 -21
- package/slides/node_modules/strip-json-comments/package.json +0 -42
- package/slides/node_modules/strip-json-comments/readme.md +0 -64
- package/slides/node_modules/tar-fs/.travis.yml +0 -6
- package/slides/node_modules/tar-fs/LICENSE +0 -21
- package/slides/node_modules/tar-fs/README.md +0 -165
- package/slides/node_modules/tar-fs/index.js +0 -363
- package/slides/node_modules/tar-fs/package.json +0 -41
- package/slides/node_modules/tar-fs/test/fixtures/a/hello.txt +0 -1
- package/slides/node_modules/tar-fs/test/fixtures/b/a/test.txt +0 -1
- package/slides/node_modules/tar-fs/test/fixtures/d/file1 +0 -0
- package/slides/node_modules/tar-fs/test/fixtures/d/file2 +0 -0
- package/slides/node_modules/tar-fs/test/fixtures/d/sub-dir/file5 +0 -0
- package/slides/node_modules/tar-fs/test/fixtures/d/sub-files/file3 +0 -0
- package/slides/node_modules/tar-fs/test/fixtures/d/sub-files/file4 +0 -0
- package/slides/node_modules/tar-fs/test/fixtures/e/directory/.ignore +0 -0
- package/slides/node_modules/tar-fs/test/fixtures/e/file +0 -0
- package/slides/node_modules/tar-fs/test/fixtures/invalid.tar +0 -0
- package/slides/node_modules/tar-fs/test/index.js +0 -346
- package/slides/node_modules/tar-stream/LICENSE +0 -21
- package/slides/node_modules/tar-stream/README.md +0 -168
- package/slides/node_modules/tar-stream/extract.js +0 -257
- package/slides/node_modules/tar-stream/headers.js +0 -295
- package/slides/node_modules/tar-stream/index.js +0 -2
- package/slides/node_modules/tar-stream/node_modules/readable-stream/CONTRIBUTING.md +0 -38
- package/slides/node_modules/tar-stream/node_modules/readable-stream/GOVERNANCE.md +0 -136
- package/slides/node_modules/tar-stream/node_modules/readable-stream/LICENSE +0 -47
- package/slides/node_modules/tar-stream/node_modules/readable-stream/README.md +0 -106
- package/slides/node_modules/tar-stream/node_modules/readable-stream/errors-browser.js +0 -127
- package/slides/node_modules/tar-stream/node_modules/readable-stream/errors.js +0 -116
- package/slides/node_modules/tar-stream/node_modules/readable-stream/experimentalWarning.js +0 -17
- package/slides/node_modules/tar-stream/node_modules/readable-stream/lib/_stream_duplex.js +0 -126
- package/slides/node_modules/tar-stream/node_modules/readable-stream/lib/_stream_passthrough.js +0 -37
- package/slides/node_modules/tar-stream/node_modules/readable-stream/lib/_stream_readable.js +0 -1027
- package/slides/node_modules/tar-stream/node_modules/readable-stream/lib/_stream_transform.js +0 -190
- package/slides/node_modules/tar-stream/node_modules/readable-stream/lib/_stream_writable.js +0 -641
- package/slides/node_modules/tar-stream/node_modules/readable-stream/lib/internal/streams/async_iterator.js +0 -180
- package/slides/node_modules/tar-stream/node_modules/readable-stream/lib/internal/streams/buffer_list.js +0 -183
- package/slides/node_modules/tar-stream/node_modules/readable-stream/lib/internal/streams/destroy.js +0 -96
- package/slides/node_modules/tar-stream/node_modules/readable-stream/lib/internal/streams/end-of-stream.js +0 -86
- package/slides/node_modules/tar-stream/node_modules/readable-stream/lib/internal/streams/from-browser.js +0 -3
- package/slides/node_modules/tar-stream/node_modules/readable-stream/lib/internal/streams/from.js +0 -52
- package/slides/node_modules/tar-stream/node_modules/readable-stream/lib/internal/streams/pipeline.js +0 -86
- package/slides/node_modules/tar-stream/node_modules/readable-stream/lib/internal/streams/state.js +0 -22
- package/slides/node_modules/tar-stream/node_modules/readable-stream/lib/internal/streams/stream-browser.js +0 -1
- package/slides/node_modules/tar-stream/node_modules/readable-stream/lib/internal/streams/stream.js +0 -1
- package/slides/node_modules/tar-stream/node_modules/readable-stream/package.json +0 -68
- package/slides/node_modules/tar-stream/node_modules/readable-stream/readable-browser.js +0 -9
- package/slides/node_modules/tar-stream/node_modules/readable-stream/readable.js +0 -16
- package/slides/node_modules/tar-stream/pack.js +0 -255
- package/slides/node_modules/tar-stream/package.json +0 -58
- package/slides/node_modules/tar-stream/sandbox.js +0 -11
- package/slides/node_modules/tunnel-agent/LICENSE +0 -55
- package/slides/node_modules/tunnel-agent/README.md +0 -4
- package/slides/node_modules/tunnel-agent/index.js +0 -244
- package/slides/node_modules/tunnel-agent/package.json +0 -22
- package/slides/node_modules/undici-types/LICENSE +0 -21
- package/slides/node_modules/undici-types/README.md +0 -6
- package/slides/node_modules/undici-types/agent.d.ts +0 -31
- package/slides/node_modules/undici-types/api.d.ts +0 -43
- package/slides/node_modules/undici-types/balanced-pool.d.ts +0 -29
- package/slides/node_modules/undici-types/cache.d.ts +0 -36
- package/slides/node_modules/undici-types/client.d.ts +0 -108
- package/slides/node_modules/undici-types/connector.d.ts +0 -34
- package/slides/node_modules/undici-types/content-type.d.ts +0 -21
- package/slides/node_modules/undici-types/cookies.d.ts +0 -28
- package/slides/node_modules/undici-types/diagnostics-channel.d.ts +0 -66
- package/slides/node_modules/undici-types/dispatcher.d.ts +0 -256
- package/slides/node_modules/undici-types/env-http-proxy-agent.d.ts +0 -21
- package/slides/node_modules/undici-types/errors.d.ts +0 -149
- package/slides/node_modules/undici-types/eventsource.d.ts +0 -61
- package/slides/node_modules/undici-types/fetch.d.ts +0 -209
- package/slides/node_modules/undici-types/file.d.ts +0 -39
- package/slides/node_modules/undici-types/filereader.d.ts +0 -54
- package/slides/node_modules/undici-types/formdata.d.ts +0 -108
- package/slides/node_modules/undici-types/global-dispatcher.d.ts +0 -9
- package/slides/node_modules/undici-types/global-origin.d.ts +0 -7
- package/slides/node_modules/undici-types/handlers.d.ts +0 -15
- package/slides/node_modules/undici-types/header.d.ts +0 -4
- package/slides/node_modules/undici-types/index.d.ts +0 -71
- package/slides/node_modules/undici-types/interceptors.d.ts +0 -17
- package/slides/node_modules/undici-types/mock-agent.d.ts +0 -50
- package/slides/node_modules/undici-types/mock-client.d.ts +0 -25
- package/slides/node_modules/undici-types/mock-errors.d.ts +0 -12
- package/slides/node_modules/undici-types/mock-interceptor.d.ts +0 -93
- package/slides/node_modules/undici-types/mock-pool.d.ts +0 -25
- package/slides/node_modules/undici-types/package.json +0 -55
- package/slides/node_modules/undici-types/patch.d.ts +0 -33
- package/slides/node_modules/undici-types/pool-stats.d.ts +0 -19
- package/slides/node_modules/undici-types/pool.d.ts +0 -39
- package/slides/node_modules/undici-types/proxy-agent.d.ts +0 -28
- package/slides/node_modules/undici-types/readable.d.ts +0 -65
- package/slides/node_modules/undici-types/retry-agent.d.ts +0 -8
- package/slides/node_modules/undici-types/retry-handler.d.ts +0 -116
- package/slides/node_modules/undici-types/util.d.ts +0 -18
- package/slides/node_modules/undici-types/webidl.d.ts +0 -228
- package/slides/node_modules/undici-types/websocket.d.ts +0 -150
- package/slides/node_modules/util-deprecate/History.md +0 -16
- package/slides/node_modules/util-deprecate/LICENSE +0 -24
- package/slides/node_modules/util-deprecate/README.md +0 -53
- package/slides/node_modules/util-deprecate/browser.js +0 -67
- package/slides/node_modules/util-deprecate/node.js +0 -6
- package/slides/node_modules/util-deprecate/package.json +0 -27
- package/slides/node_modules/wrappy/LICENSE +0 -15
- package/slides/node_modules/wrappy/README.md +0 -36
- package/slides/node_modules/wrappy/package.json +0 -29
- package/slides/node_modules/wrappy/wrappy.js +0 -33
- package/slides/package-lock.json +0 -536
- package/slides/package.json +0 -16
- package/slides/slides.json +0 -238
|
@@ -117,6 +117,116 @@ export function createApi(app, daemon) {
|
|
|
117
117
|
res.json(daemon.locks.getAll());
|
|
118
118
|
});
|
|
119
119
|
|
|
120
|
+
// Coordination protocol — agents declare intent on shared resources
|
|
121
|
+
// (npm install, server restart, package.json edit) to prevent races.
|
|
122
|
+
// Returns 423 Locked if another agent holds a conflicting resource.
|
|
123
|
+
app.post('/api/coordination/declare', (req, res) => {
|
|
124
|
+
const { agentId, operation, resources, ttlMs } = req.body || {};
|
|
125
|
+
if (!agentId || !operation || !Array.isArray(resources) || resources.length === 0) {
|
|
126
|
+
return res.status(400).json({ error: 'agentId, operation, and resources[] required' });
|
|
127
|
+
}
|
|
128
|
+
const result = daemon.locks.declareOperation(agentId, operation, resources, ttlMs);
|
|
129
|
+
if (result.conflict) {
|
|
130
|
+
daemon.audit.log('coordination.conflict', { agentId, operation, resource: result.resource, owner: result.owner });
|
|
131
|
+
return res.status(423).json(result);
|
|
132
|
+
}
|
|
133
|
+
daemon.audit.log('coordination.declared', { agentId, operation, resources });
|
|
134
|
+
daemon.broadcast({ type: 'coordination:declared', agentId, operation, resources });
|
|
135
|
+
res.json({ declared: true, operation, resources });
|
|
136
|
+
});
|
|
137
|
+
|
|
138
|
+
app.post('/api/coordination/complete', (req, res) => {
|
|
139
|
+
const { agentId } = req.body || {};
|
|
140
|
+
if (!agentId) return res.status(400).json({ error: 'agentId required' });
|
|
141
|
+
const removed = daemon.locks.completeOperation(agentId);
|
|
142
|
+
daemon.audit.log('coordination.completed', { agentId });
|
|
143
|
+
daemon.broadcast({ type: 'coordination:completed', agentId });
|
|
144
|
+
res.json({ completed: removed });
|
|
145
|
+
});
|
|
146
|
+
|
|
147
|
+
app.get('/api/coordination', (req, res) => {
|
|
148
|
+
res.json({ operations: daemon.locks.getOperations() });
|
|
149
|
+
});
|
|
150
|
+
|
|
151
|
+
// --- Persistent Memory (Layer 7) ---
|
|
152
|
+
// Constraints: project rules discovered by agents / set by user
|
|
153
|
+
app.get('/api/memory/constraints', (req, res) => {
|
|
154
|
+
res.json({ constraints: daemon.memory.listConstraints() });
|
|
155
|
+
});
|
|
156
|
+
|
|
157
|
+
app.post('/api/memory/constraints', (req, res) => {
|
|
158
|
+
const { text, category } = req.body || {};
|
|
159
|
+
const result = daemon.memory.addConstraint({ text, category });
|
|
160
|
+
if (!result.added && result.error) {
|
|
161
|
+
return res.status(400).json(result);
|
|
162
|
+
}
|
|
163
|
+
if (result.added) {
|
|
164
|
+
daemon.audit.log('memory.constraint.added', { hash: result.hash, category });
|
|
165
|
+
daemon.broadcast({ type: 'memory:constraint:added', hash: result.hash });
|
|
166
|
+
}
|
|
167
|
+
res.json(result);
|
|
168
|
+
});
|
|
169
|
+
|
|
170
|
+
app.delete('/api/memory/constraints/:hash', (req, res) => {
|
|
171
|
+
const removed = daemon.memory.removeConstraint(req.params.hash);
|
|
172
|
+
if (removed) {
|
|
173
|
+
daemon.audit.log('memory.constraint.removed', { hash: req.params.hash });
|
|
174
|
+
daemon.broadcast({ type: 'memory:constraint:removed', hash: req.params.hash });
|
|
175
|
+
}
|
|
176
|
+
res.json({ removed });
|
|
177
|
+
});
|
|
178
|
+
|
|
179
|
+
// Handoff chains (per role)
|
|
180
|
+
app.get('/api/memory/handoff-chain/:role', (req, res) => {
|
|
181
|
+
res.json({
|
|
182
|
+
role: req.params.role,
|
|
183
|
+
entries: daemon.memory.getHandoffChain(req.params.role),
|
|
184
|
+
});
|
|
185
|
+
});
|
|
186
|
+
|
|
187
|
+
app.get('/api/memory/handoff-chain/:role/recent', (req, res) => {
|
|
188
|
+
const count = Math.min(parseInt(req.query.count) || 3, 10);
|
|
189
|
+
res.json({
|
|
190
|
+
role: req.params.role,
|
|
191
|
+
markdown: daemon.memory.getRecentHandoffMarkdown(req.params.role, count, 10_000),
|
|
192
|
+
});
|
|
193
|
+
});
|
|
194
|
+
|
|
195
|
+
app.get('/api/memory/handoff-chain', (req, res) => {
|
|
196
|
+
res.json({ roles: daemon.memory.listHandoffRoles() });
|
|
197
|
+
});
|
|
198
|
+
|
|
199
|
+
// Discoveries (error → fix pairs)
|
|
200
|
+
app.get('/api/memory/discoveries', (req, res) => {
|
|
201
|
+
const role = req.query.role;
|
|
202
|
+
const limit = Math.min(parseInt(req.query.limit) || 100, 500);
|
|
203
|
+
res.json({ discoveries: daemon.memory.listDiscoveries({ role, limit }) });
|
|
204
|
+
});
|
|
205
|
+
|
|
206
|
+
app.post('/api/memory/discoveries', (req, res) => {
|
|
207
|
+
const { agentId, role, trigger, fix, outcome } = req.body || {};
|
|
208
|
+
const result = daemon.memory.addDiscovery({ agentId, role, trigger, fix, outcome });
|
|
209
|
+
if (!result.added && result.error) {
|
|
210
|
+
return res.status(400).json(result);
|
|
211
|
+
}
|
|
212
|
+
if (result.added) {
|
|
213
|
+
daemon.audit.log('memory.discovery.added', { agentId, role });
|
|
214
|
+
daemon.broadcast({ type: 'memory:discovery:added', agentId, role });
|
|
215
|
+
}
|
|
216
|
+
res.json(result);
|
|
217
|
+
});
|
|
218
|
+
|
|
219
|
+
// Specializations (per-agent + per-role quality profiles)
|
|
220
|
+
app.get('/api/memory/specializations', (req, res) => {
|
|
221
|
+
res.json(daemon.memory.getAllSpecializations());
|
|
222
|
+
});
|
|
223
|
+
|
|
224
|
+
app.get('/api/memory/specializations/:agentId', (req, res) => {
|
|
225
|
+
const spec = daemon.memory.getSpecialization(req.params.agentId);
|
|
226
|
+
if (!spec) return res.status(404).json({ error: 'No specialization data for this agent' });
|
|
227
|
+
res.json(spec);
|
|
228
|
+
});
|
|
229
|
+
|
|
120
230
|
// Token usage
|
|
121
231
|
app.get('/api/tokens', (req, res) => {
|
|
122
232
|
res.json(daemon.tokens.getAll());
|
|
@@ -375,6 +485,14 @@ export function createApi(app, daemon) {
|
|
|
375
485
|
res.json(rec);
|
|
376
486
|
});
|
|
377
487
|
|
|
488
|
+
// Downshift suggestion — NEVER auto-applied. User must accept via UI.
|
|
489
|
+
// Returns null (204) when classifier has no strong suggestion.
|
|
490
|
+
app.get('/api/agents/:id/routing/suggestion', (req, res) => {
|
|
491
|
+
const suggestion = daemon.router.getSuggestion(req.params.id);
|
|
492
|
+
if (!suggestion) return res.status(204).send();
|
|
493
|
+
res.json(suggestion);
|
|
494
|
+
});
|
|
495
|
+
|
|
378
496
|
// Daemon status
|
|
379
497
|
app.get('/api/status', (req, res) => {
|
|
380
498
|
res.json({
|
|
@@ -459,6 +577,55 @@ export function createApi(app, daemon) {
|
|
|
459
577
|
res.json(daemon.tokens.getSummary());
|
|
460
578
|
});
|
|
461
579
|
|
|
580
|
+
// Per-team token burn ranked by total. Answers "which team burned the most?"
|
|
581
|
+
app.get('/api/tokens/by-team', (req, res) => {
|
|
582
|
+
const agents = daemon.registry.getAll();
|
|
583
|
+
const usage = daemon.tokens.getAll();
|
|
584
|
+
const teams = daemon.teams.list();
|
|
585
|
+
const unassignedId = '__unassigned__';
|
|
586
|
+
|
|
587
|
+
const perTeam = new Map();
|
|
588
|
+
for (const t of teams) {
|
|
589
|
+
perTeam.set(t.id, {
|
|
590
|
+
teamId: t.id,
|
|
591
|
+
teamName: t.name,
|
|
592
|
+
isDefault: !!t.isDefault,
|
|
593
|
+
agentCount: 0,
|
|
594
|
+
totalTokens: 0,
|
|
595
|
+
totalCostUsd: 0,
|
|
596
|
+
avgTokensPerAgent: 0,
|
|
597
|
+
});
|
|
598
|
+
}
|
|
599
|
+
perTeam.set(unassignedId, {
|
|
600
|
+
teamId: unassignedId,
|
|
601
|
+
teamName: '(unassigned)',
|
|
602
|
+
isDefault: false,
|
|
603
|
+
agentCount: 0,
|
|
604
|
+
totalTokens: 0,
|
|
605
|
+
totalCostUsd: 0,
|
|
606
|
+
avgTokensPerAgent: 0,
|
|
607
|
+
});
|
|
608
|
+
|
|
609
|
+
for (const agent of agents) {
|
|
610
|
+
const bucket = perTeam.get(agent.teamId) || perTeam.get(unassignedId);
|
|
611
|
+
const u = usage[agent.id];
|
|
612
|
+
if (!u) continue;
|
|
613
|
+
bucket.agentCount += 1;
|
|
614
|
+
bucket.totalTokens += u.total || 0;
|
|
615
|
+
bucket.totalCostUsd += u.totalCostUsd || 0;
|
|
616
|
+
}
|
|
617
|
+
|
|
618
|
+
const result = [...perTeam.values()]
|
|
619
|
+
.map((t) => ({
|
|
620
|
+
...t,
|
|
621
|
+
avgTokensPerAgent: t.agentCount > 0 ? Math.round(t.totalTokens / t.agentCount) : 0,
|
|
622
|
+
}))
|
|
623
|
+
.filter((t) => t.agentCount > 0 || t.isDefault)
|
|
624
|
+
.sort((a, b) => b.totalTokens - a.totalTokens);
|
|
625
|
+
|
|
626
|
+
res.json({ teams: result });
|
|
627
|
+
});
|
|
628
|
+
|
|
462
629
|
// Stop an agent's current work without killing the agent
|
|
463
630
|
app.post('/api/agents/:id/stop', async (req, res) => {
|
|
464
631
|
try {
|
|
@@ -555,7 +722,7 @@ export function createApi(app, daemon) {
|
|
|
555
722
|
'\nAnswer concisely based on the agent context above.',
|
|
556
723
|
].filter(Boolean).join('\n');
|
|
557
724
|
|
|
558
|
-
const response = await daemon.journalist.callHeadless(prompt);
|
|
725
|
+
const response = await daemon.journalist.callHeadless(prompt, { trackAs: '__agent_qa__' });
|
|
559
726
|
res.json({ response, agentId: agent.id, agentName: agent.name });
|
|
560
727
|
} catch (err) {
|
|
561
728
|
res.status(400).json({ error: err.message });
|
|
@@ -734,7 +901,7 @@ Keep responses concise. Help them think, don't lecture them about the system the
|
|
|
734
901
|
|
|
735
902
|
// Slow path: CLI fallback for subscription auth (~10s)
|
|
736
903
|
const fullPrompt = `${PLAN_SYSTEM}\n\n${prompt}`;
|
|
737
|
-
const response = await daemon.journalist.callHeadless(fullPrompt);
|
|
904
|
+
const response = await daemon.journalist.callHeadless(fullPrompt, { trackAs: '__planner__' });
|
|
738
905
|
res.json({ response, mode: 'cli' });
|
|
739
906
|
} catch (err) {
|
|
740
907
|
res.status(500).json({ error: err.message });
|
|
@@ -2117,7 +2284,8 @@ Keep responses concise. Help them think, don't lecture them about the system the
|
|
|
2117
2284
|
// Per-agent enriched data with quality signals
|
|
2118
2285
|
const agentBreakdown = agents.map((a) => {
|
|
2119
2286
|
const tokenData = daemon.tokens.getAgent(a.id);
|
|
2120
|
-
|
|
2287
|
+
// Cache rate denominator: reads + creation (cacheable), excludes fresh inputTokens
|
|
2288
|
+
const agentCacheable = (tokenData.cacheReadTokens || 0) + (tokenData.cacheCreationTokens || 0);
|
|
2121
2289
|
|
|
2122
2290
|
let quality = null;
|
|
2123
2291
|
try {
|
|
@@ -2156,7 +2324,7 @@ Keep responses concise. Help them think, don't lecture them about the system the
|
|
|
2156
2324
|
costSource: a.provider === 'claude-code' ? 'actual' : a.provider === 'ollama' ? 'local' : 'estimated',
|
|
2157
2325
|
inputTokens: tokenData.inputTokens || 0,
|
|
2158
2326
|
outputTokens: tokenData.outputTokens || 0,
|
|
2159
|
-
cacheHitRate:
|
|
2327
|
+
cacheHitRate: agentCacheable > 0 ? Math.round(((tokenData.cacheReadTokens || 0) / agentCacheable) * 1000) / 1000 : 0,
|
|
2160
2328
|
contextUsage: a.contextUsage || 0,
|
|
2161
2329
|
rotationThreshold: daemon.adaptive.getThreshold(a.provider, a.role),
|
|
2162
2330
|
durationMs: a.durationMs || tokenData.totalDurationMs || 0,
|
|
@@ -35,9 +35,11 @@ const LIGHT_SIGNALS = [
|
|
|
35
35
|
];
|
|
36
36
|
|
|
37
37
|
export class TaskClassifier {
|
|
38
|
-
constructor() {
|
|
38
|
+
constructor(daemon = null) {
|
|
39
39
|
this.windowSize = 200; // Large enough for quality signal extraction across tool calls
|
|
40
40
|
this.agentWindows = {}; // for degradation detection and adaptive scoring
|
|
41
|
+
this.daemon = daemon; // optional — enables broadcast of classification updates
|
|
42
|
+
this._lastBroadcastCount = {}; // per-agent throttle
|
|
41
43
|
}
|
|
42
44
|
|
|
43
45
|
addEvent(agentId, event) {
|
|
@@ -75,6 +77,23 @@ export class TaskClassifier {
|
|
|
75
77
|
window.push({ ...event, timestamp: event.timestamp || Date.now() });
|
|
76
78
|
}
|
|
77
79
|
while (window.length > this.windowSize) window.shift();
|
|
80
|
+
|
|
81
|
+
// Broadcast classification updates periodically. Enables GUI to surface
|
|
82
|
+
// downshift suggestions ("agent's been doing light work — switch to Haiku?").
|
|
83
|
+
// Requires 40+ events before any broadcast; throttles to every 20 events.
|
|
84
|
+
if (this.daemon?.broadcast && window.length >= 40) {
|
|
85
|
+
const lastBroadcast = this._lastBroadcastCount[agentId] || 0;
|
|
86
|
+
if (window.length - lastBroadcast >= 20) {
|
|
87
|
+
this._lastBroadcastCount[agentId] = window.length;
|
|
88
|
+
const tier = this.classify(agentId);
|
|
89
|
+
this.daemon.broadcast({
|
|
90
|
+
type: 'classifier:update',
|
|
91
|
+
agentId,
|
|
92
|
+
tier,
|
|
93
|
+
eventCount: window.length,
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
}
|
|
78
97
|
}
|
|
79
98
|
|
|
80
99
|
// Classify current activity for an agent
|
|
@@ -15,6 +15,16 @@ const DEFAULT_CONFIG = {
|
|
|
15
15
|
qcThreshold: 4,
|
|
16
16
|
maxAgents: 10,
|
|
17
17
|
defaultProvider: 'claude-code',
|
|
18
|
+
// Self-healing rotation triggers. Catch pathological agent behavior
|
|
19
|
+
// (stuck loops, runaway tool-call cycles) and auto-rotate with fresh
|
|
20
|
+
// context. Tokens carry forward; journalist generates handoff brief.
|
|
21
|
+
// Set autoRotate=false to disable and get broadcast-only notifications.
|
|
22
|
+
safety: {
|
|
23
|
+
autoRotate: true,
|
|
24
|
+
tokenCeilingPerAgent: 5_000_000,
|
|
25
|
+
velocityWindowSeconds: 300,
|
|
26
|
+
velocityTokenThreshold: 1_500_000,
|
|
27
|
+
},
|
|
18
28
|
};
|
|
19
29
|
|
|
20
30
|
export function isFirstRun(grooveDir) {
|
|
@@ -123,7 +133,10 @@ export function loadConfig(grooveDir) {
|
|
|
123
133
|
|
|
124
134
|
try {
|
|
125
135
|
const saved = JSON.parse(readFileSync(configPath, 'utf8'));
|
|
126
|
-
|
|
136
|
+
const merged = { ...DEFAULT_CONFIG, ...saved };
|
|
137
|
+
// Deep-merge safety subtree so partial user config doesn't drop defaults
|
|
138
|
+
merged.safety = { ...DEFAULT_CONFIG.safety, ...(saved.safety || {}) };
|
|
139
|
+
return merged;
|
|
127
140
|
} catch {
|
|
128
141
|
return { ...DEFAULT_CONFIG };
|
|
129
142
|
}
|
|
@@ -638,7 +638,7 @@ export class GatewayManager {
|
|
|
638
638
|
'\nSynthesize a concise answer based on the team\'s collective context.',
|
|
639
639
|
].join('\n');
|
|
640
640
|
|
|
641
|
-
const response = await this.daemon.journalist.callHeadless(prompt);
|
|
641
|
+
const response = await this.daemon.journalist.callHeadless(prompt, { trackAs: '__gateway__' });
|
|
642
642
|
return { text: `\ud83d\udcac Team ${result.team.name}:\n${truncate(response, 3000)}` };
|
|
643
643
|
}
|
|
644
644
|
|
|
@@ -659,7 +659,7 @@ export class GatewayManager {
|
|
|
659
659
|
'\nAnswer concisely based on the agent context above.',
|
|
660
660
|
].filter(Boolean).join('\n');
|
|
661
661
|
|
|
662
|
-
const response = await this.daemon.journalist.callHeadless(prompt);
|
|
662
|
+
const response = await this.daemon.journalist.callHeadless(prompt, { trackAs: '__gateway__' });
|
|
663
663
|
return { text: `\ud83d\udcac ${agent.name || agent.id}:\n${truncate(response, 3000)}` };
|
|
664
664
|
}
|
|
665
665
|
|
|
@@ -32,6 +32,7 @@ import { IntegrationStore } from './integrations.js';
|
|
|
32
32
|
import { Scheduler } from './scheduler.js';
|
|
33
33
|
import { FileWatcher } from './filewatcher.js';
|
|
34
34
|
import { TimelineTracker } from './timeline.js';
|
|
35
|
+
import { MemoryStore } from './memory.js';
|
|
35
36
|
import { TerminalManager } from './terminal-pty.js';
|
|
36
37
|
import { GatewayManager } from './gateways/manager.js';
|
|
37
38
|
import { McpManager } from './mcp-manager.js';
|
|
@@ -111,6 +112,7 @@ export class Daemon {
|
|
|
111
112
|
this.registry = new Registry(this.state);
|
|
112
113
|
this.locks = new LockManager(this.grooveDir);
|
|
113
114
|
this.tokens = new TokenTracker(this.grooveDir);
|
|
115
|
+
this.memory = new MemoryStore(this.grooveDir);
|
|
114
116
|
this.timeline = new TimelineTracker(this);
|
|
115
117
|
this.processes = new ProcessManager(this);
|
|
116
118
|
this.introducer = new Introducer(this);
|
|
@@ -120,7 +122,7 @@ export class Daemon {
|
|
|
120
122
|
this.adaptive = new AdaptiveThresholds(this.grooveDir);
|
|
121
123
|
this.teams = new Teams(this);
|
|
122
124
|
this.credentials = new CredentialStore(this.grooveDir);
|
|
123
|
-
this.classifier = new TaskClassifier();
|
|
125
|
+
this.classifier = new TaskClassifier(this);
|
|
124
126
|
this.router = new ModelRouter(this);
|
|
125
127
|
this.pm = new ProjectManager(this);
|
|
126
128
|
this.indexer = new CodebaseIndexer(this);
|
|
@@ -107,6 +107,47 @@ export class Introducer {
|
|
|
107
107
|
}
|
|
108
108
|
}
|
|
109
109
|
|
|
110
|
+
// Project memory (Layer 7) — accumulated wisdom across all prior rotations.
|
|
111
|
+
// Constraints, recent role handoffs, known error→fix patterns. Total cap ~12K chars.
|
|
112
|
+
if (this.daemon.memory) {
|
|
113
|
+
const constraints = this.daemon.memory.getConstraintsMarkdown(4000);
|
|
114
|
+
const recentChain = this.daemon.memory.getRecentHandoffMarkdown(newAgent.role, 3, 4000);
|
|
115
|
+
const discoveries = this.daemon.memory.getDiscoveriesMarkdown(newAgent.role, 20, 4000);
|
|
116
|
+
|
|
117
|
+
if (constraints || recentChain || discoveries) {
|
|
118
|
+
lines.push('');
|
|
119
|
+
lines.push(`## Project Memory`);
|
|
120
|
+
lines.push('');
|
|
121
|
+
lines.push(`This is accumulated knowledge from prior agents working on this project. Read carefully — it will save you from rediscovering what others already learned.`);
|
|
122
|
+
|
|
123
|
+
if (constraints) {
|
|
124
|
+
lines.push('');
|
|
125
|
+
lines.push(`### Constraints`);
|
|
126
|
+
lines.push('');
|
|
127
|
+
lines.push(constraints);
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
if (recentChain) {
|
|
131
|
+
lines.push('');
|
|
132
|
+
lines.push(`### Recent ${newAgent.role} handoffs`);
|
|
133
|
+
lines.push('');
|
|
134
|
+
lines.push(recentChain);
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
if (discoveries) {
|
|
138
|
+
lines.push('');
|
|
139
|
+
lines.push(`### Known patterns (from prior ${newAgent.role} agents)`);
|
|
140
|
+
lines.push('');
|
|
141
|
+
lines.push(discoveries);
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
lines.push('');
|
|
145
|
+
lines.push(`You can contribute to this memory via:`);
|
|
146
|
+
lines.push(`- \`POST /api/memory/discoveries\` — share an error→fix you found`);
|
|
147
|
+
lines.push(`- \`POST /api/memory/constraints\` — declare a project rule you discovered`);
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
|
|
110
151
|
// Project files section — tell the new agent what exists and what to read
|
|
111
152
|
if (allTeamFiles.length > 0) {
|
|
112
153
|
lines.push('');
|
|
@@ -149,11 +190,21 @@ export class Introducer {
|
|
|
149
190
|
lines.push('');
|
|
150
191
|
lines.push(`## Coordination Protocol`);
|
|
151
192
|
lines.push('');
|
|
152
|
-
lines.push(`Before performing shared/destructive actions (restart server, npm install/build, modify package.json, modify shared config),
|
|
153
|
-
lines.push(
|
|
154
|
-
lines.push(`
|
|
155
|
-
lines.push(
|
|
156
|
-
lines.push(`
|
|
193
|
+
lines.push(`Before performing shared/destructive actions (restart server, npm install/build, modify package.json, modify shared config), declare intent via the GROOVE daemon. Another agent holding the same resource will cause a 423 response — wait and retry.`);
|
|
194
|
+
lines.push('');
|
|
195
|
+
lines.push(`Declare:`);
|
|
196
|
+
lines.push('```');
|
|
197
|
+
lines.push(`POST http://127.0.0.1:31415/api/coordination/declare`);
|
|
198
|
+
lines.push(`{ "agentId": "${newAgent.id}", "operation": "npm install", "resources": ["package.json", "node_modules"] }`);
|
|
199
|
+
lines.push('```');
|
|
200
|
+
lines.push('');
|
|
201
|
+
lines.push(`Complete (always call this when done, even on failure):`);
|
|
202
|
+
lines.push('```');
|
|
203
|
+
lines.push(`POST http://127.0.0.1:31415/api/coordination/complete`);
|
|
204
|
+
lines.push(`{ "agentId": "${newAgent.id}" }`);
|
|
205
|
+
lines.push('```');
|
|
206
|
+
lines.push('');
|
|
207
|
+
lines.push(`Operations auto-expire after 10 minutes to prevent deadlock.`);
|
|
157
208
|
}
|
|
158
209
|
|
|
159
210
|
// File safety — prevent agents from deleting files they didn't create
|
|
@@ -355,7 +355,40 @@ export class Journalist {
|
|
|
355
355
|
}
|
|
356
356
|
}
|
|
357
357
|
|
|
358
|
-
|
|
358
|
+
// Extract usage from stream-json stdout and record to token tracker.
|
|
359
|
+
// Reserved agent IDs (__journalist__, __pm__, etc.) capture overhead
|
|
360
|
+
// separately from user-facing agents. Silent no-op if provider doesn't
|
|
361
|
+
// emit usage data.
|
|
362
|
+
_recordHeadlessUsage(stdout, trackAs, modelId) {
|
|
363
|
+
if (!this.daemon?.tokens || !stdout) return;
|
|
364
|
+
const lines = stdout.split('\n');
|
|
365
|
+
for (const line of lines) {
|
|
366
|
+
try {
|
|
367
|
+
const data = JSON.parse(line);
|
|
368
|
+
if (data.type !== 'result') continue;
|
|
369
|
+
const usage = data.usage;
|
|
370
|
+
if (!usage) continue;
|
|
371
|
+
const inputTokens = usage.input_tokens || 0;
|
|
372
|
+
const outputTokens = usage.output_tokens || 0;
|
|
373
|
+
const cacheReadTokens = usage.cache_read_input_tokens || 0;
|
|
374
|
+
const cacheCreationTokens = usage.cache_creation_input_tokens || 0;
|
|
375
|
+
const total = inputTokens + outputTokens + cacheReadTokens + cacheCreationTokens;
|
|
376
|
+
if (total === 0) continue;
|
|
377
|
+
this.daemon.tokens.record(trackAs, {
|
|
378
|
+
tokens: total,
|
|
379
|
+
inputTokens,
|
|
380
|
+
outputTokens,
|
|
381
|
+
cacheReadTokens,
|
|
382
|
+
cacheCreationTokens,
|
|
383
|
+
model: modelId,
|
|
384
|
+
estimatedCostUsd: data.total_cost_usd || 0,
|
|
385
|
+
});
|
|
386
|
+
return;
|
|
387
|
+
} catch { /* skip non-JSON lines */ }
|
|
388
|
+
}
|
|
389
|
+
}
|
|
390
|
+
|
|
391
|
+
async callHeadless(prompt, { trackAs = '__journalist__' } = {}) {
|
|
359
392
|
// Find the best available provider for headless synthesis
|
|
360
393
|
// Priority: claude-code (cheapest via Haiku) > gemini > codex > ollama
|
|
361
394
|
const priority = ['claude-code', 'gemini', 'codex', 'ollama'];
|
|
@@ -391,6 +424,7 @@ export class Journalist {
|
|
|
391
424
|
proc.on('exit', (code) => {
|
|
392
425
|
clearTimeout(timer);
|
|
393
426
|
if (code !== 0) return reject(new Error(`Headless exited with code ${code}`));
|
|
427
|
+
this._recordHeadlessUsage(stdout, trackAs, modelId);
|
|
394
428
|
// Process stdout same as execFile path below
|
|
395
429
|
const lines = stdout.split('\n');
|
|
396
430
|
for (const line of lines) {
|
|
@@ -413,6 +447,8 @@ export class Journalist {
|
|
|
413
447
|
}, (err, stdout, stderr) => {
|
|
414
448
|
if (err) return reject(err);
|
|
415
449
|
|
|
450
|
+
this._recordHeadlessUsage(stdout, trackAs, modelId);
|
|
451
|
+
|
|
416
452
|
// Parse stream-json output to extract the result text
|
|
417
453
|
const lines = stdout.split('\n');
|
|
418
454
|
for (const line of lines) {
|
|
@@ -648,19 +684,44 @@ export class Journalist {
|
|
|
648
684
|
.slice(-3)
|
|
649
685
|
.join('\n');
|
|
650
686
|
|
|
687
|
+
// Pull recent rotation history from persistent memory (Layer 7).
|
|
688
|
+
// Gives the new agent causal continuity: what the last 3 agents struggled
|
|
689
|
+
// with, decided, and solved — not just what the current session did.
|
|
690
|
+
const recentChain = this.daemon.memory?.getRecentHandoffMarkdown(agent.role, 3, 3000) || '';
|
|
691
|
+
|
|
692
|
+
// Pull the user's recent messages to this agent so the new instance
|
|
693
|
+
// can continue the conversation naturally instead of restarting it.
|
|
694
|
+
// Without this, the user feels like their chat was lost.
|
|
695
|
+
const allFeedback = this.getUserFeedback() || [];
|
|
696
|
+
const agentFeedback = allFeedback
|
|
697
|
+
.filter((fb) => fb.agentId === agent.id || fb.agentName === agent.name)
|
|
698
|
+
.slice(-5);
|
|
699
|
+
const conversationSummary = agentFeedback.length > 0
|
|
700
|
+
? agentFeedback.map((fb) => `- "${fb.message}"`).join('\n')
|
|
701
|
+
: '';
|
|
702
|
+
|
|
651
703
|
return [
|
|
652
|
-
`#
|
|
704
|
+
`# Session Continuation`,
|
|
705
|
+
``,
|
|
706
|
+
`You are **${agent.name}** (role: ${agent.role}). This is an internal context refresh — `,
|
|
707
|
+
`the conversation with the user is ongoing and must feel seamless to them. They cannot see this brief.`,
|
|
708
|
+
``,
|
|
709
|
+
`## CRITICAL: Continue Seamlessly`,
|
|
653
710
|
``,
|
|
654
|
-
`
|
|
655
|
-
`
|
|
711
|
+
`Do NOT announce a restart, rotation, or resumption. Do NOT greet the user. Do NOT say `,
|
|
712
|
+
`"resuming", "continuing from where I left off", "let me check state again", or anything `,
|
|
713
|
+
`that signals a break in the conversation. The user's next message should be answered as `,
|
|
714
|
+
`if the last turn of conversation just happened — because from their side, it did.`,
|
|
656
715
|
``,
|
|
716
|
+
conversationSummary ? `## Recent User Messages (what they've been asking for)\n\n${conversationSummary}\n` : '',
|
|
717
|
+
recentChain ? `## Rotation History (recent)\n\n${recentChain}\n` : '',
|
|
657
718
|
`## Your Identity`,
|
|
658
719
|
`- Role: ${agent.role}`,
|
|
659
720
|
`- Scope: ${agent.scope?.join(', ') || 'unrestricted'}`,
|
|
660
721
|
`- Provider: ${agent.provider}`,
|
|
661
722
|
agent.workingDir ? `- Working directory: ${agent.workingDir}` : '',
|
|
662
723
|
``,
|
|
663
|
-
`##
|
|
724
|
+
`## Session State`,
|
|
664
725
|
`- Tokens used: ${agent.tokensUsed}`,
|
|
665
726
|
`- Tool calls: ${entries.filter((e) => e.type === 'tool').length}`,
|
|
666
727
|
``,
|
|
@@ -671,12 +732,13 @@ export class Journalist {
|
|
|
671
732
|
``,
|
|
672
733
|
projectMap ? projectMap.slice(0, 10000) : 'No project map available yet.',
|
|
673
734
|
``,
|
|
674
|
-
`##
|
|
735
|
+
`## How to Respond`,
|
|
675
736
|
``,
|
|
676
|
-
`
|
|
677
|
-
`
|
|
678
|
-
|
|
679
|
-
agent.
|
|
737
|
+
`Wait for the user's next message, then answer it directly. If they asked a question or gave `,
|
|
738
|
+
`an instruction in the Recent User Messages section above and it's still unanswered, address `,
|
|
739
|
+
`that naturally. Match the tone and continuity of a conversation that never paused.`,
|
|
740
|
+
agent.workingDir ? `Stay within your working directory: ${agent.workingDir}.` : '',
|
|
741
|
+
agent.prompt ? `\nOriginal task context: ${agent.prompt}` : '',
|
|
680
742
|
].filter(Boolean).join('\n');
|
|
681
743
|
}
|
|
682
744
|
|
|
@@ -1,14 +1,25 @@
|
|
|
1
1
|
// GROOVE — File Lock Manager
|
|
2
2
|
// FSL-1.1-Apache-2.0 — see LICENSE
|
|
3
|
+
//
|
|
4
|
+
// Two lock namespaces:
|
|
5
|
+
// 1. File-scope locks (register/release/check) — per-agent glob patterns
|
|
6
|
+
// registered at spawn time to enforce scope ownership
|
|
7
|
+
// 2. Operation locks (declareOperation/completeOperation) — short-lived
|
|
8
|
+
// resource claims for coordinated actions (npm install, server restarts,
|
|
9
|
+
// shared config writes). Auto-expire to prevent deadlock if an agent
|
|
10
|
+
// crashes mid-operation.
|
|
3
11
|
|
|
4
12
|
import { readFileSync, writeFileSync, existsSync } from 'fs';
|
|
5
13
|
import { resolve } from 'path';
|
|
6
14
|
import { minimatch } from 'minimatch';
|
|
7
15
|
|
|
16
|
+
const DEFAULT_OPERATION_TTL_MS = 10 * 60 * 1000; // 10 minutes
|
|
17
|
+
|
|
8
18
|
export class LockManager {
|
|
9
19
|
constructor(grooveDir) {
|
|
10
20
|
this.path = resolve(grooveDir, 'locks.json');
|
|
11
21
|
this.locks = new Map(); // agentId -> glob patterns[]
|
|
22
|
+
this.operations = new Map(); // agentId -> { name, resources, acquiredAt, expiresAt }
|
|
12
23
|
this.load();
|
|
13
24
|
}
|
|
14
25
|
|
|
@@ -37,6 +48,7 @@ export class LockManager {
|
|
|
37
48
|
|
|
38
49
|
release(agentId) {
|
|
39
50
|
this.locks.delete(agentId);
|
|
51
|
+
this.operations.delete(agentId);
|
|
40
52
|
this.save();
|
|
41
53
|
}
|
|
42
54
|
|
|
@@ -55,4 +67,52 @@ export class LockManager {
|
|
|
55
67
|
getAll() {
|
|
56
68
|
return Object.fromEntries(this.locks);
|
|
57
69
|
}
|
|
70
|
+
|
|
71
|
+
// --- Operation locks (coordination protocol) ---
|
|
72
|
+
|
|
73
|
+
_expireOperations() {
|
|
74
|
+
const now = Date.now();
|
|
75
|
+
for (const [id, op] of this.operations) {
|
|
76
|
+
if (op.expiresAt <= now) this.operations.delete(id);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
declareOperation(agentId, operation, resources, ttlMs = DEFAULT_OPERATION_TTL_MS) {
|
|
81
|
+
if (!agentId || !operation || !Array.isArray(resources) || resources.length === 0) {
|
|
82
|
+
return { conflict: false, error: 'agentId, operation, and resources[] required' };
|
|
83
|
+
}
|
|
84
|
+
this._expireOperations();
|
|
85
|
+
|
|
86
|
+
for (const [holderId, op] of this.operations) {
|
|
87
|
+
if (holderId === agentId) continue;
|
|
88
|
+
const overlap = op.resources.find((r) => resources.includes(r));
|
|
89
|
+
if (overlap) {
|
|
90
|
+
return {
|
|
91
|
+
conflict: true,
|
|
92
|
+
owner: holderId,
|
|
93
|
+
operation: op.name,
|
|
94
|
+
resource: overlap,
|
|
95
|
+
expiresAt: op.expiresAt,
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
const now = Date.now();
|
|
101
|
+
this.operations.set(agentId, {
|
|
102
|
+
name: operation,
|
|
103
|
+
resources,
|
|
104
|
+
acquiredAt: now,
|
|
105
|
+
expiresAt: now + ttlMs,
|
|
106
|
+
});
|
|
107
|
+
return { conflict: false };
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
completeOperation(agentId) {
|
|
111
|
+
return this.operations.delete(agentId);
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
getOperations() {
|
|
115
|
+
this._expireOperations();
|
|
116
|
+
return Object.fromEntries(this.operations);
|
|
117
|
+
}
|
|
58
118
|
}
|
|
@@ -75,7 +75,7 @@ export class McpManager {
|
|
|
75
75
|
|
|
76
76
|
proc.on('exit', (code, signal) => {
|
|
77
77
|
console.log(`[Groove:MCP:${integrationId}] Process exited: code=${code} signal=${signal}`);
|
|
78
|
-
if (code !== 0 && code !== null) {
|
|
78
|
+
if ((code !== 0 && code !== null) || (code === null && signal)) {
|
|
79
79
|
this._handleCrash(integrationId);
|
|
80
80
|
}
|
|
81
81
|
});
|
|
@@ -102,6 +102,7 @@ export class McpManager {
|
|
|
102
102
|
await this.startServer(integrationId);
|
|
103
103
|
server = this.servers.get(integrationId);
|
|
104
104
|
}
|
|
105
|
+
if (!server) throw new Error(`Failed to start MCP server for ${integrationId}`);
|
|
105
106
|
|
|
106
107
|
server.lastCall = Date.now();
|
|
107
108
|
this._resetIdleTimer(server);
|