@entelligentsia/forgecli 1.0.2 → 1.0.10
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 +67 -0
- package/README.md +2 -1
- package/dist/CHANGELOG-forge-plugin.md +124 -0
- package/dist/CHANGELOG-pi.md +94 -0
- package/dist/extensions/forgecli/audience-gate.js +1 -1
- package/dist/extensions/forgecli/audience-gate.js.map +1 -1
- package/dist/extensions/forgecli/fix-bug.d.ts +1 -2
- package/dist/extensions/forgecli/fix-bug.js +678 -609
- package/dist/extensions/forgecli/fix-bug.js.map +1 -1
- package/dist/extensions/forgecli/forge-artifact-tool.js +42 -7
- package/dist/extensions/forgecli/forge-artifact-tool.js.map +1 -1
- package/dist/extensions/forgecli/forge-subagent.d.ts +17 -0
- package/dist/extensions/forgecli/forge-subagent.js +31 -12
- package/dist/extensions/forgecli/forge-subagent.js.map +1 -1
- package/dist/extensions/forgecli/forge-tools.d.ts +6 -0
- package/dist/extensions/forgecli/forge-tools.js +71 -8
- package/dist/extensions/forgecli/forge-tools.js.map +1 -1
- package/dist/extensions/forgecli/run-task.js +461 -391
- package/dist/extensions/forgecli/run-task.js.map +1 -1
- package/dist/extensions/forgecli/session-registry.d.ts +12 -0
- package/dist/extensions/forgecli/session-registry.js +23 -0
- package/dist/extensions/forgecli/session-registry.js.map +1 -1
- package/dist/extensions/forgecli/subagent/caller-context.d.ts +35 -11
- package/dist/extensions/forgecli/subagent/caller-context.js +49 -21
- package/dist/extensions/forgecli/subagent/caller-context.js.map +1 -1
- package/dist/extensions/forgecli/subagent/orchestrator-transcript.d.ts +66 -0
- package/dist/extensions/forgecli/subagent/orchestrator-transcript.js +66 -0
- package/dist/extensions/forgecli/subagent/orchestrator-transcript.js.map +1 -0
- package/dist/extensions/forgecli/subagent/phase-guard.d.ts +34 -0
- package/dist/extensions/forgecli/subagent/phase-guard.js +149 -0
- package/dist/extensions/forgecli/subagent/phase-guard.js.map +1 -0
- package/dist/extensions/forgecli/subagent/phase-summary-map.d.ts +2 -0
- package/dist/extensions/forgecli/subagent/phase-summary-map.js +39 -0
- package/dist/extensions/forgecli/subagent/phase-summary-map.js.map +1 -0
- package/dist/extensions/forgecli/thread-switcher.js +2 -2
- package/dist/extensions/forgecli/thread-switcher.js.map +1 -1
- package/dist/extensions/forgecli/viewport-events.d.ts +4 -0
- package/dist/extensions/forgecli/viewport-events.js +18 -1
- package/dist/extensions/forgecli/viewport-events.js.map +1 -1
- package/dist/extensions/forgecli/viewport-renderer.d.ts +12 -2
- package/dist/extensions/forgecli/viewport-renderer.js +8 -6
- package/dist/extensions/forgecli/viewport-renderer.js.map +1 -1
- package/dist/forge-payload/.base-pack/workflows/_fragments/store-cli-verbs.md +18 -3
- package/dist/forge-payload/.base-pack/workflows/architect_approve.md +4 -5
- package/dist/forge-payload/.base-pack/workflows/collator_agent.md +1 -1
- package/dist/forge-payload/.base-pack/workflows/commit_task.md +2 -3
- package/dist/forge-payload/.base-pack/workflows/fix_bug.md +10 -28
- package/dist/forge-payload/.base-pack/workflows/implement_plan.md +3 -2
- package/dist/forge-payload/.base-pack/workflows/orchestrate_task.md +41 -47
- package/dist/forge-payload/.base-pack/workflows/triage.md +190 -0
- package/dist/forge-payload/.base-pack/workflows/validate_task.md +2 -3
- package/dist/forge-payload/.claude-plugin/plugin.json +1 -1
- package/dist/forge-payload/.schemas/_defs/locator.schema.json +13 -0
- package/dist/forge-payload/.schemas/bug.schema.json +1 -0
- package/dist/forge-payload/.schemas/enum-catalog.json +2 -2
- package/dist/forge-payload/.schemas/migrations.json +72 -0
- package/dist/forge-payload/.schemas/sprint.schema.json +1 -0
- package/dist/forge-payload/.schemas/task.schema.json +1 -0
- package/dist/forge-payload/integrity.json +3 -3
- package/dist/forge-payload/meta/fragments/tool-discipline.md +21 -2
- package/dist/forge-payload/meta/workflows/_fragments/store-cli-verbs.md +18 -3
- package/dist/forge-payload/meta/workflows/meta-approve.md +4 -5
- package/dist/forge-payload/meta/workflows/meta-bug-triage.md +210 -0
- package/dist/forge-payload/meta/workflows/meta-collate.md +1 -1
- package/dist/forge-payload/meta/workflows/meta-commit.md +2 -3
- package/dist/forge-payload/meta/workflows/meta-fix-bug.md +10 -28
- package/dist/forge-payload/meta/workflows/meta-implement.md +3 -2
- package/dist/forge-payload/meta/workflows/meta-orchestrate.md +41 -47
- package/dist/forge-payload/meta/workflows/meta-validate.md +2 -3
- package/dist/forge-payload/schemas/_defs/locator.schema.json +13 -0
- package/dist/forge-payload/schemas/bug.schema.json +1 -0
- package/dist/forge-payload/schemas/enum-catalog.json +2 -2
- package/dist/forge-payload/schemas/sprint.schema.json +1 -0
- package/dist/forge-payload/schemas/structure-manifest.json +22 -2
- package/dist/forge-payload/schemas/task.schema.json +1 -0
- package/dist/forge-payload/tools/artifact-store.cjs +242 -0
- package/dist/forge-payload/tools/artifact.cjs +69 -100
- package/dist/forge-payload/tools/lib/artifact-kinds.cjs +95 -0
- package/dist/forge-payload/tools/lib/store-nlp.cjs +6 -0
- package/dist/forge-payload/tools/lib/store-query-exec.cjs +39 -5
- package/dist/forge-payload/tools/lib/suggest.cjs +2 -1
- package/dist/forge-payload/tools/preflight-gate.cjs +55 -5
- package/dist/forge-payload/tools/store-cli.cjs +50 -15
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/agent-harness.d.ts +5 -2
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/agent-harness.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/agent-harness.js +81 -18
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/agent-harness.js.map +1 -1
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/compaction/branch-summarization.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/compaction/branch-summarization.js +1 -0
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/compaction/branch-summarization.js.map +1 -1
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/compaction/compaction.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/compaction/compaction.js +19 -24
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/compaction/compaction.js.map +1 -1
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/session.d.ts +1 -0
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/session.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/session.js +14 -1
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/session.js.map +1 -1
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/types.d.ts +22 -8
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/types.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/types.js.map +1 -1
- package/node_modules/@earendil-works/pi-agent-core/package.json +3 -3
- package/node_modules/@earendil-works/pi-ai/README.md +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/models.generated.d.ts +374 -122
- package/node_modules/@earendil-works/pi-ai/dist/models.generated.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/models.generated.js +424 -232
- package/node_modules/@earendil-works/pi-ai/dist/models.generated.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/amazon-bedrock.d.ts +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/amazon-bedrock.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/amazon-bedrock.js +38 -2
- package/node_modules/@earendil-works/pi-ai/dist/providers/amazon-bedrock.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/anthropic.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/anthropic.js +21 -12
- package/node_modules/@earendil-works/pi-ai/dist/providers/anthropic.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/azure-openai-responses.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/azure-openai-responses.js +6 -10
- package/node_modules/@earendil-works/pi-ai/dist/providers/azure-openai-responses.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/google-vertex.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/google-vertex.js +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/google-vertex.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/google.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/google.js +5 -3
- package/node_modules/@earendil-works/pi-ai/dist/providers/google.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/images/openrouter.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/images/openrouter.js +3 -4
- package/node_modules/@earendil-works/pi-ai/dist/providers/images/openrouter.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/mistral.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/mistral.js +2 -3
- package/node_modules/@earendil-works/pi-ai/dist/providers/mistral.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/openai-codex-responses.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/openai-codex-responses.js +159 -78
- package/node_modules/@earendil-works/pi-ai/dist/providers/openai-codex-responses.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/openai-completions.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/openai-completions.js +16 -11
- package/node_modules/@earendil-works/pi-ai/dist/providers/openai-completions.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/openai-responses-shared.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/openai-responses-shared.js +4 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/openai-responses-shared.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/openai-responses.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/openai-responses.js +6 -10
- package/node_modules/@earendil-works/pi-ai/dist/providers/openai-responses.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/simple-options.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/simple-options.js +1 -0
- package/node_modules/@earendil-works/pi-ai/dist/providers/simple-options.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/stream.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/stream.js +14 -2
- package/node_modules/@earendil-works/pi-ai/dist/stream.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/types.d.ts +14 -4
- package/node_modules/@earendil-works/pi-ai/dist/types.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/types.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/utils/abort-signals.d.ts +6 -0
- package/node_modules/@earendil-works/pi-ai/dist/utils/abort-signals.d.ts.map +1 -0
- package/node_modules/@earendil-works/pi-ai/dist/utils/abort-signals.js +34 -0
- package/node_modules/@earendil-works/pi-ai/dist/utils/abort-signals.js.map +1 -0
- package/node_modules/@earendil-works/pi-ai/dist/utils/oauth/device-code.d.ts +9 -7
- package/node_modules/@earendil-works/pi-ai/dist/utils/oauth/device-code.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/utils/oauth/device-code.js +8 -7
- package/node_modules/@earendil-works/pi-ai/dist/utils/oauth/device-code.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/utils/oauth/github-copilot.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/utils/oauth/github-copilot.js +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/utils/oauth/github-copilot.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/utils/oauth/index.d.ts +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/utils/oauth/index.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/utils/oauth/index.js +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/utils/oauth/index.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/utils/oauth/openai-codex.d.ts +10 -1
- package/node_modules/@earendil-works/pi-ai/dist/utils/oauth/openai-codex.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/utils/oauth/openai-codex.js +179 -79
- package/node_modules/@earendil-works/pi-ai/dist/utils/oauth/openai-codex.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/package.json +2 -2
- package/node_modules/@earendil-works/pi-coding-agent/CHANGELOG.md +94 -0
- package/node_modules/@earendil-works/pi-coding-agent/README.md +9 -0
- package/node_modules/@earendil-works/pi-coding-agent/dist/cli/args.d.ts +3 -0
- package/node_modules/@earendil-works/pi-coding-agent/dist/cli/args.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/cli/args.js +27 -0
- package/node_modules/@earendil-works/pi-coding-agent/dist/cli/args.js.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/config.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/config.js +15 -2
- package/node_modules/@earendil-works/pi-coding-agent/dist/config.js.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/agent-session-services.d.ts +1 -0
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/agent-session-services.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/agent-session-services.js +1 -0
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/agent-session-services.js.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/agent-session.d.ts +5 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/agent-session.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/agent-session.js +28 -4
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/agent-session.js.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/compaction/compaction.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/compaction/compaction.js +18 -24
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/compaction/compaction.js.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/extensions/runner.d.ts +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/extensions/runner.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/extensions/runner.js +8 -2
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/extensions/runner.js.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/extensions/types.d.ts +7 -5
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/extensions/types.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/extensions/types.js.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/model-registry.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/model-registry.js +65 -13
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/model-registry.js.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/model-resolver.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/model-resolver.js +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/model-resolver.js.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/resolve-config-value.d.ts +9 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/resolve-config-value.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/resolve-config-value.js +134 -11
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/resolve-config-value.js.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/sdk.d.ts +2 -0
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/sdk.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/sdk.js +10 -6
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/sdk.js.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/session-manager.d.ts +6 -7
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/session-manager.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/session-manager.js +75 -28
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/session-manager.js.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/settings-manager.d.ts +2 -0
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/settings-manager.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/settings-manager.js +14 -9
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/settings-manager.js.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/system-prompt.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/system-prompt.js +0 -3
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/system-prompt.js.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/edit.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/edit.js +7 -10
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/edit.js.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/find.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/find.js.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/grep.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/grep.js.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/ls.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/ls.js +5 -7
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/ls.js.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/read.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/read.js +6 -7
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/read.js.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/render-utils.d.ts +5 -2
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/render-utils.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/render-utils.js +17 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/render-utils.js.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/write.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/write.js +5 -6
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/write.js.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/index.d.ts +2 -0
- package/node_modules/@earendil-works/pi-coding-agent/dist/index.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/index.js +2 -0
- package/node_modules/@earendil-works/pi-coding-agent/dist/index.js.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/main.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/main.js +69 -16
- package/node_modules/@earendil-works/pi-coding-agent/dist/main.js.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/migrations.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/migrations.js +118 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/migrations.js.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/login-dialog.d.ts +1 -3
- package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/login-dialog.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/login-dialog.js +2 -4
- package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/login-dialog.js.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/user-message.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/user-message.js +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/user-message.js.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/interactive-mode.d.ts +3 -0
- package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/interactive-mode.js +59 -6
- package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/interactive-mode.js.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/theme/theme.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/theme/theme.js +10 -0
- package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/theme/theme.js.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/modes/rpc/rpc-mode.js +3 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/modes/rpc/rpc-mode.js.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/modes/rpc/rpc-types.d.ts +1 -0
- package/node_modules/@earendil-works/pi-coding-agent/dist/modes/rpc/rpc-types.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/modes/rpc/rpc-types.js.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/utils/deprecation.d.ts +4 -0
- package/node_modules/@earendil-works/pi-coding-agent/dist/utils/deprecation.d.ts.map +1 -0
- package/node_modules/@earendil-works/pi-coding-agent/dist/utils/deprecation.js +13 -0
- package/node_modules/@earendil-works/pi-coding-agent/dist/utils/deprecation.js.map +1 -0
- package/node_modules/@earendil-works/pi-coding-agent/dist/utils/json.d.ts +3 -0
- package/node_modules/@earendil-works/pi-coding-agent/dist/utils/json.d.ts.map +1 -0
- package/node_modules/@earendil-works/pi-coding-agent/dist/utils/json.js +7 -0
- package/node_modules/@earendil-works/pi-coding-agent/dist/utils/json.js.map +1 -0
- package/node_modules/@earendil-works/pi-coding-agent/docs/custom-provider.md +13 -10
- package/node_modules/@earendil-works/pi-coding-agent/docs/development.md +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/docs/extensions.md +12 -6
- package/node_modules/@earendil-works/pi-coding-agent/docs/models.md +25 -12
- package/node_modules/@earendil-works/pi-coding-agent/docs/providers.md +13 -5
- package/node_modules/@earendil-works/pi-coding-agent/docs/quickstart.md +1 -0
- package/node_modules/@earendil-works/pi-coding-agent/docs/rpc.md +2 -1
- package/node_modules/@earendil-works/pi-coding-agent/docs/sdk.md +6 -0
- package/node_modules/@earendil-works/pi-coding-agent/docs/session-format.md +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/docs/sessions.md +8 -0
- package/node_modules/@earendil-works/pi-coding-agent/docs/settings.md +7 -3
- package/node_modules/@earendil-works/pi-coding-agent/docs/terminal-setup.md +2 -0
- package/node_modules/@earendil-works/pi-coding-agent/docs/tui.md +2 -2
- package/node_modules/@earendil-works/pi-coding-agent/docs/usage.md +9 -0
- package/node_modules/@earendil-works/pi-coding-agent/examples/extensions/README.md +1 -0
- package/node_modules/@earendil-works/pi-coding-agent/examples/extensions/custom-provider-anthropic/index.ts +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/examples/extensions/custom-provider-anthropic/package.json +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/examples/extensions/custom-provider-gitlab-duo/index.ts +54 -3
- package/node_modules/@earendil-works/pi-coding-agent/examples/extensions/custom-provider-gitlab-duo/package.json +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/examples/extensions/git-merge-and-resolve.ts +115 -0
- package/node_modules/@earendil-works/pi-coding-agent/examples/extensions/input-transform-streaming.ts +39 -0
- package/node_modules/@earendil-works/pi-coding-agent/examples/extensions/sandbox/package.json +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/examples/extensions/with-deps/package.json +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/npm-shrinkwrap.json +443 -61
- package/node_modules/@earendil-works/pi-coding-agent/package.json +6 -6
- package/node_modules/@earendil-works/pi-tui/README.md +2 -2
- package/node_modules/@earendil-works/pi-tui/dist/components/editor.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/components/editor.js +24 -83
- package/node_modules/@earendil-works/pi-tui/dist/components/editor.js.map +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/components/input.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/components/input.js +7 -55
- package/node_modules/@earendil-works/pi-tui/dist/components/input.js.map +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/components/markdown.d.ts +7 -1
- package/node_modules/@earendil-works/pi-tui/dist/components/markdown.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/components/markdown.js +12 -2
- package/node_modules/@earendil-works/pi-tui/dist/components/markdown.js.map +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/index.d.ts +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/index.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/index.js.map +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/terminal-image.d.ts +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/terminal-image.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/terminal-image.js +34 -7
- package/node_modules/@earendil-works/pi-tui/dist/terminal-image.js.map +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/terminal.d.ts +33 -10
- package/node_modules/@earendil-works/pi-tui/dist/terminal.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/terminal.js +172 -37
- package/node_modules/@earendil-works/pi-tui/dist/terminal.js.map +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/utils.d.ts +6 -1
- package/node_modules/@earendil-works/pi-tui/dist/utils.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/utils.js +27 -15
- package/node_modules/@earendil-works/pi-tui/dist/utils.js.map +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/word-navigation.d.ts +25 -0
- package/node_modules/@earendil-works/pi-tui/dist/word-navigation.d.ts.map +1 -0
- package/node_modules/@earendil-works/pi-tui/dist/word-navigation.js +96 -0
- package/node_modules/@earendil-works/pi-tui/dist/word-navigation.js.map +1 -0
- package/node_modules/@earendil-works/pi-tui/package.json +2 -2
- package/node_modules/@entelligentsia/forge-compress/LICENSE +21 -0
- package/node_modules/@entelligentsia/forge-compress/README.md +85 -0
- package/node_modules/@entelligentsia/forge-compress/dist/compressor.d.ts +6 -0
- package/node_modules/@entelligentsia/forge-compress/dist/compressor.js +137 -0
- package/node_modules/@entelligentsia/forge-compress/dist/entropy.d.ts +3 -0
- package/node_modules/@entelligentsia/forge-compress/dist/entropy.js +99 -0
- package/node_modules/@entelligentsia/forge-compress/dist/forge/entity.d.ts +8 -0
- package/node_modules/@entelligentsia/forge-compress/dist/forge/entity.js +149 -0
- package/node_modules/@entelligentsia/forge-compress/dist/forge/index.d.ts +7 -0
- package/node_modules/@entelligentsia/forge-compress/dist/forge/index.js +4 -0
- package/node_modules/@entelligentsia/forge-compress/dist/forge/markdown.d.ts +5 -0
- package/node_modules/@entelligentsia/forge-compress/dist/forge/markdown.js +92 -0
- package/node_modules/@entelligentsia/forge-compress/dist/forge/query.d.ts +7 -0
- package/node_modules/@entelligentsia/forge-compress/dist/forge/query.js +60 -0
- package/node_modules/@entelligentsia/forge-compress/dist/forge/validate.d.ts +1 -0
- package/node_modules/@entelligentsia/forge-compress/dist/forge/validate.js +82 -0
- package/node_modules/@entelligentsia/forge-compress/dist/index.d.ts +6 -0
- package/node_modules/@entelligentsia/forge-compress/dist/index.js +5 -0
- package/node_modules/@entelligentsia/forge-compress/dist/progressive.d.ts +1 -0
- package/node_modules/@entelligentsia/forge-compress/dist/progressive.js +108 -0
- package/node_modules/@entelligentsia/forge-compress/dist/strip.d.ts +4 -0
- package/node_modules/@entelligentsia/forge-compress/dist/strip.js +55 -0
- package/node_modules/@entelligentsia/forge-compress/dist/tokens.d.ts +2 -0
- package/node_modules/@entelligentsia/forge-compress/dist/tokens.js +17 -0
- package/node_modules/@entelligentsia/forge-compress/package.json +45 -0
- package/node_modules/@entelligentsia/forge-compress/src/__tests__/compress.test.ts +409 -0
- package/node_modules/@entelligentsia/forge-compress/src/compressor.ts +147 -0
- package/node_modules/@entelligentsia/forge-compress/src/entropy.ts +105 -0
- package/node_modules/@entelligentsia/forge-compress/src/forge/entity.ts +184 -0
- package/node_modules/@entelligentsia/forge-compress/src/forge/index.ts +10 -0
- package/node_modules/@entelligentsia/forge-compress/src/forge/markdown.ts +122 -0
- package/node_modules/@entelligentsia/forge-compress/src/forge/query.ts +105 -0
- package/node_modules/@entelligentsia/forge-compress/src/forge/validate.ts +86 -0
- package/node_modules/@entelligentsia/forge-compress/src/index.ts +22 -0
- package/node_modules/@entelligentsia/forge-compress/src/progressive.ts +123 -0
- package/node_modules/@entelligentsia/forge-compress/src/strip.ts +58 -0
- package/node_modules/@entelligentsia/forge-compress/src/tokens.ts +19 -0
- package/node_modules/@mariozechner/clipboard/Cargo.toml +3 -3
- package/node_modules/@mariozechner/clipboard/index.d.ts +34 -20
- package/node_modules/@mariozechner/clipboard/index.js +546 -257
- package/node_modules/@mariozechner/clipboard/package.json +5 -6
- package/node_modules/@mariozechner/clipboard/package.json.prepack-backup +14 -14
- package/node_modules/@mariozechner/clipboard/src/lib.rs +4 -9
- package/node_modules/@mariozechner/clipboard-linux-x64-gnu/clipboard.linux-x64-gnu.node +0 -0
- package/node_modules/@mariozechner/clipboard-linux-x64-gnu/package.json +2 -2
- package/package.json +11 -16
- package/dist/forge-payload/.base-pack/commands/quiz-agent.md +0 -6
- package/dist/forge-payload/.base-pack/commands/retrospective.md +0 -6
- package/dist/forge-payload/.base-pack/commands/sprint-intake.md +0 -6
- package/dist/forge-payload/.base-pack/commands/sprint-plan.md +0 -6
- package/dist/forge-payload/commands/calibrate.md +0 -10
- package/dist/forge-payload/commands/materialize.md +0 -119
- package/dist/forge-payload/commands/migrate.md +0 -12
- package/dist/forge-payload/commands/quiz-agent.md +0 -6
- package/dist/forge-payload/commands/regenerate.md +0 -6
- package/dist/forge-payload/commands/store-query.md +0 -6
- package/dist/forge-payload/commands/store-repair.md +0 -6
- package/dist/forge-payload/commands/update-tools.md +0 -10
- package/dist/forge-payload/meta/templates/meta-retrospective.md +0 -28
- package/dist/forge-payload/tools/prompts/sprint-plan-prompt.md +0 -70
- package/dist/forge-payload/tools/schemas/task-list.schema.json +0 -53
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/execution-env.d.ts +0 -4
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/execution-env.d.ts.map +0 -1
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/execution-env.js +0 -3
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/execution-env.js.map +0 -1
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/repo/jsonl.d.ts +0 -20
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/repo/jsonl.d.ts.map +0 -1
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/repo/jsonl.js +0 -92
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/repo/jsonl.js.map +0 -1
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/repo/memory.d.ts +0 -18
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/repo/memory.d.ts.map +0 -1
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/repo/memory.js +0 -42
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/repo/memory.js.map +0 -1
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/repo/shared.d.ts +0 -10
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/repo/shared.d.ts.map +0 -1
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/repo/shared.js +0 -31
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/repo/shared.js.map +0 -1
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/storage/jsonl.d.ts +0 -30
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/storage/jsonl.d.ts.map +0 -1
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/storage/jsonl.js +0 -170
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/storage/jsonl.js.map +0 -1
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/storage/memory.d.ts +0 -26
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/storage/memory.d.ts.map +0 -1
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/storage/memory.js +0 -90
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/storage/memory.js.map +0 -1
- package/node_modules/@mariozechner/clipboard-linux-x64-musl/README.md +0 -3
- package/node_modules/@mariozechner/clipboard-linux-x64-musl/clipboard.linux-x64-musl.node +0 -0
- package/node_modules/@mariozechner/clipboard-linux-x64-musl/package.json +0 -25
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
export function compressValidateStore(input: string): string {
|
|
2
|
+
let report: Record<string, unknown>;
|
|
3
|
+
try {
|
|
4
|
+
report = JSON.parse(input);
|
|
5
|
+
} catch {
|
|
6
|
+
return compressPlainValidation(input);
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
const errors = (report.errors ?? []) as { id: string; category: string; message: string }[];
|
|
10
|
+
const warnings = (report.warnings ?? []) as { id: string; category: string; message: string }[];
|
|
11
|
+
const fixes = (report.fixes ?? []) as { id: string; message: string; applied: boolean }[];
|
|
12
|
+
const summary = report.summary as Record<string, number> | undefined;
|
|
13
|
+
|
|
14
|
+
const parts: string[] = [];
|
|
15
|
+
|
|
16
|
+
if (summary) {
|
|
17
|
+
const counts = Object.entries(summary)
|
|
18
|
+
.filter(([, v]) => v > 0)
|
|
19
|
+
.map(([k, v]) => `${v} ${k}`)
|
|
20
|
+
.join(", ");
|
|
21
|
+
if (counts) parts.push(counts);
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
if (errors.length > 0) {
|
|
25
|
+
const grouped = groupBy(errors, "category");
|
|
26
|
+
for (const [cat, items] of Object.entries(grouped)) {
|
|
27
|
+
parts.push(`ERR ${cat} (${items.length}):`);
|
|
28
|
+
for (const item of items.slice(0, 5)) {
|
|
29
|
+
parts.push(` ${item.id}: ${item.message}`);
|
|
30
|
+
}
|
|
31
|
+
if (items.length > 5) parts.push(` ... +${items.length - 5} more`);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
if (warnings.length > 0) {
|
|
36
|
+
const grouped = groupBy(warnings, "category");
|
|
37
|
+
for (const [cat, items] of Object.entries(grouped)) {
|
|
38
|
+
parts.push(`WARN ${cat} (${items.length}):`);
|
|
39
|
+
for (const item of items.slice(0, 3)) {
|
|
40
|
+
parts.push(` ${item.id}: ${item.message}`);
|
|
41
|
+
}
|
|
42
|
+
if (items.length > 3) parts.push(` ... +${items.length - 3} more`);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
if (fixes.length > 0) {
|
|
47
|
+
const applied = fixes.filter((f) => f.applied).length;
|
|
48
|
+
parts.push(`${fixes.length} fixes (${applied} applied)`);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
if (parts.length === 0) return "ok (store valid)";
|
|
52
|
+
return parts.join("\n");
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
function compressPlainValidation(input: string): string {
|
|
56
|
+
const lines = input.split("\n").filter((l) => l.trim());
|
|
57
|
+
if (lines.length <= 10) return input;
|
|
58
|
+
|
|
59
|
+
const errors = lines.filter((l) => l.includes("ERROR"));
|
|
60
|
+
const warns = lines.filter((l) => l.includes("WARN"));
|
|
61
|
+
const fixed = lines.filter((l) => l.includes("FIXED"));
|
|
62
|
+
|
|
63
|
+
const parts: string[] = [];
|
|
64
|
+
if (errors.length > 0) {
|
|
65
|
+
parts.push(`${errors.length} errors:`);
|
|
66
|
+
for (const e of errors.slice(0, 5)) parts.push(` ${e.trim()}`);
|
|
67
|
+
if (errors.length > 5) parts.push(` ... +${errors.length - 5} more`);
|
|
68
|
+
}
|
|
69
|
+
if (warns.length > 0) parts.push(`${warns.length} warnings`);
|
|
70
|
+
if (fixed.length > 0) parts.push(`${fixed.length} fixed`);
|
|
71
|
+
|
|
72
|
+
return parts.length > 0 ? parts.join("\n") : input;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
function groupBy<T extends Record<string, unknown>>(
|
|
76
|
+
items: T[],
|
|
77
|
+
key: string,
|
|
78
|
+
): Record<string, T[]> {
|
|
79
|
+
const result: Record<string, T[]> = {};
|
|
80
|
+
for (const item of items) {
|
|
81
|
+
const k = String(item[key] ?? "unknown");
|
|
82
|
+
if (!result[k]) result[k] = [];
|
|
83
|
+
result[k].push(item);
|
|
84
|
+
}
|
|
85
|
+
return result;
|
|
86
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export {
|
|
2
|
+
compressStoreQuery,
|
|
3
|
+
compressEntity,
|
|
4
|
+
compressEntityList,
|
|
5
|
+
compressMarkdown,
|
|
6
|
+
compressValidateStore,
|
|
7
|
+
} from "./forge/index.js";
|
|
8
|
+
|
|
9
|
+
export type {
|
|
10
|
+
CompressQueryOptions,
|
|
11
|
+
CompressEntityOptions,
|
|
12
|
+
CompressMarkdownOptions,
|
|
13
|
+
} from "./forge/index.js";
|
|
14
|
+
|
|
15
|
+
export { countTokens, truncateToTokenBudget } from "./tokens.js";
|
|
16
|
+
export { compressIb } from "./entropy.js";
|
|
17
|
+
export { compressProgressive } from "./progressive.js";
|
|
18
|
+
export {
|
|
19
|
+
lightweightCleanup,
|
|
20
|
+
verbatimCompact,
|
|
21
|
+
stripAnsi,
|
|
22
|
+
} from "./compressor.js";
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
import { countTokens, truncateToTokenBudget } from "./tokens.js";
|
|
2
|
+
|
|
3
|
+
const LAMBDA = 1.35;
|
|
4
|
+
|
|
5
|
+
function expWeights(n: number): number[] {
|
|
6
|
+
return Array.from({ length: n }, (_, i) => Math.exp(LAMBDA * i));
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
function allocateBudget(budgetTokens: number, weights: number[]): number[] {
|
|
10
|
+
const n = weights.length;
|
|
11
|
+
if (n === 0 || budgetTokens === 0) return new Array(n).fill(0);
|
|
12
|
+
|
|
13
|
+
const sumW = Math.max(weights.reduce((a, b) => a + b, 0), Number.EPSILON);
|
|
14
|
+
const base = new Array(n).fill(0);
|
|
15
|
+
const frac = new Array(n).fill(0);
|
|
16
|
+
|
|
17
|
+
for (let i = 0; i < n; i++) {
|
|
18
|
+
const exact = (budgetTokens * weights[i]) / sumW;
|
|
19
|
+
base[i] = Math.floor(exact);
|
|
20
|
+
frac[i] = exact - base[i];
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
const given = base.reduce((a: number, b: number) => a + b, 0);
|
|
24
|
+
const order = Array.from({ length: n }, (_, i) => i).sort(
|
|
25
|
+
(a, b) => frac[b] - frac[a],
|
|
26
|
+
);
|
|
27
|
+
|
|
28
|
+
let extra = budgetTokens - given;
|
|
29
|
+
for (const i of order) {
|
|
30
|
+
if (extra <= 0) break;
|
|
31
|
+
base[i]++;
|
|
32
|
+
extra--;
|
|
33
|
+
}
|
|
34
|
+
return base;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
function tierForIndex(i: number, n: number): number {
|
|
38
|
+
if (n <= 1) return 2;
|
|
39
|
+
const r = i / (n - 1);
|
|
40
|
+
if (r < 1 / 3) return 0;
|
|
41
|
+
if (r < 2 / 3) return 1;
|
|
42
|
+
return 2;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
const STRUCTURE_KEYWORDS = [
|
|
46
|
+
"fn ",
|
|
47
|
+
"pub ",
|
|
48
|
+
"struct ",
|
|
49
|
+
"enum ",
|
|
50
|
+
"trait ",
|
|
51
|
+
"impl ",
|
|
52
|
+
"mod ",
|
|
53
|
+
"use ",
|
|
54
|
+
"def ",
|
|
55
|
+
"class ",
|
|
56
|
+
"function ",
|
|
57
|
+
"export ",
|
|
58
|
+
"import ",
|
|
59
|
+
"const ",
|
|
60
|
+
"interface ",
|
|
61
|
+
];
|
|
62
|
+
|
|
63
|
+
function mapLike(s: string, maxTokens: number): string {
|
|
64
|
+
const picked: string[] = [];
|
|
65
|
+
const lines = s.split("\n");
|
|
66
|
+
for (let i = 0; i < lines.length; i++) {
|
|
67
|
+
if (i === 0 || STRUCTURE_KEYWORDS.some((k) => lines[i].includes(k))) {
|
|
68
|
+
picked.push(lines[i]);
|
|
69
|
+
}
|
|
70
|
+
if (picked.length >= 48) break;
|
|
71
|
+
}
|
|
72
|
+
if (picked.length === 0 && lines.length > 0) {
|
|
73
|
+
picked.push(lines[0]);
|
|
74
|
+
}
|
|
75
|
+
return truncateToTokenBudget(picked.join("\n"), Math.max(4, maxTokens));
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
function oneLineSummary(
|
|
79
|
+
segIdx: number,
|
|
80
|
+
s: string,
|
|
81
|
+
maxTokens: number,
|
|
82
|
+
): string {
|
|
83
|
+
const preview = s.split("\n")[0]?.slice(0, 120) ?? "";
|
|
84
|
+
const lineCount = s.split("\n").length;
|
|
85
|
+
const draft = `// seg[${segIdx}] ${lineCount} lines, ${s.length} chars | ${preview}`;
|
|
86
|
+
return truncateToTokenBudget(draft, Math.max(8, maxTokens));
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
export function compressProgressive(
|
|
90
|
+
segments: string[],
|
|
91
|
+
budgetTokens: number,
|
|
92
|
+
): string[] {
|
|
93
|
+
const n = segments.length;
|
|
94
|
+
if (n === 0) return [];
|
|
95
|
+
if (budgetTokens === 0) return segments.map(() => "");
|
|
96
|
+
|
|
97
|
+
const weights = expWeights(n);
|
|
98
|
+
const allocs = allocateBudget(budgetTokens, weights);
|
|
99
|
+
const out: string[] = [];
|
|
100
|
+
|
|
101
|
+
for (let i = 0; i < n; i++) {
|
|
102
|
+
const alloc = allocs[i];
|
|
103
|
+
const tier = tierForIndex(i, n);
|
|
104
|
+
if (alloc === 0) {
|
|
105
|
+
out.push("");
|
|
106
|
+
continue;
|
|
107
|
+
}
|
|
108
|
+
let compressed: string;
|
|
109
|
+
switch (tier) {
|
|
110
|
+
case 2:
|
|
111
|
+
compressed = truncateToTokenBudget(segments[i], alloc);
|
|
112
|
+
break;
|
|
113
|
+
case 1:
|
|
114
|
+
compressed = mapLike(segments[i], alloc);
|
|
115
|
+
break;
|
|
116
|
+
default:
|
|
117
|
+
compressed = oneLineSummary(i, segments[i], alloc);
|
|
118
|
+
break;
|
|
119
|
+
}
|
|
120
|
+
out.push(truncateToTokenBudget(compressed, alloc));
|
|
121
|
+
}
|
|
122
|
+
return out;
|
|
123
|
+
}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
const ANSI_RE = /\x1b\[[0-9;]*[a-zA-Z]/g;
|
|
2
|
+
|
|
3
|
+
export function stripAnsi(s: string): string {
|
|
4
|
+
if (!s.includes("\x1b")) return s;
|
|
5
|
+
return s.replace(ANSI_RE, "");
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
const TS_RE =
|
|
9
|
+
/\d{4}-\d{2}-\d{2}[T ]\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:?\d{2})?/g;
|
|
10
|
+
const HASH_RE = /\b[0-9a-f]{32,64}\b/g;
|
|
11
|
+
|
|
12
|
+
export function stripTimestampsAndHashes(line: string): string {
|
|
13
|
+
return line.replace(TS_RE, "[TS]").replace(HASH_RE, "[HASH]");
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
export function normalizeWhitespace(line: string): string {
|
|
17
|
+
let result = "";
|
|
18
|
+
let prevSpace = false;
|
|
19
|
+
for (const ch of line) {
|
|
20
|
+
if (ch === " " || ch === "\t") {
|
|
21
|
+
if (!prevSpace) {
|
|
22
|
+
result += " ";
|
|
23
|
+
prevSpace = true;
|
|
24
|
+
}
|
|
25
|
+
} else {
|
|
26
|
+
result += ch;
|
|
27
|
+
prevSpace = false;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
return result;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
const BOILERPLATE_PREFIXES = [
|
|
34
|
+
"copyright",
|
|
35
|
+
"licensed under",
|
|
36
|
+
"license:",
|
|
37
|
+
"all rights reserved",
|
|
38
|
+
"generated by",
|
|
39
|
+
"auto-generated",
|
|
40
|
+
];
|
|
41
|
+
|
|
42
|
+
const SEPARATOR_CHARS = new Set(["=", "-", "*", "─", "━"]);
|
|
43
|
+
|
|
44
|
+
export function isBoilerplate(line: string): boolean {
|
|
45
|
+
const lower = line.toLowerCase();
|
|
46
|
+
if (BOILERPLATE_PREFIXES.some((p) => lower.startsWith(p))) return true;
|
|
47
|
+
if (line.length >= 4) {
|
|
48
|
+
const first = line[0];
|
|
49
|
+
if (SEPARATOR_CHARS.has(first)) {
|
|
50
|
+
let same = 0;
|
|
51
|
+
for (const c of line) {
|
|
52
|
+
if (c === first) same++;
|
|
53
|
+
}
|
|
54
|
+
if (same / line.length > 0.8) return true;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
return false;
|
|
58
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
const CHARS_PER_TOKEN = 3.7;
|
|
2
|
+
|
|
3
|
+
export function countTokens(text: string): number {
|
|
4
|
+
if (!text) return 0;
|
|
5
|
+
return Math.ceil(text.length / CHARS_PER_TOKEN);
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
export function truncateToTokenBudget(
|
|
9
|
+
text: string,
|
|
10
|
+
maxTokens: number,
|
|
11
|
+
): string {
|
|
12
|
+
if (maxTokens <= 0) return "";
|
|
13
|
+
if (countTokens(text) <= maxTokens) return text;
|
|
14
|
+
const charBudget = Math.floor(maxTokens * CHARS_PER_TOKEN);
|
|
15
|
+
const truncated = text.slice(0, charBudget);
|
|
16
|
+
const lastNewline = truncated.lastIndexOf("\n");
|
|
17
|
+
const clean = lastNewline > 0 ? truncated.slice(0, lastNewline) : truncated;
|
|
18
|
+
return `${clean} …`;
|
|
19
|
+
}
|
|
@@ -17,8 +17,8 @@ futures = "0.3.30"
|
|
|
17
17
|
# Pin image to version compatible with older Rust in CI Docker images
|
|
18
18
|
image = { version = "=0.25.5", features = ["png", "jpeg"], optional = true, default-features = false }
|
|
19
19
|
# Default enable napi4 feature, see https://nodejs.org/api/n-api.html#node-api-version-matrix
|
|
20
|
-
napi = { version = "
|
|
21
|
-
napi-derive = "
|
|
20
|
+
napi = { version = "3.9.0", default-features = false, features = ["napi4", "tokio_rt", "dyn-symbols"] }
|
|
21
|
+
napi-derive = "3.5.6"
|
|
22
22
|
tokio = "1.36.0"
|
|
23
23
|
|
|
24
24
|
[target.'cfg(all(unix, not(any(target_os="macos", target_os="android", target_os="ios", target_os="emscripten"))))'.dependencies]
|
|
@@ -38,7 +38,7 @@ windows = { version = "0.59.0", features = ["Win32_Foundation", "Win32_Graphics_
|
|
|
38
38
|
|
|
39
39
|
[build-dependencies]
|
|
40
40
|
# Pin to version that works with older Rust in Docker images
|
|
41
|
-
napi-build = "
|
|
41
|
+
napi-build = "2.3.2"
|
|
42
42
|
|
|
43
43
|
[profile.release]
|
|
44
44
|
lto = true
|
|
@@ -1,23 +1,37 @@
|
|
|
1
|
-
/*
|
|
1
|
+
/* auto-generated by NAPI-RS */
|
|
2
2
|
/* eslint-disable */
|
|
3
|
+
export declare function availableFormats(): Array<string>
|
|
3
4
|
|
|
4
|
-
|
|
5
|
+
export declare function callThreadsafeFunction(callback: ((err: Error | null, arg: number) => void)): void
|
|
6
|
+
|
|
7
|
+
export declare function clear(): Promise<void>
|
|
8
|
+
|
|
9
|
+
export declare function getHtml(): Promise<string>
|
|
10
|
+
|
|
11
|
+
export declare function getImageBase64(): Promise<string>
|
|
12
|
+
|
|
13
|
+
export declare function getImageBinary(): Promise<Array<number>>
|
|
14
|
+
|
|
15
|
+
export declare function getRtf(): Promise<string>
|
|
16
|
+
|
|
17
|
+
export declare function getText(): Promise<string>
|
|
18
|
+
|
|
19
|
+
export declare function hasHtml(): boolean
|
|
20
|
+
|
|
21
|
+
export declare function hasImage(): boolean
|
|
22
|
+
|
|
23
|
+
export declare function hasRtf(): boolean
|
|
24
|
+
|
|
25
|
+
export declare function hasText(): boolean
|
|
26
|
+
|
|
27
|
+
export declare function setHtml(html: string): Promise<void>
|
|
28
|
+
|
|
29
|
+
export declare function setImageBase64(base64Str: string): Promise<void>
|
|
30
|
+
|
|
31
|
+
export declare function setImageBinary(imageBytes: Array<number>): Promise<void>
|
|
32
|
+
|
|
33
|
+
export declare function setRtf(rtf: string): Promise<void>
|
|
34
|
+
|
|
35
|
+
export declare function setText(text: string): Promise<void>
|
|
5
36
|
|
|
6
|
-
export function
|
|
7
|
-
export function getText(): Promise<string>
|
|
8
|
-
export function setText(text: string): Promise<void>
|
|
9
|
-
export function hasText(): boolean
|
|
10
|
-
export function getImageBinary(): Promise<Array<number>>
|
|
11
|
-
export function getImageBase64(): Promise<string>
|
|
12
|
-
export function setImageBinary(imageBytes: Array<number>): Promise<void>
|
|
13
|
-
export function setImageBase64(base64Str: string): Promise<void>
|
|
14
|
-
export function hasImage(): boolean
|
|
15
|
-
export function getHtml(): Promise<string>
|
|
16
|
-
export function setHtml(html: string): Promise<void>
|
|
17
|
-
export function hasHtml(): boolean
|
|
18
|
-
export function getRtf(): Promise<string>
|
|
19
|
-
export function setRtf(rtf: string): Promise<void>
|
|
20
|
-
export function hasRtf(): boolean
|
|
21
|
-
export function clear(): Promise<void>
|
|
22
|
-
export function watch(): void
|
|
23
|
-
export function callThreadsafeFunction(callback: (...args: any[]) => any): void
|
|
37
|
+
export declare function watch(): void
|