jfl 0.4.3 → 0.5.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 +15 -5
- package/dist/commands/context-hub.d.ts.map +1 -1
- package/dist/commands/context-hub.js +818 -39
- package/dist/commands/context-hub.js.map +1 -1
- package/dist/commands/eval.d.ts +1 -1
- package/dist/commands/eval.d.ts.map +1 -1
- package/dist/commands/eval.js +192 -1
- package/dist/commands/eval.js.map +1 -1
- package/dist/commands/findings.d.ts +6 -0
- package/dist/commands/findings.d.ts.map +1 -0
- package/dist/commands/findings.js +203 -0
- package/dist/commands/findings.js.map +1 -0
- package/dist/commands/hud.d.ts.map +1 -1
- package/dist/commands/hud.js +47 -9
- package/dist/commands/hud.js.map +1 -1
- package/dist/commands/ide.d.ts +27 -0
- package/dist/commands/ide.d.ts.map +1 -0
- package/dist/commands/ide.js +546 -0
- package/dist/commands/ide.js.map +1 -0
- package/dist/commands/onboard.d.ts.map +1 -1
- package/dist/commands/onboard.js +212 -2
- package/dist/commands/onboard.js.map +1 -1
- package/dist/commands/openclaw.d.ts +3 -0
- package/dist/commands/openclaw.d.ts.map +1 -1
- package/dist/commands/openclaw.js +76 -2
- package/dist/commands/openclaw.js.map +1 -1
- package/dist/commands/peter.d.ts +3 -0
- package/dist/commands/peter.d.ts.map +1 -1
- package/dist/commands/peter.js +1218 -2
- package/dist/commands/peter.js.map +1 -1
- package/dist/commands/pi-fleet.d.ts +18 -0
- package/dist/commands/pi-fleet.d.ts.map +1 -0
- package/dist/commands/pi-fleet.js +382 -0
- package/dist/commands/pi-fleet.js.map +1 -0
- package/dist/commands/pi.d.ts.map +1 -1
- package/dist/commands/pi.js +18 -3
- package/dist/commands/pi.js.map +1 -1
- package/dist/commands/scope.d.ts.map +1 -1
- package/dist/commands/scope.js +90 -1
- package/dist/commands/scope.js.map +1 -1
- package/dist/commands/services.d.ts.map +1 -1
- package/dist/commands/services.js +18 -0
- package/dist/commands/services.js.map +1 -1
- package/dist/commands/status.d.ts.map +1 -1
- package/dist/commands/status.js +22 -4
- package/dist/commands/status.js.map +1 -1
- package/dist/commands/viz.d.ts.map +1 -1
- package/dist/commands/viz.js +417 -0
- package/dist/commands/viz.js.map +1 -1
- package/dist/dashboard-static/assets/index-B6b867Pv.js +121 -0
- package/dist/dashboard-static/assets/index-Y4BrqxV-.css +1 -0
- package/dist/dashboard-static/index.html +2 -2
- package/dist/index.js +228 -62
- package/dist/index.js.map +1 -1
- package/dist/lib/agent-config.d.ts +52 -0
- package/dist/lib/agent-config.d.ts.map +1 -0
- package/dist/lib/agent-config.js +231 -0
- package/dist/lib/agent-config.js.map +1 -0
- package/dist/lib/agent-generator.d.ts +10 -0
- package/dist/lib/agent-generator.d.ts.map +1 -1
- package/dist/lib/agent-generator.js +64 -10
- package/dist/lib/agent-generator.js.map +1 -1
- package/dist/lib/agent-session.d.ts +104 -0
- package/dist/lib/agent-session.d.ts.map +1 -0
- package/dist/lib/agent-session.js +627 -0
- package/dist/lib/agent-session.js.map +1 -0
- package/dist/lib/eval-snapshot.d.ts +47 -0
- package/dist/lib/eval-snapshot.d.ts.map +1 -0
- package/dist/lib/eval-snapshot.js +315 -0
- package/dist/lib/eval-snapshot.js.map +1 -0
- package/dist/lib/eval-store.d.ts +5 -0
- package/dist/lib/eval-store.d.ts.map +1 -1
- package/dist/lib/eval-store.js +33 -3
- package/dist/lib/eval-store.js.map +1 -1
- package/dist/lib/findings-engine.d.ts +51 -0
- package/dist/lib/findings-engine.d.ts.map +1 -0
- package/dist/lib/findings-engine.js +338 -0
- package/dist/lib/findings-engine.js.map +1 -0
- package/dist/lib/flow-engine.d.ts +8 -0
- package/dist/lib/flow-engine.d.ts.map +1 -1
- package/dist/lib/flow-engine.js +84 -2
- package/dist/lib/flow-engine.js.map +1 -1
- package/dist/lib/hub-client.d.ts +1 -0
- package/dist/lib/hub-client.d.ts.map +1 -1
- package/dist/lib/hub-client.js +33 -6
- package/dist/lib/hub-client.js.map +1 -1
- package/dist/lib/ide-panes.d.ts +58 -0
- package/dist/lib/ide-panes.d.ts.map +1 -0
- package/dist/lib/ide-panes.js +508 -0
- package/dist/lib/ide-panes.js.map +1 -0
- package/dist/lib/memory-db.js +4 -4
- package/dist/lib/memory-db.js.map +1 -1
- package/dist/lib/memory-indexer.d.ts.map +1 -1
- package/dist/lib/memory-indexer.js +3 -0
- package/dist/lib/memory-indexer.js.map +1 -1
- package/dist/lib/memory-search.d.ts +148 -4
- package/dist/lib/memory-search.d.ts.map +1 -1
- package/dist/lib/memory-search.js +496 -58
- package/dist/lib/memory-search.js.map +1 -1
- package/dist/lib/meta-orchestrator.d.ts +104 -0
- package/dist/lib/meta-orchestrator.d.ts.map +1 -0
- package/dist/lib/meta-orchestrator.js +373 -0
- package/dist/lib/meta-orchestrator.js.map +1 -0
- package/dist/lib/peer-agent-generator.d.ts.map +1 -1
- package/dist/lib/peer-agent-generator.js +43 -19
- package/dist/lib/peer-agent-generator.js.map +1 -1
- package/dist/lib/policy-head.d.ts +25 -0
- package/dist/lib/policy-head.d.ts.map +1 -0
- package/dist/lib/policy-head.js +136 -0
- package/dist/lib/policy-head.js.map +1 -0
- package/dist/lib/replay-buffer.d.ts +93 -0
- package/dist/lib/replay-buffer.d.ts.map +1 -0
- package/dist/lib/replay-buffer.js +302 -0
- package/dist/lib/replay-buffer.js.map +1 -0
- package/dist/lib/sentinel-rl.d.ts +97 -0
- package/dist/lib/sentinel-rl.d.ts.map +1 -0
- package/dist/lib/sentinel-rl.js +430 -0
- package/dist/lib/sentinel-rl.js.map +1 -0
- package/dist/lib/session-lock.d.ts +61 -0
- package/dist/lib/session-lock.d.ts.map +1 -0
- package/dist/lib/session-lock.js +438 -0
- package/dist/lib/session-lock.js.map +1 -0
- package/dist/lib/stratus-client.d.ts +1 -0
- package/dist/lib/stratus-client.d.ts.map +1 -1
- package/dist/lib/stratus-client.js +24 -2
- package/dist/lib/stratus-client.js.map +1 -1
- package/dist/lib/telemetry-agent-v2.d.ts +128 -0
- package/dist/lib/telemetry-agent-v2.d.ts.map +1 -0
- package/dist/lib/telemetry-agent-v2.js +1042 -0
- package/dist/lib/telemetry-agent-v2.js.map +1 -0
- package/dist/lib/telemetry-agent.d.ts.map +1 -1
- package/dist/lib/telemetry-agent.js +27 -6
- package/dist/lib/telemetry-agent.js.map +1 -1
- package/dist/lib/telemetry-digest.d.ts.map +1 -1
- package/dist/lib/telemetry-digest.js +27 -5
- package/dist/lib/telemetry-digest.js.map +1 -1
- package/dist/lib/telemetry.d.ts.map +1 -1
- package/dist/lib/telemetry.js +29 -4
- package/dist/lib/telemetry.js.map +1 -1
- package/dist/lib/text-preprocessing.d.ts +83 -0
- package/dist/lib/text-preprocessing.d.ts.map +1 -0
- package/dist/lib/text-preprocessing.js +261 -0
- package/dist/lib/text-preprocessing.js.map +1 -0
- package/dist/lib/training-buffer.d.ts +86 -0
- package/dist/lib/training-buffer.d.ts.map +1 -0
- package/dist/lib/training-buffer.js +139 -0
- package/dist/lib/training-buffer.js.map +1 -0
- package/dist/lib/tuple-miner.d.ts +30 -0
- package/dist/lib/tuple-miner.d.ts.map +1 -0
- package/dist/lib/tuple-miner.js +427 -0
- package/dist/lib/tuple-miner.js.map +1 -0
- package/dist/lib/vm-backend.d.ts +72 -0
- package/dist/lib/vm-backend.d.ts.map +1 -0
- package/dist/lib/vm-backend.js +175 -0
- package/dist/lib/vm-backend.js.map +1 -0
- package/dist/lib/workspace/backend.d.ts +53 -0
- package/dist/lib/workspace/backend.d.ts.map +1 -0
- package/dist/lib/workspace/backend.js +37 -0
- package/dist/lib/workspace/backend.js.map +1 -0
- package/dist/lib/workspace/cmux-adapter.d.ts +46 -0
- package/dist/lib/workspace/cmux-adapter.d.ts.map +1 -0
- package/dist/lib/workspace/cmux-adapter.js +261 -0
- package/dist/lib/workspace/cmux-adapter.js.map +1 -0
- package/dist/lib/workspace/data-pipeline.d.ts +35 -0
- package/dist/lib/workspace/data-pipeline.d.ts.map +1 -0
- package/dist/lib/workspace/data-pipeline.js +463 -0
- package/dist/lib/workspace/data-pipeline.js.map +1 -0
- package/dist/lib/workspace/engine.d.ts +64 -0
- package/dist/lib/workspace/engine.d.ts.map +1 -0
- package/dist/lib/workspace/engine.js +397 -0
- package/dist/lib/workspace/engine.js.map +1 -0
- package/dist/lib/workspace/notifications.d.ts +14 -0
- package/dist/lib/workspace/notifications.d.ts.map +1 -0
- package/dist/lib/workspace/notifications.js +41 -0
- package/dist/lib/workspace/notifications.js.map +1 -0
- package/dist/lib/workspace/surface-registry.d.ts +49 -0
- package/dist/lib/workspace/surface-registry.d.ts.map +1 -0
- package/dist/lib/workspace/surface-registry.js +217 -0
- package/dist/lib/workspace/surface-registry.js.map +1 -0
- package/dist/lib/workspace/surface-type.d.ts +153 -0
- package/dist/lib/workspace/surface-type.d.ts.map +1 -0
- package/dist/lib/workspace/surface-type.js +9 -0
- package/dist/lib/workspace/surface-type.js.map +1 -0
- package/dist/lib/workspace/surfaces/agent-overview.d.ts +16 -0
- package/dist/lib/workspace/surfaces/agent-overview.d.ts.map +1 -0
- package/dist/lib/workspace/surfaces/agent-overview.js +116 -0
- package/dist/lib/workspace/surfaces/agent-overview.js.map +1 -0
- package/dist/lib/workspace/surfaces/agent.d.ts +16 -0
- package/dist/lib/workspace/surfaces/agent.d.ts.map +1 -0
- package/dist/lib/workspace/surfaces/agent.js +112 -0
- package/dist/lib/workspace/surfaces/agent.js.map +1 -0
- package/dist/lib/workspace/surfaces/claude.d.ts +15 -0
- package/dist/lib/workspace/surfaces/claude.d.ts.map +1 -0
- package/dist/lib/workspace/surfaces/claude.js +23 -0
- package/dist/lib/workspace/surfaces/claude.js.map +1 -0
- package/dist/lib/workspace/surfaces/dashboard.d.ts +21 -0
- package/dist/lib/workspace/surfaces/dashboard.d.ts.map +1 -0
- package/dist/lib/workspace/surfaces/dashboard.js +32 -0
- package/dist/lib/workspace/surfaces/dashboard.js.map +1 -0
- package/dist/lib/workspace/surfaces/eval.d.ts +15 -0
- package/dist/lib/workspace/surfaces/eval.d.ts.map +1 -0
- package/dist/lib/workspace/surfaces/eval.js +42 -0
- package/dist/lib/workspace/surfaces/eval.js.map +1 -0
- package/dist/lib/workspace/surfaces/event-stream.d.ts +16 -0
- package/dist/lib/workspace/surfaces/event-stream.d.ts.map +1 -0
- package/dist/lib/workspace/surfaces/event-stream.js +40 -0
- package/dist/lib/workspace/surfaces/event-stream.js.map +1 -0
- package/dist/lib/workspace/surfaces/flow.d.ts +16 -0
- package/dist/lib/workspace/surfaces/flow.d.ts.map +1 -0
- package/dist/lib/workspace/surfaces/flow.js +49 -0
- package/dist/lib/workspace/surfaces/flow.js.map +1 -0
- package/dist/lib/workspace/surfaces/index.d.ts +16 -0
- package/dist/lib/workspace/surfaces/index.d.ts.map +1 -0
- package/dist/lib/workspace/surfaces/index.js +16 -0
- package/dist/lib/workspace/surfaces/index.js.map +1 -0
- package/dist/lib/workspace/surfaces/portfolio.d.ts +16 -0
- package/dist/lib/workspace/surfaces/portfolio.d.ts.map +1 -0
- package/dist/lib/workspace/surfaces/portfolio.js +102 -0
- package/dist/lib/workspace/surfaces/portfolio.js.map +1 -0
- package/dist/lib/workspace/surfaces/service.d.ts +16 -0
- package/dist/lib/workspace/surfaces/service.d.ts.map +1 -0
- package/dist/lib/workspace/surfaces/service.js +45 -0
- package/dist/lib/workspace/surfaces/service.js.map +1 -0
- package/dist/lib/workspace/surfaces/shell.d.ts +15 -0
- package/dist/lib/workspace/surfaces/shell.d.ts.map +1 -0
- package/dist/lib/workspace/surfaces/shell.js +19 -0
- package/dist/lib/workspace/surfaces/shell.js.map +1 -0
- package/dist/lib/workspace/surfaces/telemetry.d.ts +16 -0
- package/dist/lib/workspace/surfaces/telemetry.d.ts.map +1 -0
- package/dist/lib/workspace/surfaces/telemetry.js +48 -0
- package/dist/lib/workspace/surfaces/telemetry.js.map +1 -0
- package/dist/lib/workspace/surfaces/topology.d.ts +15 -0
- package/dist/lib/workspace/surfaces/topology.d.ts.map +1 -0
- package/dist/lib/workspace/surfaces/topology.js +19 -0
- package/dist/lib/workspace/surfaces/topology.js.map +1 -0
- package/dist/lib/workspace/surfaces/training.d.ts +16 -0
- package/dist/lib/workspace/surfaces/training.d.ts.map +1 -0
- package/dist/lib/workspace/surfaces/training.js +22 -0
- package/dist/lib/workspace/surfaces/training.js.map +1 -0
- package/dist/lib/workspace/tmux-adapter.d.ts +27 -0
- package/dist/lib/workspace/tmux-adapter.d.ts.map +1 -0
- package/dist/lib/workspace/tmux-adapter.js +106 -0
- package/dist/lib/workspace/tmux-adapter.js.map +1 -0
- package/dist/mcp/context-hub-mcp.js +7 -24
- package/dist/mcp/context-hub-mcp.js.map +1 -1
- package/dist/types/flows.d.ts +2 -0
- package/dist/types/flows.d.ts.map +1 -1
- package/dist/types/ide.d.ts +49 -0
- package/dist/types/ide.d.ts.map +1 -0
- package/dist/types/ide.js +5 -0
- package/dist/types/ide.js.map +1 -0
- package/dist/types/platform-digest.d.ts +228 -0
- package/dist/types/platform-digest.d.ts.map +1 -0
- package/dist/types/platform-digest.js +5 -0
- package/dist/types/platform-digest.js.map +1 -0
- package/dist/types/telemetry-digest.d.ts +2 -0
- package/dist/types/telemetry-digest.d.ts.map +1 -1
- package/dist/utils/ensure-project.d.ts +1 -0
- package/dist/utils/ensure-project.d.ts.map +1 -1
- package/dist/utils/ensure-project.js +19 -7
- package/dist/utils/ensure-project.js.map +1 -1
- package/dist/utils/jfl-config.d.ts +1 -0
- package/dist/utils/jfl-config.d.ts.map +1 -1
- package/dist/utils/jfl-config.js +19 -1
- package/dist/utils/jfl-config.js.map +1 -1
- package/dist/utils/jfl-paths.d.ts +5 -0
- package/dist/utils/jfl-paths.d.ts.map +1 -1
- package/dist/utils/jfl-paths.js +25 -3
- package/dist/utils/jfl-paths.js.map +1 -1
- package/package.json +3 -2
- package/packages/pi/AGENTS.md +112 -0
- package/packages/pi/extensions/agent-grid.ts +191 -0
- package/packages/pi/extensions/agent-names.ts +178 -0
- package/packages/pi/extensions/autoresearch.ts +427 -0
- package/packages/pi/extensions/bookmarks.ts +85 -0
- package/packages/pi/extensions/context.ts +151 -0
- package/packages/pi/extensions/crm-tool.ts +61 -0
- package/packages/pi/extensions/eval-tool.ts +224 -0
- package/packages/pi/extensions/eval.ts +60 -0
- package/packages/pi/extensions/footer.ts +239 -0
- package/packages/pi/extensions/hud-tool.ts +145 -0
- package/packages/pi/extensions/index.ts +392 -0
- package/packages/pi/extensions/journal.ts +224 -0
- package/packages/pi/extensions/map-bridge.ts +178 -0
- package/packages/pi/extensions/memory-tool.ts +68 -0
- package/packages/pi/extensions/notifications.ts +73 -0
- package/packages/pi/extensions/peter-parker.ts +202 -0
- package/packages/pi/extensions/policy-head-tool.ts +276 -0
- package/packages/pi/extensions/portfolio-bridge.ts +90 -0
- package/packages/pi/extensions/session.ts +90 -0
- package/packages/pi/extensions/shortcuts.ts +259 -0
- package/packages/pi/extensions/stratus-bridge.ts +115 -0
- package/packages/pi/extensions/synopsis-tool.ts +83 -0
- package/packages/pi/extensions/tool-renderers.ts +352 -0
- package/packages/pi/extensions/training-buffer-tool.ts +368 -0
- package/packages/pi/extensions/types.ts +163 -0
- package/packages/pi/package-lock.json +346 -0
- package/packages/pi/package.json +44 -0
- package/packages/pi/skills/agent-browser/SKILL.md +116 -0
- package/packages/pi/skills/brand-architect/SKILL.md +240 -0
- package/packages/pi/skills/brand-architect/config.yaml +137 -0
- package/packages/pi/skills/campaign-hud/config.yaml +112 -0
- package/packages/pi/skills/content-creator/SKILL.md +294 -0
- package/packages/pi/skills/context/SKILL.md +65 -0
- package/packages/pi/skills/debug/MULTI_AGENT.md +360 -0
- package/packages/pi/skills/debug/SKILL.md +554 -0
- package/packages/pi/skills/end/SKILL.md +1782 -0
- package/packages/pi/skills/eval/SKILL.md +75 -0
- package/packages/pi/skills/fly-deploy/SKILL.md +676 -0
- package/packages/pi/skills/founder-video/SKILL.md +467 -0
- package/packages/pi/skills/hud/SKILL.md +160 -0
- package/packages/pi/skills/orchestrate/SKILL.md +74 -0
- package/packages/pi/skills/pi-agents/SKILL.md +78 -0
- package/packages/pi/skills/react-best-practices/AGENTS.md +2249 -0
- package/packages/pi/skills/react-best-practices/README.md +123 -0
- package/packages/pi/skills/react-best-practices/SKILL.md +125 -0
- package/packages/pi/skills/react-best-practices/metadata.json +15 -0
- package/packages/pi/skills/react-best-practices/rules/_sections.md +46 -0
- package/packages/pi/skills/react-best-practices/rules/_template.md +28 -0
- package/packages/pi/skills/react-best-practices/rules/advanced-event-handler-refs.md +55 -0
- package/packages/pi/skills/react-best-practices/rules/advanced-use-latest.md +49 -0
- package/packages/pi/skills/react-best-practices/rules/async-api-routes.md +38 -0
- package/packages/pi/skills/react-best-practices/rules/async-defer-await.md +80 -0
- package/packages/pi/skills/react-best-practices/rules/async-dependencies.md +36 -0
- package/packages/pi/skills/react-best-practices/rules/async-parallel.md +28 -0
- package/packages/pi/skills/react-best-practices/rules/async-suspense-boundaries.md +99 -0
- package/packages/pi/skills/react-best-practices/rules/bundle-barrel-imports.md +59 -0
- package/packages/pi/skills/react-best-practices/rules/bundle-conditional.md +31 -0
- package/packages/pi/skills/react-best-practices/rules/bundle-defer-third-party.md +49 -0
- package/packages/pi/skills/react-best-practices/rules/bundle-dynamic-imports.md +35 -0
- package/packages/pi/skills/react-best-practices/rules/bundle-preload.md +50 -0
- package/packages/pi/skills/react-best-practices/rules/client-event-listeners.md +74 -0
- package/packages/pi/skills/react-best-practices/rules/client-swr-dedup.md +56 -0
- package/packages/pi/skills/react-best-practices/rules/js-batch-dom-css.md +82 -0
- package/packages/pi/skills/react-best-practices/rules/js-cache-function-results.md +80 -0
- package/packages/pi/skills/react-best-practices/rules/js-cache-property-access.md +28 -0
- package/packages/pi/skills/react-best-practices/rules/js-cache-storage.md +70 -0
- package/packages/pi/skills/react-best-practices/rules/js-combine-iterations.md +32 -0
- package/packages/pi/skills/react-best-practices/rules/js-early-exit.md +50 -0
- package/packages/pi/skills/react-best-practices/rules/js-hoist-regexp.md +45 -0
- package/packages/pi/skills/react-best-practices/rules/js-index-maps.md +37 -0
- package/packages/pi/skills/react-best-practices/rules/js-length-check-first.md +49 -0
- package/packages/pi/skills/react-best-practices/rules/js-min-max-loop.md +82 -0
- package/packages/pi/skills/react-best-practices/rules/js-set-map-lookups.md +24 -0
- package/packages/pi/skills/react-best-practices/rules/js-tosorted-immutable.md +57 -0
- package/packages/pi/skills/react-best-practices/rules/rendering-activity.md +26 -0
- package/packages/pi/skills/react-best-practices/rules/rendering-animate-svg-wrapper.md +47 -0
- package/packages/pi/skills/react-best-practices/rules/rendering-conditional-render.md +40 -0
- package/packages/pi/skills/react-best-practices/rules/rendering-content-visibility.md +38 -0
- package/packages/pi/skills/react-best-practices/rules/rendering-hoist-jsx.md +46 -0
- package/packages/pi/skills/react-best-practices/rules/rendering-hydration-no-flicker.md +82 -0
- package/packages/pi/skills/react-best-practices/rules/rendering-svg-precision.md +28 -0
- package/packages/pi/skills/react-best-practices/rules/rerender-defer-reads.md +39 -0
- package/packages/pi/skills/react-best-practices/rules/rerender-dependencies.md +45 -0
- package/packages/pi/skills/react-best-practices/rules/rerender-derived-state.md +29 -0
- package/packages/pi/skills/react-best-practices/rules/rerender-functional-setstate.md +74 -0
- package/packages/pi/skills/react-best-practices/rules/rerender-lazy-state-init.md +58 -0
- package/packages/pi/skills/react-best-practices/rules/rerender-memo.md +44 -0
- package/packages/pi/skills/react-best-practices/rules/rerender-transitions.md +40 -0
- package/packages/pi/skills/react-best-practices/rules/server-after-nonblocking.md +73 -0
- package/packages/pi/skills/react-best-practices/rules/server-cache-lru.md +41 -0
- package/packages/pi/skills/react-best-practices/rules/server-cache-react.md +26 -0
- package/packages/pi/skills/react-best-practices/rules/server-parallel-fetching.md +79 -0
- package/packages/pi/skills/react-best-practices/rules/server-serialization.md +38 -0
- package/packages/pi/skills/remotion-best-practices/SKILL.md +43 -0
- package/packages/pi/skills/remotion-best-practices/rules/3d.md +86 -0
- package/packages/pi/skills/remotion-best-practices/rules/animations.md +29 -0
- package/packages/pi/skills/remotion-best-practices/rules/assets/charts-bar-chart.tsx +173 -0
- package/packages/pi/skills/remotion-best-practices/rules/assets/text-animations-typewriter.tsx +100 -0
- package/packages/pi/skills/remotion-best-practices/rules/assets/text-animations-word-highlight.tsx +108 -0
- package/packages/pi/skills/remotion-best-practices/rules/assets.md +78 -0
- package/packages/pi/skills/remotion-best-practices/rules/audio.md +172 -0
- package/packages/pi/skills/remotion-best-practices/rules/calculate-metadata.md +104 -0
- package/packages/pi/skills/remotion-best-practices/rules/can-decode.md +75 -0
- package/packages/pi/skills/remotion-best-practices/rules/charts.md +58 -0
- package/packages/pi/skills/remotion-best-practices/rules/compositions.md +146 -0
- package/packages/pi/skills/remotion-best-practices/rules/display-captions.md +126 -0
- package/packages/pi/skills/remotion-best-practices/rules/extract-frames.md +229 -0
- package/packages/pi/skills/remotion-best-practices/rules/fonts.md +152 -0
- package/packages/pi/skills/remotion-best-practices/rules/get-audio-duration.md +58 -0
- package/packages/pi/skills/remotion-best-practices/rules/get-video-dimensions.md +68 -0
- package/packages/pi/skills/remotion-best-practices/rules/get-video-duration.md +58 -0
- package/packages/pi/skills/remotion-best-practices/rules/gifs.md +138 -0
- package/packages/pi/skills/remotion-best-practices/rules/images.md +130 -0
- package/packages/pi/skills/remotion-best-practices/rules/import-srt-captions.md +67 -0
- package/packages/pi/skills/remotion-best-practices/rules/lottie.md +68 -0
- package/packages/pi/skills/remotion-best-practices/rules/measuring-dom-nodes.md +35 -0
- package/packages/pi/skills/remotion-best-practices/rules/measuring-text.md +143 -0
- package/packages/pi/skills/remotion-best-practices/rules/sequencing.md +106 -0
- package/packages/pi/skills/remotion-best-practices/rules/tailwind.md +11 -0
- package/packages/pi/skills/remotion-best-practices/rules/text-animations.md +20 -0
- package/packages/pi/skills/remotion-best-practices/rules/timing.md +179 -0
- package/packages/pi/skills/remotion-best-practices/rules/transcribe-captions.md +19 -0
- package/packages/pi/skills/remotion-best-practices/rules/transitions.md +122 -0
- package/packages/pi/skills/remotion-best-practices/rules/trimming.md +53 -0
- package/packages/pi/skills/remotion-best-practices/rules/videos.md +171 -0
- package/packages/pi/skills/search/SKILL.md +220 -0
- package/packages/pi/skills/spec/SKILL.md +377 -0
- package/packages/pi/skills/startup/SKILL.md +315 -0
- package/packages/pi/skills/web-architect/SKILL.md +309 -0
- package/packages/pi/skills/x-algorithm/SKILL.md +305 -0
- package/packages/pi/teams/dev-team.yaml +63 -0
- package/packages/pi/teams/gtm-team.yaml +79 -0
- package/packages/pi/themes/jfl.theme.json +76 -0
- package/packages/pi/tsconfig.json +21 -0
- package/scripts/collect-tuples.sh +124 -0
- package/scripts/destroy-fleet.sh +37 -0
- package/scripts/jfl-ide.sh +48 -0
- package/scripts/session/session-cleanup.sh +4 -11
- package/scripts/session/session-init.sh +6 -0
- package/scripts/session/session-sync.sh +25 -0
- package/scripts/setup-branch-protection.sh +106 -0
- package/scripts/spawn-fleet.sh +144 -0
- package/scripts/train-policy-head.py +434 -0
- package/scripts/vm-swarm/README.md +301 -0
- package/scripts/vm-swarm/collect-tuples.sh +331 -0
- package/scripts/vm-swarm/create-base-template.sh +339 -0
- package/scripts/vm-swarm/kill-fleet.sh +204 -0
- package/scripts/vm-swarm/monitor-fleet.sh +346 -0
- package/scripts/vm-swarm/spawn-fleet.sh +304 -0
- package/template/.github/workflows/jfl-eval.yml +105 -8
- package/template/.github/workflows/jfl-review.yml +4 -0
- package/template/scripts/session/session-end.sh +69 -6
- package/template/scripts/session/session-init.sh +55 -30
- package/template/scripts/session/session-lock.sh +464 -0
- package/template/templates/service-agent/workflows/jfl-eval.yml +19 -0
- package/dist/dashboard-static/assets/index-B6kRK9Rq.js +0 -116
- package/dist/dashboard-static/assets/index-BpdKJPLu.css +0 -1
|
@@ -6,9 +6,15 @@
|
|
|
6
6
|
*
|
|
7
7
|
* @purpose Generate peer service agent references for cross-service collaboration
|
|
8
8
|
*/
|
|
9
|
-
import { writeFileSync, mkdirSync, existsSync, readdirSync, unlinkSync } from "fs";
|
|
9
|
+
import { writeFileSync, mkdirSync, existsSync, readdirSync, unlinkSync, readFileSync } from "fs";
|
|
10
10
|
import { join } from "path";
|
|
11
|
-
|
|
11
|
+
const ACRONYMS = new Set(["api", "ui", "cli", "db", "ml", "ai", "ci", "cd", "io", "id", "url", "uri", "sdk", "rl", "mcp", "gtm", "crm", "cms", "cdn", "dns", "tcp", "udp", "ssh", "tls", "ssl", "jwt", "aws", "gcp"]);
|
|
12
|
+
function titleCase(str) {
|
|
13
|
+
return str
|
|
14
|
+
.split("-")
|
|
15
|
+
.map(w => ACRONYMS.has(w.toLowerCase()) ? w.toUpperCase() : w.charAt(0).toUpperCase() + w.slice(1))
|
|
16
|
+
.join(" ");
|
|
17
|
+
}
|
|
12
18
|
/**
|
|
13
19
|
* Get registered services from GTM config
|
|
14
20
|
*/
|
|
@@ -29,8 +35,7 @@ export function getRegisteredServices(gtmPath) {
|
|
|
29
35
|
* Generate peer agent definition from service metadata
|
|
30
36
|
*/
|
|
31
37
|
export function generatePeerAgentDefinition(peerService, currentServicePath, gtmPath) {
|
|
32
|
-
const name =
|
|
33
|
-
// Generate capability-based triggers
|
|
38
|
+
const name = peerService.name;
|
|
34
39
|
const capabilities = generatePeerCapabilities(peerService.type);
|
|
35
40
|
return {
|
|
36
41
|
name,
|
|
@@ -94,16 +99,18 @@ export function writePeerAgentDefinition(agentDef, servicePath) {
|
|
|
94
99
|
mkdirSync(agentsDir, { recursive: true });
|
|
95
100
|
}
|
|
96
101
|
const agentFile = join(agentsDir, `${agentDef.name}.md`);
|
|
102
|
+
const label = titleCase(agentDef.serviceName);
|
|
97
103
|
const whenToUse = generateWhenToUse(agentDef.serviceType, agentDef.serviceName);
|
|
98
104
|
const content = `---
|
|
99
105
|
name: ${agentDef.name}
|
|
106
|
+
label: ${label}
|
|
100
107
|
version: 1.0.0
|
|
101
108
|
color: blue
|
|
102
109
|
description: ${agentDef.description}
|
|
103
110
|
type: peer-service
|
|
104
111
|
---
|
|
105
112
|
|
|
106
|
-
#
|
|
113
|
+
# ${label}
|
|
107
114
|
|
|
108
115
|
**Service Type:** ${agentDef.serviceType}
|
|
109
116
|
**Service Path:** \`${agentDef.servicePath}\`
|
|
@@ -174,56 +181,56 @@ When you @-mention this peer:
|
|
|
174
181
|
function generateWhenToUse(serviceType, serviceName) {
|
|
175
182
|
switch (serviceType) {
|
|
176
183
|
case "api":
|
|
177
|
-
return `Use
|
|
184
|
+
return `Use \`@${serviceName}\` when you need to:
|
|
178
185
|
- Check API endpoint status or health
|
|
179
186
|
- Understand API routes and handlers
|
|
180
187
|
- Coordinate API changes that affect your service
|
|
181
188
|
- Get data from API endpoints
|
|
182
189
|
- Verify API schema or contracts`;
|
|
183
190
|
case "web":
|
|
184
|
-
return `Use
|
|
191
|
+
return `Use \`@${serviceName}\` when you need to:
|
|
185
192
|
- Check frontend deployment status
|
|
186
193
|
- Understand UI components or flows
|
|
187
194
|
- Coordinate UI changes with backend
|
|
188
195
|
- Get user-facing content or copy
|
|
189
196
|
- Verify frontend build status`;
|
|
190
197
|
case "worker":
|
|
191
|
-
return `Use
|
|
198
|
+
return `Use \`@${serviceName}\` when you need to:
|
|
192
199
|
- Check background job status
|
|
193
200
|
- Understand job queue state
|
|
194
201
|
- Coordinate async operations
|
|
195
202
|
- Trigger or schedule jobs
|
|
196
203
|
- Verify job processing results`;
|
|
197
204
|
case "library":
|
|
198
|
-
return `Use
|
|
205
|
+
return `Use \`@${serviceName}\` when you need to:
|
|
199
206
|
- Understand library APIs and interfaces
|
|
200
207
|
- Work on plugin or package features
|
|
201
208
|
- Run library tests and builds
|
|
202
209
|
- Update documentation
|
|
203
210
|
- Debug integration issues`;
|
|
204
211
|
case "infrastructure":
|
|
205
|
-
return `Use
|
|
212
|
+
return `Use \`@${serviceName}\` when you need to:
|
|
206
213
|
- Check system health across services
|
|
207
214
|
- Get aggregated metrics or logs
|
|
208
215
|
- Coordinate service deployments
|
|
209
216
|
- Understand infrastructure state
|
|
210
217
|
- Verify connectivity or resources`;
|
|
211
218
|
case "container":
|
|
212
|
-
return `Use
|
|
219
|
+
return `Use \`@${serviceName}\` when you need to:
|
|
213
220
|
- Check container status
|
|
214
221
|
- Understand Docker configuration
|
|
215
222
|
- Coordinate container operations
|
|
216
223
|
- Verify container health
|
|
217
224
|
- Get container logs or metrics`;
|
|
218
225
|
case "cli":
|
|
219
|
-
return `Use
|
|
226
|
+
return `Use \`@${serviceName}\` when you need to:
|
|
220
227
|
- Execute CLI commands
|
|
221
228
|
- Automate workflows
|
|
222
229
|
- Run scripts or tools
|
|
223
230
|
- Get CLI output or results
|
|
224
231
|
- Verify CLI functionality`;
|
|
225
232
|
default:
|
|
226
|
-
return `Use
|
|
233
|
+
return `Use \`@${serviceName}\` when you need to:
|
|
227
234
|
- Check service status
|
|
228
235
|
- Understand service capabilities
|
|
229
236
|
- Coordinate with this service
|
|
@@ -252,31 +259,48 @@ export function syncPeerAgents(servicePath, gtmPath) {
|
|
|
252
259
|
if (!existsSync(agentsDir)) {
|
|
253
260
|
mkdirSync(agentsDir, { recursive: true });
|
|
254
261
|
}
|
|
255
|
-
// Get existing peer agent files
|
|
262
|
+
// Get existing peer agent files (check both old and new naming conventions)
|
|
256
263
|
const existingPeerFiles = existsSync(agentsDir)
|
|
257
|
-
? readdirSync(agentsDir).filter((f) => f.
|
|
264
|
+
? readdirSync(agentsDir).filter((f) => f.endsWith(".md") && !f.startsWith("_") && f !== "README.md")
|
|
258
265
|
: [];
|
|
266
|
+
// Read frontmatter to identify peer agent files (works with old and new naming)
|
|
267
|
+
const peerFileSet = new Set();
|
|
268
|
+
for (const f of existingPeerFiles) {
|
|
269
|
+
try {
|
|
270
|
+
const content = readFileSync(join(agentsDir, f), "utf-8");
|
|
271
|
+
if (content.includes("type: peer-service") || f.startsWith("peer-service-")) {
|
|
272
|
+
peerFileSet.add(f);
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
catch { }
|
|
276
|
+
}
|
|
259
277
|
// Generate/update peer agent files for all registered services
|
|
260
278
|
const currentPeerFiles = new Set();
|
|
261
279
|
for (const peerService of peerServices) {
|
|
262
280
|
const agentDef = generatePeerAgentDefinition(peerService, servicePath, gtmPath);
|
|
263
281
|
const fileName = `${agentDef.name}.md`;
|
|
264
282
|
currentPeerFiles.add(fileName);
|
|
283
|
+
// Remove old-style file if it exists (migration)
|
|
284
|
+
const oldFileName = `peer-service-${agentDef.name}.md`;
|
|
285
|
+
const oldFilePath = join(agentsDir, oldFileName);
|
|
286
|
+
if (existsSync(oldFilePath)) {
|
|
287
|
+
unlinkSync(oldFilePath);
|
|
288
|
+
peerFileSet.delete(oldFileName);
|
|
289
|
+
}
|
|
265
290
|
const filePath = join(agentsDir, fileName);
|
|
266
291
|
if (existsSync(filePath)) {
|
|
267
|
-
// Update existing
|
|
268
292
|
writePeerAgentDefinition(agentDef, servicePath);
|
|
269
293
|
stats.updated++;
|
|
270
294
|
}
|
|
271
295
|
else {
|
|
272
|
-
// Add new
|
|
273
296
|
writePeerAgentDefinition(agentDef, servicePath);
|
|
274
297
|
stats.added++;
|
|
275
298
|
}
|
|
276
299
|
}
|
|
277
300
|
// Remove stale peer agent files (services that were unregistered)
|
|
278
|
-
for (const existingFile of
|
|
279
|
-
|
|
301
|
+
for (const existingFile of peerFileSet) {
|
|
302
|
+
const nameWithoutExt = existingFile.replace(/\.md$/, "").replace(/^peer-service-/, "");
|
|
303
|
+
if (!currentPeerFiles.has(existingFile) && !currentPeerFiles.has(`${nameWithoutExt}.md`)) {
|
|
280
304
|
unlinkSync(join(agentsDir, existingFile));
|
|
281
305
|
stats.removed++;
|
|
282
306
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"peer-agent-generator.js","sourceRoot":"","sources":["../../src/lib/peer-agent-generator.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,IAAI,CAAA;
|
|
1
|
+
{"version":3,"file":"peer-agent-generator.js","sourceRoot":"","sources":["../../src/lib/peer-agent-generator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @purpose Policy head inference — loads trained weights, scores candidate actions for autoresearch
|
|
3
|
+
*/
|
|
4
|
+
import type { RLState, RLAction } from "./training-buffer.js";
|
|
5
|
+
export declare class PolicyHeadInference {
|
|
6
|
+
private weights;
|
|
7
|
+
private embedCache;
|
|
8
|
+
constructor(projectRoot?: string);
|
|
9
|
+
get isLoaded(): boolean;
|
|
10
|
+
get stats(): {
|
|
11
|
+
trained_on: number;
|
|
12
|
+
direction_accuracy: number;
|
|
13
|
+
rank_correlation: number;
|
|
14
|
+
} | null;
|
|
15
|
+
embedText(text: string): Promise<number[]>;
|
|
16
|
+
formatStateText(state: RLState): string;
|
|
17
|
+
formatActionText(action: RLAction): string;
|
|
18
|
+
predictReward(state: RLState, action: RLAction): Promise<number>;
|
|
19
|
+
rankActions(state: RLState, actions: RLAction[]): Promise<Array<{
|
|
20
|
+
action: RLAction;
|
|
21
|
+
predictedReward: number;
|
|
22
|
+
rank: number;
|
|
23
|
+
}>>;
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=policy-head.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"policy-head.d.ts","sourceRoot":"","sources":["../../src/lib/policy-head.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAA;AA+D7D,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,OAAO,CAA6B;IAC5C,OAAO,CAAC,UAAU,CAA8B;gBAEpC,WAAW,CAAC,EAAE,MAAM;IAQhC,IAAI,QAAQ,IAAI,OAAO,CAEtB;IAED,IAAI,KAAK,IAAI;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,kBAAkB,EAAE,MAAM,CAAC;QAAC,gBAAgB,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAO/F;IAEK,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IA0BhD,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM;IAevC,gBAAgB,CAAC,MAAM,EAAE,QAAQ,GAAG,MAAM;IAUpC,aAAa,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC;IAahE,WAAW,CACf,KAAK,EAAE,OAAO,EACd,OAAO,EAAE,QAAQ,EAAE,GAClB,OAAO,CAAC,KAAK,CAAC;QAAE,MAAM,EAAE,QAAQ,CAAC;QAAC,eAAe,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAsB/E"}
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @purpose Policy head inference — loads trained weights, scores candidate actions for autoresearch
|
|
3
|
+
*/
|
|
4
|
+
import { readFileSync, existsSync } from "fs";
|
|
5
|
+
import { join } from "path";
|
|
6
|
+
function relu(x) {
|
|
7
|
+
return Math.max(0, x);
|
|
8
|
+
}
|
|
9
|
+
function matVecMul(mat, vec) {
|
|
10
|
+
return mat.map(row => row.reduce((sum, w, j) => sum + w * vec[j], 0));
|
|
11
|
+
}
|
|
12
|
+
function vecAdd(a, b) {
|
|
13
|
+
return a.map((v, i) => v + b[i]);
|
|
14
|
+
}
|
|
15
|
+
function forward(weights, input) {
|
|
16
|
+
const { W1, b1, W2, b2, W3, b3 } = weights.layers;
|
|
17
|
+
// Transpose W1 for (input_dim, hidden_dim) → need input @ W1
|
|
18
|
+
// W1 stored as [input_dim][hidden_dim], so W1[i][j] = weight from input i to hidden j
|
|
19
|
+
const z1 = vecAdd(matVecMulTransposed(W1, input), b1);
|
|
20
|
+
const a1 = z1.map(relu);
|
|
21
|
+
const z2 = vecAdd(matVecMulTransposed(W2, a1), b2);
|
|
22
|
+
const a2 = z2.map(relu);
|
|
23
|
+
const z3 = vecAdd(matVecMulTransposed(W3, a2), b3);
|
|
24
|
+
return z3[0];
|
|
25
|
+
}
|
|
26
|
+
function matVecMulTransposed(mat, vec) {
|
|
27
|
+
// mat is [rows][cols], we want vec @ mat = result[cols]
|
|
28
|
+
// result[j] = sum_i(vec[i] * mat[i][j])
|
|
29
|
+
const cols = mat[0].length;
|
|
30
|
+
const result = new Array(cols).fill(0);
|
|
31
|
+
for (let i = 0; i < vec.length; i++) {
|
|
32
|
+
for (let j = 0; j < cols; j++) {
|
|
33
|
+
result[j] += vec[i] * mat[i][j];
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
return result;
|
|
37
|
+
}
|
|
38
|
+
export class PolicyHeadInference {
|
|
39
|
+
weights = null;
|
|
40
|
+
embedCache = new Map();
|
|
41
|
+
constructor(projectRoot) {
|
|
42
|
+
const root = projectRoot || process.cwd();
|
|
43
|
+
const weightsPath = join(root, ".jfl", "policy-weights.json");
|
|
44
|
+
if (existsSync(weightsPath)) {
|
|
45
|
+
this.weights = JSON.parse(readFileSync(weightsPath, "utf-8"));
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
get isLoaded() {
|
|
49
|
+
return this.weights !== null;
|
|
50
|
+
}
|
|
51
|
+
get stats() {
|
|
52
|
+
if (!this.weights)
|
|
53
|
+
return null;
|
|
54
|
+
return {
|
|
55
|
+
trained_on: this.weights.trained_on,
|
|
56
|
+
direction_accuracy: this.weights.direction_accuracy,
|
|
57
|
+
rank_correlation: this.weights.rank_correlation,
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
async embedText(text) {
|
|
61
|
+
if (this.embedCache.has(text))
|
|
62
|
+
return this.embedCache.get(text);
|
|
63
|
+
const apiKey = process.env.STRATUS_API_KEY;
|
|
64
|
+
if (!apiKey)
|
|
65
|
+
throw new Error("STRATUS_API_KEY not set");
|
|
66
|
+
const url = `${process.env.STRATUS_API_URL || "https://api.stratus.run"}/v1/embeddings`;
|
|
67
|
+
const response = await fetch(url, {
|
|
68
|
+
method: "POST",
|
|
69
|
+
headers: {
|
|
70
|
+
"Authorization": `Bearer ${apiKey}`,
|
|
71
|
+
"Content-Type": "application/json",
|
|
72
|
+
},
|
|
73
|
+
body: JSON.stringify({
|
|
74
|
+
model: "stratus-x1ac-base",
|
|
75
|
+
input: text,
|
|
76
|
+
}),
|
|
77
|
+
});
|
|
78
|
+
if (!response.ok)
|
|
79
|
+
throw new Error(`Embedding failed: ${response.status}`);
|
|
80
|
+
const data = await response.json();
|
|
81
|
+
const embedding = data.data[0].embedding;
|
|
82
|
+
this.embedCache.set(text, embedding);
|
|
83
|
+
return embedding;
|
|
84
|
+
}
|
|
85
|
+
formatStateText(state) {
|
|
86
|
+
const dims = Object.entries(state.dimension_scores)
|
|
87
|
+
.map(([k, v]) => `${k}=${v.toFixed(4)}`).join(", ");
|
|
88
|
+
const deltas = state.recent_deltas
|
|
89
|
+
.map(d => `${d >= 0 ? "+" : ""}${d.toFixed(4)}`).join(", ");
|
|
90
|
+
return [
|
|
91
|
+
`Agent: ${state.agent}`,
|
|
92
|
+
`Composite: ${state.composite_score.toFixed(4)}`,
|
|
93
|
+
`Tests: ${state.tests_passing}/${state.tests_total}`,
|
|
94
|
+
`Trajectory: ${state.trajectory_length}`,
|
|
95
|
+
`Dimensions: ${dims || "none"}`,
|
|
96
|
+
`Recent deltas: ${deltas || "none"}`,
|
|
97
|
+
].join("\n");
|
|
98
|
+
}
|
|
99
|
+
formatActionText(action) {
|
|
100
|
+
const files = action.files_affected.slice(0, 5).join(", ");
|
|
101
|
+
return [
|
|
102
|
+
`Type: ${action.type}`,
|
|
103
|
+
`Description: ${action.description.slice(0, 150)}`,
|
|
104
|
+
`Scope: ${action.scope}`,
|
|
105
|
+
`Files: ${files || "none"}`,
|
|
106
|
+
].join("\n");
|
|
107
|
+
}
|
|
108
|
+
async predictReward(state, action) {
|
|
109
|
+
if (!this.weights)
|
|
110
|
+
throw new Error("No policy weights loaded");
|
|
111
|
+
const stateEmb = await this.embedText(this.formatStateText(state));
|
|
112
|
+
const actionEmb = await this.embedText(this.formatActionText(action));
|
|
113
|
+
const input = [...stateEmb, ...actionEmb];
|
|
114
|
+
const rawPred = forward(this.weights, input);
|
|
115
|
+
// Denormalize
|
|
116
|
+
return rawPred * this.weights.target_std + this.weights.target_mean;
|
|
117
|
+
}
|
|
118
|
+
async rankActions(state, actions) {
|
|
119
|
+
if (!this.weights)
|
|
120
|
+
throw new Error("No policy weights loaded");
|
|
121
|
+
const stateText = this.formatStateText(state);
|
|
122
|
+
const stateEmb = await this.embedText(stateText);
|
|
123
|
+
const results = [];
|
|
124
|
+
for (const action of actions) {
|
|
125
|
+
const actionEmb = await this.embedText(this.formatActionText(action));
|
|
126
|
+
const input = [...stateEmb, ...actionEmb];
|
|
127
|
+
const rawPred = forward(this.weights, input);
|
|
128
|
+
const reward = rawPred * this.weights.target_std + this.weights.target_mean;
|
|
129
|
+
results.push({ action, predictedReward: reward, rank: 0 });
|
|
130
|
+
}
|
|
131
|
+
results.sort((a, b) => b.predictedReward - a.predictedReward);
|
|
132
|
+
results.forEach((r, i) => { r.rank = i + 1; });
|
|
133
|
+
return results;
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
//# sourceMappingURL=policy-head.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"policy-head.js","sourceRoot":"","sources":["../../src/lib/policy-head.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared Replay Buffer
|
|
3
|
+
*
|
|
4
|
+
* Cross-agent learning via append-only JSONL file.
|
|
5
|
+
* Enables agents to learn from each other's experiences.
|
|
6
|
+
* 80% from own agent, 20% from others by default.
|
|
7
|
+
*
|
|
8
|
+
* @purpose Shared replay buffer for cross-agent reinforcement learning
|
|
9
|
+
*/
|
|
10
|
+
import type { RLState, RLAction } from "./training-buffer.js";
|
|
11
|
+
export interface ReplayEntry {
|
|
12
|
+
id: string;
|
|
13
|
+
agent: string;
|
|
14
|
+
session_id: string;
|
|
15
|
+
state_hash: string;
|
|
16
|
+
state: RLState;
|
|
17
|
+
action_diff: string;
|
|
18
|
+
action: RLAction;
|
|
19
|
+
hypothesis: string;
|
|
20
|
+
reward: number;
|
|
21
|
+
timestamp: string;
|
|
22
|
+
}
|
|
23
|
+
export interface ReplayStats {
|
|
24
|
+
totalEntries: number;
|
|
25
|
+
perAgent: Record<string, number>;
|
|
26
|
+
avgReward: number;
|
|
27
|
+
positiveRate: number;
|
|
28
|
+
oldestEntry?: string;
|
|
29
|
+
newestEntry?: string;
|
|
30
|
+
}
|
|
31
|
+
export interface SampleOptions {
|
|
32
|
+
batchSize: number;
|
|
33
|
+
crossAgentRatio: number;
|
|
34
|
+
minReward?: number;
|
|
35
|
+
maxAge?: number;
|
|
36
|
+
}
|
|
37
|
+
export declare class ReplayBuffer {
|
|
38
|
+
private bufferPath;
|
|
39
|
+
private projectRoot;
|
|
40
|
+
constructor(projectRoot?: string);
|
|
41
|
+
/**
|
|
42
|
+
* Append a new entry to the replay buffer
|
|
43
|
+
*/
|
|
44
|
+
write(entry: Omit<ReplayEntry, "id">): ReplayEntry;
|
|
45
|
+
/**
|
|
46
|
+
* Read all entries from the replay buffer
|
|
47
|
+
*/
|
|
48
|
+
readAll(): ReplayEntry[];
|
|
49
|
+
/**
|
|
50
|
+
* Sample entries for training
|
|
51
|
+
* By default: 80% from target agent, 20% from others
|
|
52
|
+
*/
|
|
53
|
+
sample(agent: string, options: SampleOptions): ReplayEntry[];
|
|
54
|
+
/**
|
|
55
|
+
* Sample with prioritized experience replay
|
|
56
|
+
* Prioritizes entries with higher absolute reward (more informative)
|
|
57
|
+
*/
|
|
58
|
+
samplePrioritized(agent: string, options: SampleOptions): ReplayEntry[];
|
|
59
|
+
private prioritizedSample;
|
|
60
|
+
/**
|
|
61
|
+
* Get statistics about the replay buffer
|
|
62
|
+
*/
|
|
63
|
+
stats(): ReplayStats;
|
|
64
|
+
/**
|
|
65
|
+
* Get entries for a specific agent
|
|
66
|
+
*/
|
|
67
|
+
getForAgent(agent: string): ReplayEntry[];
|
|
68
|
+
/**
|
|
69
|
+
* Get recent entries
|
|
70
|
+
*/
|
|
71
|
+
getRecent(count?: number): ReplayEntry[];
|
|
72
|
+
/**
|
|
73
|
+
* Export for policy head training
|
|
74
|
+
*/
|
|
75
|
+
exportForTraining(): Array<{
|
|
76
|
+
state_text: string;
|
|
77
|
+
action_text: string;
|
|
78
|
+
reward: number;
|
|
79
|
+
agent: string;
|
|
80
|
+
ts: string;
|
|
81
|
+
}>;
|
|
82
|
+
private formatStateText;
|
|
83
|
+
private formatActionText;
|
|
84
|
+
private shuffle;
|
|
85
|
+
/**
|
|
86
|
+
* Clear old entries (keep last N or by age)
|
|
87
|
+
*/
|
|
88
|
+
prune(options: {
|
|
89
|
+
maxEntries?: number;
|
|
90
|
+
maxAge?: number;
|
|
91
|
+
}): number;
|
|
92
|
+
}
|
|
93
|
+
//# sourceMappingURL=replay-buffer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"replay-buffer.d.ts","sourceRoot":"","sources":["../../src/lib/replay-buffer.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAKH,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAY,MAAM,sBAAsB,CAAA;AAMvE,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,EAAE,MAAM,CAAA;IAClB,KAAK,EAAE,OAAO,CAAA;IACd,WAAW,EAAE,MAAM,CAAA;IACnB,MAAM,EAAE,QAAQ,CAAA;IAChB,UAAU,EAAE,MAAM,CAAA;IAClB,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,WAAW;IAC1B,YAAY,EAAE,MAAM,CAAA;IACpB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAChC,SAAS,EAAE,MAAM,CAAA;IACjB,YAAY,EAAE,MAAM,CAAA;IACpB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAED,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAA;IACjB,eAAe,EAAE,MAAM,CAAA;IACvB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAwBD,qBAAa,YAAY;IACvB,OAAO,CAAC,UAAU,CAAQ;IAC1B,OAAO,CAAC,WAAW,CAAQ;gBAEf,WAAW,CAAC,EAAE,MAAM;IAKhC;;OAEG;IACH,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,GAAG,WAAW;IAalD;;OAEG;IACH,OAAO,IAAI,WAAW,EAAE;IAgBxB;;;OAGG;IACH,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,WAAW,EAAE;IAsC5D;;;OAGG;IACH,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,WAAW,EAAE;IAwCvE,OAAO,CAAC,iBAAiB;IAsCzB;;OAEG;IACH,KAAK,IAAI,WAAW;IAoCpB;;OAEG;IACH,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,EAAE;IAIzC;;OAEG;IACH,SAAS,CAAC,KAAK,GAAE,MAAW,GAAG,WAAW,EAAE;IAO5C;;OAEG;IACH,iBAAiB,IAAI,KAAK,CAAC;QACzB,UAAU,EAAE,MAAM,CAAA;QAClB,WAAW,EAAE,MAAM,CAAA;QACnB,MAAM,EAAE,MAAM,CAAA;QACd,KAAK,EAAE,MAAM,CAAA;QACb,EAAE,EAAE,MAAM,CAAA;KACX,CAAC;IAYF,OAAO,CAAC,eAAe;IAgBvB,OAAO,CAAC,gBAAgB;IAWxB,OAAO,CAAC,OAAO;IASf;;OAEG;IACH,KAAK,CAAC,OAAO,EAAE;QAAE,UAAU,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,MAAM;CA+BjE"}
|