oh-my-knowledge 1.0.0-beta.11 → 1.0.0-beta.13
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 +81 -12
- package/README.zh.md +81 -12
- package/dist/assets/agent-skills/omk/SKILL.md +1 -1
- package/dist/assets/agent-skills/omk/references/commands.md +80 -20
- package/dist/cli/commands/agents.d.ts +19 -0
- package/dist/cli/commands/agents.js +216 -0
- package/dist/cli/commands/doctor.d.ts +1 -1
- package/dist/cli/commands/eval/gold/compare.d.ts +1 -1
- package/dist/cli/commands/eval/gold/index.d.ts +1 -1
- package/dist/cli/commands/eval/gold/init.d.ts +1 -1
- package/dist/cli/commands/eval/gold/validate.d.ts +1 -1
- package/dist/cli/commands/eval/index.d.ts +1 -1
- package/dist/cli/commands/eval/task.d.ts +13 -0
- package/dist/cli/commands/eval/task.js +42 -0
- package/dist/cli/commands/evolve.d.ts +1 -1
- package/dist/cli/commands/init.d.ts +1 -1
- package/dist/cli/commands/init.js +54 -12
- package/dist/cli/commands/install.d.ts +1 -1
- package/dist/cli/commands/list.d.ts +1 -1
- package/dist/cli/commands/observe/inbox.d.ts +1 -1
- package/dist/cli/commands/observe/inbox.js +4 -4
- package/dist/cli/commands/observe/index.d.ts +1 -1
- package/dist/cli/commands/observe/ingest.d.ts +1 -1
- package/dist/cli/commands/observe/ingest.js +10 -6
- package/dist/cli/commands/observe/knowledge.d.ts +1 -1
- package/dist/cli/commands/observe/knowledge.js +1 -1
- package/dist/cli/commands/observe/show.d.ts +1 -1
- package/dist/cli/commands/observe/show.js +3 -3
- package/dist/cli/commands/promote.d.ts +1 -1
- package/dist/cli/commands/rollback.d.ts +1 -1
- package/dist/cli/commands/sample.d.ts +1 -1
- package/dist/cli/commands/sample.js +4 -4
- package/dist/cli/commands/studio.d.ts +2 -1
- package/dist/cli/commands/studio.js +35 -42
- package/dist/cli/lib/i18n-dict/init.d.ts +1 -1
- package/dist/cli/lib/i18n-dict/init.js +6 -0
- package/dist/cli/lib/i18n.d.ts +6 -3
- package/dist/cli/lib/i18n.js +14 -12
- package/dist/cli/oclif/base-command.d.ts +4 -1
- package/dist/cli/oclif/base-command.js +11 -4
- package/dist/cli/oclif/i18n.d.ts +5 -2
- package/dist/cli/oclif/i18n.js +10 -5
- package/dist/cli/templates/init-samples.d.ts +2 -1
- package/dist/cli/templates/init-samples.js +74 -2
- package/dist/diagnosis/observe-producer.d.ts +4 -4
- package/dist/diagnosis/observe-producer.js +2 -70
- package/dist/dsh-plugin/core-adapter.js +16 -14
- package/dist/dsh-plugin/index.js +18 -13
- package/dist/dsh-plugin/trace-adapter.js +3 -6
- package/dist/eval-core/analysis/bootstrap-kernel.d.ts +19 -0
- package/dist/eval-core/analysis/bootstrap-kernel.js +55 -0
- package/dist/{eval-workflows → eval-core}/analysis/bootstrap.d.ts +8 -0
- package/dist/{eval-workflows → eval-core}/analysis/bootstrap.js +19 -121
- package/dist/eval-core/analysis/builtin-aggregation.d.ts +28 -0
- package/dist/eval-core/analysis/builtin-aggregation.js +131 -0
- package/dist/eval-core/analysis/builtin-bootstrap.d.ts +16 -0
- package/dist/eval-core/analysis/builtin-bootstrap.js +447 -0
- package/dist/eval-core/analysis/builtin-composite.d.ts +25 -0
- package/dist/eval-core/analysis/builtin-composite.js +207 -0
- package/dist/eval-core/analysis/builtin-decisions.d.ts +38 -0
- package/dist/eval-core/analysis/builtin-decisions.js +177 -0
- package/dist/eval-core/analysis/builtin-hypothesis.d.ts +41 -0
- package/dist/eval-core/analysis/builtin-hypothesis.js +155 -0
- package/dist/eval-core/analysis/builtin-identity.d.ts +32 -0
- package/dist/eval-core/analysis/builtin-identity.js +134 -0
- package/dist/eval-core/analysis/builtin-primitives.d.ts +32 -0
- package/dist/eval-core/analysis/builtin-primitives.js +158 -0
- package/dist/eval-core/analysis/builtin-registry.d.ts +2 -0
- package/dist/eval-core/analysis/builtin-registry.js +235 -0
- package/dist/eval-core/analysis/builtin-schemas.d.ts +296 -0
- package/dist/eval-core/analysis/builtin-schemas.js +303 -0
- package/dist/eval-core/analysis/builtin-validation.d.ts +23 -0
- package/dist/eval-core/analysis/builtin-validation.js +74 -0
- package/dist/eval-core/analysis/builtins.d.ts +5 -60
- package/dist/eval-core/analysis/builtins.js +17 -1974
- package/dist/eval-core/analysis/decision.js +10 -9
- package/dist/eval-core/analysis/runtime.js +10 -35
- package/dist/eval-core/compiler/index.js +1 -7
- package/dist/eval-core/compiler/types.d.ts +1 -1
- package/dist/eval-core/compiler/validation.js +4 -27
- package/dist/eval-core/contracts/analysis-bundle.d.ts +17 -13
- package/dist/eval-core/contracts/analysis-bundle.js +0 -563
- package/dist/eval-core/contracts/artifacts.js +2 -2
- package/dist/eval-core/contracts/budget.js +1 -1
- package/dist/eval-core/contracts/common.js +1 -1
- package/dist/eval-core/contracts/comparability.d.ts +15 -7
- package/dist/eval-core/contracts/comparability.js +11 -816
- package/dist/eval-core/contracts/definition.js +2 -2
- package/dist/eval-core/contracts/digests.d.ts +2 -2
- package/dist/eval-core/contracts/digests.js +8 -31
- package/dist/eval-core/contracts/evaluation-bundle.d.ts +11 -30
- package/dist/eval-core/contracts/evaluation-bundle.js +0 -843
- package/dist/eval-core/contracts/evaluation-identities.js +2 -2
- package/dist/eval-core/contracts/evaluation-report.d.ts +3 -17
- package/dist/eval-core/contracts/evaluation-report.js +2 -202
- package/dist/eval-core/contracts/execution-bundle.d.ts +6 -36
- package/dist/eval-core/contracts/execution-bundle.js +0 -649
- package/dist/eval-core/contracts/execution-controls.js +1 -3
- package/dist/eval-core/contracts/execution-facts.d.ts +2 -7
- package/dist/eval-core/contracts/execution-facts.js +1 -1
- package/dist/eval-core/contracts/execution-identities.d.ts +1 -1
- package/dist/eval-core/contracts/execution-identities.js +9 -31
- package/dist/eval-core/contracts/json-schema.d.ts +4 -1
- package/dist/eval-core/contracts/json-schema.js +10 -1
- package/dist/eval-core/contracts/json.js +3 -2
- package/dist/eval-core/contracts/runtime-capabilities.js +1 -1
- package/dist/eval-core/contracts/sealed-run-plan.d.ts +2 -2
- package/dist/eval-core/contracts/sealed-run-plan.js +1 -1
- package/dist/eval-core/contracts/series.d.ts +14 -24
- package/dist/eval-core/contracts/series.js +11 -387
- package/dist/eval-core/engine/index.js +6 -3
- package/dist/eval-core/evaluation/runtime.js +37 -93
- package/dist/eval-core/execution/runtime.js +23 -80
- package/dist/eval-core/execution/scheduler.js +1 -7
- package/dist/eval-core/index.d.ts +6 -5
- package/dist/eval-core/index.js +3 -2
- package/dist/eval-core/primitives/budget-outcome.d.ts +11 -0
- package/dist/eval-core/primitives/budget-outcome.js +8 -0
- package/dist/eval-core/primitives/graph.d.ts +2 -0
- package/dist/eval-core/primitives/graph.js +17 -0
- package/dist/eval-core/primitives/json-pointer.d.ts +12 -0
- package/dist/eval-core/primitives/json-pointer.js +31 -0
- package/dist/{eval-runtime/evaluation → eval-core/primitives}/ordering.d.ts +1 -0
- package/dist/eval-core/primitives/ordering.js +8 -0
- package/dist/eval-core/primitives/provenance.d.ts +11 -0
- package/dist/eval-core/primitives/provenance.js +19 -0
- package/dist/eval-core/runtime/abort.d.ts +2 -0
- package/dist/eval-core/runtime/abort.js +12 -0
- package/dist/eval-core/runtime/clock.d.ts +2 -0
- package/dist/eval-core/runtime/clock.js +4 -0
- package/dist/eval-core/runtime/event-stream.d.ts +1 -0
- package/dist/eval-core/runtime/event-stream.js +1 -0
- package/dist/eval-core/runtime/run-resources.d.ts +12 -0
- package/dist/eval-core/runtime/run-resources.js +39 -0
- package/dist/eval-core/schemas.js +2 -16
- package/dist/eval-core/series/runtime.js +21 -38
- package/dist/eval-core/verify/analysis-bundle.d.ts +13 -0
- package/dist/eval-core/verify/analysis-bundle.js +553 -0
- package/dist/eval-core/verify/comparability.d.ts +4 -0
- package/dist/eval-core/verify/comparability.js +804 -0
- package/dist/eval-core/verify/evaluation-bundle.d.ts +28 -0
- package/dist/eval-core/verify/evaluation-bundle.js +812 -0
- package/dist/eval-core/verify/evaluation-report.d.ts +18 -0
- package/dist/eval-core/verify/evaluation-report.js +201 -0
- package/dist/eval-core/verify/execution-bundle.d.ts +33 -0
- package/dist/eval-core/verify/execution-bundle.js +635 -0
- package/dist/eval-core/verify/index.d.ts +6 -0
- package/dist/eval-core/verify/index.js +6 -0
- package/dist/eval-core/verify/series.d.ts +24 -0
- package/dist/eval-core/verify/series.js +373 -0
- package/dist/eval-runtime/adapters/json-executor.d.ts +0 -1
- package/dist/eval-runtime/adapters/json-executor.js +88 -213
- package/dist/eval-runtime/adapters/resource-lease.d.ts +56 -0
- package/dist/eval-runtime/adapters/resource-lease.js +107 -0
- package/dist/eval-runtime/builders/paired-comparison.js +2 -2
- package/dist/eval-runtime/custom-evaluator.js +3 -2
- package/dist/eval-runtime/evaluation/capture-evaluators.js +3 -3
- package/dist/eval-runtime/evaluation/contracts.d.ts +1 -1
- package/dist/eval-runtime/evaluation/definition.js +1 -1
- package/dist/eval-runtime/evaluation/prepare.js +1 -1
- package/dist/eval-runtime/evaluation/result-state.d.ts +2 -2
- package/dist/eval-runtime/evaluation/result-state.js +1 -1
- package/dist/eval-runtime/evaluation/reuse.d.ts +2 -2
- package/dist/eval-runtime/evaluation/reuse.js +13 -8
- package/dist/eval-runtime/executed-store.d.ts +1 -1
- package/dist/eval-runtime/executed-store.js +3 -2
- package/dist/eval-runtime/execution-controls.js +1 -3
- package/dist/eval-runtime/judges/rubric-judge.js +2 -1
- package/dist/eval-runtime/judges/rubric-kit.js +2 -4
- package/dist/eval-runtime/mcp-config.js +2 -1
- package/dist/eval-runtime/mock-interception.js +2 -1
- package/dist/eval-runtime/provider.d.ts +2 -1
- package/dist/eval-runtime/provider.js +1 -1
- package/dist/eval-runtime/result-store.d.ts +1 -1
- package/dist/eval-runtime/result-store.js +4 -3
- package/dist/eval-runtime/series.js +2 -1
- package/dist/eval-runtime/tool-policy.js +1 -3
- package/dist/eval-runtime/traces/source-neutral.js +1 -1
- package/dist/eval-runtime/workspace.js +2 -1
- package/dist/eval-workflows/artifact-store/node-run-store.js +20 -15
- package/dist/eval-workflows/gold/human.js +1 -1
- package/dist/eval-workflows/hosts/adapters/anthropic/api.js +13 -7
- package/dist/eval-workflows/hosts/adapters/claude/cli.js +17 -15
- package/dist/eval-workflows/hosts/adapters/claude/resources.js +7 -10
- package/dist/eval-workflows/hosts/adapters/claude/sdk-runtime.js +6 -32
- package/dist/eval-workflows/hosts/adapters/claude/sdk.js +17 -15
- package/dist/eval-workflows/hosts/adapters/codex/cli.js +18 -21
- package/dist/eval-workflows/hosts/adapters/codex/resources.js +3 -2
- package/dist/eval-workflows/hosts/adapters/codex/sdk-runtime.js +6 -32
- package/dist/eval-workflows/hosts/adapters/codex/sdk.js +18 -21
- package/dist/eval-workflows/hosts/adapters/custom/executor.js +12 -22
- package/dist/eval-workflows/hosts/adapters/openai/api.js +13 -7
- package/dist/eval-workflows/hosts/adapters/shared/classified-environment.js +2 -1
- package/dist/eval-workflows/hosts/adapters/shared/content-identity.d.ts +12 -0
- package/dist/eval-workflows/hosts/adapters/shared/content-identity.js +38 -3
- package/dist/eval-workflows/hosts/adapters/shared/stateless-api-resources.js +3 -2
- package/dist/eval-workflows/hosts/adapters/shared/trial-lifecycle.d.ts +44 -0
- package/dist/eval-workflows/hosts/adapters/shared/trial-lifecycle.js +41 -0
- package/dist/eval-workflows/hosts/composition/assembly.js +1 -3
- package/dist/eval-workflows/hosts/composition/preflight.js +1 -3
- package/dist/eval-workflows/hosts/composition/runtime.d.ts +1 -1
- package/dist/eval-workflows/hosts/composition/runtime.js +3 -2
- package/dist/eval-workflows/hosts/input-resolution/content-materialization.d.ts +27 -0
- package/dist/eval-workflows/hosts/input-resolution/content-materialization.js +85 -0
- package/dist/eval-workflows/hosts/input-resolution/node-cli-evaluation-resolver.js +23 -82
- package/dist/eval-workflows/hosts/local-task/acceptance.d.ts +13 -0
- package/dist/eval-workflows/hosts/local-task/acceptance.js +101 -0
- package/dist/eval-workflows/hosts/local-task/application.d.ts +99 -0
- package/dist/eval-workflows/hosts/local-task/application.js +177 -0
- package/dist/eval-workflows/hosts/local-task/diagnostics.d.ts +27 -0
- package/dist/eval-workflows/hosts/local-task/diagnostics.js +30 -0
- package/dist/eval-workflows/hosts/local-task/executor.d.ts +19 -0
- package/dist/eval-workflows/hosts/local-task/executor.js +135 -0
- package/dist/eval-workflows/hosts/local-task/files.d.ts +15 -0
- package/dist/eval-workflows/hosts/local-task/files.js +88 -0
- package/dist/eval-workflows/hosts/local-task/workspace.d.ts +6 -0
- package/dist/eval-workflows/hosts/local-task/workspace.js +32 -0
- package/dist/eval-workflows/hosts/resource-leases/access.js +1 -3
- package/dist/eval-workflows/hosts/resource-leases/node.js +1 -3
- package/dist/eval-workflows/input-compilation/compile.js +1 -3
- package/dist/eval-workflows/inputs/contracts/config-schema.js +1 -1
- package/dist/eval-workflows/inputs/contracts/local-task-evidence.d.ts +46 -0
- package/dist/eval-workflows/inputs/contracts/local-task-evidence.js +26 -0
- package/dist/eval-workflows/inputs/contracts/local-task.d.ts +50 -0
- package/dist/eval-workflows/inputs/contracts/local-task.js +33 -0
- package/dist/eval-workflows/inputs/sample-contract.js +3 -10
- package/dist/eval-workflows/instruments/prompts/judge-prompts.js +4 -0
- package/dist/eval-workflows/measurement/analysis/agreement-source-pairs.js +3 -26
- package/dist/eval-workflows/measurement/analysis/agreement-table.js +1 -1
- package/dist/eval-workflows/measurement/analysis/analysis-support.d.ts +0 -1
- package/dist/eval-workflows/measurement/analysis/analysis-support.js +0 -3
- package/dist/eval-workflows/measurement/analysis/assertion-layer-node.js +2 -1
- package/dist/eval-workflows/measurement/analysis/assertion-layer-parameters.js +2 -1
- package/dist/eval-workflows/measurement/analysis/assertion-layer.js +2 -1
- package/dist/eval-workflows/measurement/analysis/bootstrap-family-parameters.js +3 -2
- package/dist/eval-workflows/measurement/analysis/bootstrap-family-table-v2.d.ts +1 -1
- package/dist/eval-workflows/measurement/analysis/bootstrap-family-table-v2.js +1 -1
- package/dist/eval-workflows/measurement/analysis/bootstrap-family-table.js +3 -2
- package/dist/eval-workflows/measurement/analysis/composite-node-contract.js +1 -1
- package/dist/eval-workflows/measurement/analysis/composite-table.js +2 -1
- package/dist/eval-workflows/measurement/analysis/dimension-node.js +2 -1
- package/dist/eval-workflows/measurement/analysis/dimension-parameters.js +2 -1
- package/dist/eval-workflows/measurement/analysis/dimension-table-v1.js +2 -1
- package/dist/eval-workflows/measurement/analysis/dimension-table.js +2 -1
- package/dist/eval-workflows/measurement/analysis/judge-aggregation.js +2 -1
- package/dist/eval-workflows/measurement/analysis/release-decision-parameters.js +2 -1
- package/dist/eval-workflows/measurement/analysis/release-decision.js +2 -1
- package/dist/eval-workflows/orchestration/evaluation-service.js +4 -4
- package/dist/eval-workflows/orchestration/measurement-design.js +8 -7
- package/dist/eval-workflows/orchestration/orchestration.d.ts +1 -1
- package/dist/eval-workflows/orchestration/orchestration.js +6 -1
- package/dist/eval-workflows/orchestration/sample-content-resolution.js +8 -11
- package/dist/eval-workflows/orchestration/workflow.d.ts +3 -3
- package/dist/eval-workflows/orchestration/workflow.js +5 -5
- package/dist/eval-workflows/projections/diagnostic.js +4 -6
- package/dist/eval-workflows/projections/evolution.js +2 -1
- package/dist/eval-workflows/projections/local-task.d.ts +23 -0
- package/dist/eval-workflows/projections/local-task.js +25 -0
- package/dist/eval-workflows/{resume-admission → resume-disposition}/contracts.d.ts +11 -11
- package/dist/eval-workflows/{resume-admission → resume-disposition}/contracts.js +3 -3
- package/dist/eval-workflows/resume-disposition/disposition.d.ts +8 -0
- package/dist/eval-workflows/{resume-admission/admit.js → resume-disposition/disposition.js} +25 -29
- package/dist/eval-workflows/resume-disposition/index.d.ts +2 -0
- package/dist/eval-workflows/resume-disposition/index.js +2 -0
- package/dist/eval-workflows/sample-generation/trace-drafts.d.ts +2 -2
- package/dist/eval-workflows/sample-generation/trace-drafts.js +3 -3
- package/dist/evidence/graph/doctor.js +3 -6
- package/dist/evidence/storage/discovery-index.js +6 -12
- package/dist/evidence/storage/file-names.d.ts +3 -0
- package/dist/evidence/storage/file-names.js +7 -2
- package/dist/evidence/storage/layout.d.ts +5 -0
- package/dist/evidence/storage/layout.js +4 -0
- package/dist/evidence/storage/report-bundle.js +4 -6
- package/dist/evidence/storage/user-settings.d.ts +1 -1
- package/dist/evidence/storage/user-settings.js +6 -2
- package/dist/executors/contracts/trace-source-schema.d.ts +1 -0
- package/dist/executors/contracts/trace-source-schema.js +1 -0
- package/dist/executors/contracts/trace.d.ts +9 -0
- package/dist/executors/core/tool-identity.d.ts +1 -9
- package/dist/executors/openai/codex/protocol.js +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/dist/knowledge/contracts.d.ts +6 -6
- package/dist/knowledge/history.js +1 -1
- package/dist/knowledge/store.d.ts +2 -2
- package/dist/knowledge/{admission.d.ts → validation.d.ts} +4 -4
- package/dist/knowledge/{admission.js → validation.js} +1 -1
- package/dist/mcp/capture-store.d.ts +2 -1
- package/dist/mcp/capture-store.js +6 -4
- package/dist/mcp/mcp-server.d.ts +4 -2
- package/dist/mcp/mcp-server.js +12 -28
- package/dist/mcp/review-component.d.ts +2 -1
- package/dist/mcp/review-component.js +5 -9
- package/dist/mcp/tool-copy.d.ts +18 -0
- package/dist/mcp/tool-copy.js +108 -0
- package/dist/observability/agents/collect.d.ts +105 -0
- package/dist/observability/agents/collect.js +686 -0
- package/dist/observability/agents/contracts.d.ts +369 -0
- package/dist/observability/agents/contracts.js +160 -0
- package/dist/observability/agents/detect.d.ts +39 -0
- package/dist/observability/agents/detect.js +144 -0
- package/dist/observability/agents/fs-ports.d.ts +44 -0
- package/dist/observability/agents/fs-ports.js +77 -0
- package/dist/observability/agents/index.d.ts +19 -0
- package/dist/observability/agents/index.js +13 -0
- package/dist/observability/agents/local-catalog.d.ts +40 -0
- package/dist/observability/agents/local-catalog.js +101 -0
- package/dist/observability/agents/registry.d.ts +31 -0
- package/dist/observability/agents/registry.js +187 -0
- package/dist/observability/agents/scan.d.ts +31 -0
- package/dist/observability/agents/scan.js +160 -0
- package/dist/observability/application.d.ts +18 -0
- package/dist/observability/application.js +12 -0
- package/dist/observability/contracts/experience-enums.d.ts +10 -9
- package/dist/observability/contracts/experience-enums.js +1 -0
- package/dist/observability/contracts/experience-evidence-schema.d.ts +3322 -2920
- package/dist/observability/contracts/experience-evidence-schema.js +4 -1
- package/dist/observability/experience/primitives.d.ts +3 -0
- package/dist/observability/experience/primitives.js +11 -0
- package/dist/observability/experience/report-assembly.d.ts +33 -0
- package/dist/observability/experience/report-assembly.js +808 -0
- package/dist/observability/experience/report-structure.d.ts +1 -1
- package/dist/observability/experience/session-story-episodes.d.ts +17 -0
- package/dist/observability/experience/session-story-episodes.js +242 -0
- package/dist/observability/experience/session-story-evidence.d.ts +11 -0
- package/dist/observability/experience/session-story-evidence.js +88 -0
- package/dist/observability/experience/session-story-feedback.d.ts +14 -0
- package/dist/observability/experience/session-story-feedback.js +330 -0
- package/dist/observability/experience/session-story-orchestration.d.ts +13 -0
- package/dist/observability/experience/session-story-orchestration.js +266 -0
- package/dist/observability/experience/session-story-segments.d.ts +8 -0
- package/dist/observability/experience/session-story-segments.js +128 -0
- package/dist/observability/experience/session-story.d.ts +4 -86
- package/dist/observability/experience/session-story.js +11 -1057
- package/dist/observability/experience/timeline.js +28 -2
- package/dist/observability/experience.d.ts +2 -31
- package/dist/observability/experience.js +2 -807
- package/dist/observability/inbox/explicit-capture.js +4 -4
- package/dist/observability/inbox/index.d.ts +10 -31
- package/dist/observability/inbox/index.js +6 -1260
- package/dist/observability/inbox/paths.d.ts +23 -3
- package/dist/observability/inbox/paths.js +31 -8
- package/dist/observability/inbox/report-building.d.ts +18 -0
- package/dist/observability/inbox/report-building.js +595 -0
- package/dist/observability/inbox/report-presentation.d.ts +6 -0
- package/dist/observability/inbox/report-presentation.js +83 -0
- package/dist/observability/inbox/report-primitives.d.ts +17 -0
- package/dist/observability/inbox/report-primitives.js +85 -0
- package/dist/observability/inbox/report-store.d.ts +7 -0
- package/dist/observability/inbox/report-store.js +516 -0
- package/dist/observability/inbox/review-state.d.ts +3 -3
- package/dist/observability/inbox/review-state.js +11 -6
- package/dist/observability/inbox/skill-chains.d.ts +20 -0
- package/dist/observability/inbox/skill-chains.js +65 -0
- package/dist/observability/inbox/source-record-archive.d.ts +1 -1
- package/dist/observability/inbox/view-model.d.ts +2 -2
- package/dist/observability/inbox/view-model.js +11 -8
- package/dist/observability/knowledge-extraction/adapters/{codex-evidence.d.ts → trace-evidence.d.ts} +4 -4
- package/dist/observability/knowledge-extraction/adapters/{codex-evidence.js → trace-evidence.js} +15 -15
- package/dist/observability/knowledge-extraction/application.d.ts +10 -10
- package/dist/observability/knowledge-extraction/evidence.d.ts +12 -2
- package/dist/observability/knowledge-extraction/evidence.js +5 -2
- package/dist/observability/knowledge-extraction/local.js +2 -2
- package/dist/observability/knowledge-extraction/proposals.d.ts +2 -2
- package/dist/observability/knowledge-extraction/proposals.js +1 -1
- package/dist/observability/knowledge-extraction/runs.d.ts +2 -2
- package/dist/observability/presentation.d.ts +8 -0
- package/dist/observability/presentation.js +5 -0
- package/dist/observability/soft-standards/llm-extractor.js +2 -1
- package/dist/observability/soft-standards/skill-standards-store.d.ts +1 -1
- package/dist/observability/soft-standards/types.d.ts +2 -1
- package/dist/observability/trace/adapters/claude/record-events.d.ts +4 -0
- package/dist/observability/trace/adapters/claude/record-events.js +297 -0
- package/dist/observability/trace/adapters/claude/record-schema.d.ts +60 -0
- package/dist/observability/trace/adapters/claude/record-schema.js +2 -0
- package/dist/observability/trace/adapters/claude/trace.d.ts +13 -0
- package/dist/observability/trace/adapters/claude/trace.js +48 -0
- package/dist/observability/trace/adapters/codex/context-events.d.ts +4 -0
- package/dist/observability/trace/adapters/codex/context-events.js +166 -0
- package/dist/observability/trace/adapters/codex/conversation-events.d.ts +4 -0
- package/dist/observability/trace/adapters/codex/conversation-events.js +143 -0
- package/dist/observability/trace/adapters/codex/conversion-contract.d.ts +66 -0
- package/dist/observability/trace/adapters/codex/conversion-contract.js +10 -0
- package/dist/observability/trace/adapters/codex/item-views.d.ts +81 -0
- package/dist/observability/trace/adapters/codex/item-views.js +303 -0
- package/dist/observability/trace/adapters/codex/pending-tool-events.d.ts +7 -0
- package/dist/observability/trace/adapters/codex/pending-tool-events.js +100 -0
- package/dist/observability/trace/adapters/codex/record-conversion.d.ts +14 -0
- package/dist/observability/trace/adapters/codex/record-conversion.js +167 -0
- package/dist/observability/trace/adapters/codex/record-fields.d.ts +13 -0
- package/dist/observability/trace/adapters/codex/record-fields.js +35 -0
- package/dist/observability/trace/adapters/codex/record-indexes.d.ts +75 -0
- package/dist/observability/trace/adapters/codex/record-indexes.js +309 -0
- package/dist/observability/trace/adapters/codex/record-text.d.ts +8 -0
- package/dist/observability/trace/adapters/codex/record-text.js +52 -0
- package/dist/observability/trace/adapters/codex/tool-event-factory.d.ts +16 -0
- package/dist/observability/trace/adapters/codex/tool-event-factory.js +20 -0
- package/dist/observability/trace/adapters/codex/tool-events.d.ts +4 -0
- package/dist/observability/trace/adapters/codex/tool-events.js +183 -0
- package/dist/observability/trace/adapters/codex/trace.d.ts +6 -2
- package/dist/observability/trace/adapters/codex/trace.js +45 -1013
- package/dist/observability/trace/adapters/codex/turn-events.d.ts +4 -0
- package/dist/observability/trace/adapters/codex/turn-events.js +126 -0
- package/dist/observability/trace/adapters/dsh/trace.d.ts +18 -0
- package/dist/observability/trace/adapters/dsh/trace.js +355 -0
- package/dist/observability/trace/adapters/jsonl-records.d.ts +6 -0
- package/dist/observability/trace/adapters/jsonl-records.js +67 -0
- package/dist/observability/trace/adapters/markdown/trace.d.ts +8 -0
- package/dist/observability/trace/adapters/markdown/trace.js +132 -0
- package/dist/observability/trace/adapters/openclaw/record-events.d.ts +10 -0
- package/dist/observability/trace/adapters/openclaw/record-events.js +192 -0
- package/dist/observability/trace/adapters/openclaw/trace.d.ts +9 -0
- package/dist/observability/trace/adapters/openclaw/trace.js +129 -0
- package/dist/observability/trace/adapters/qoder/trace.d.ts +8 -0
- package/dist/observability/trace/adapters/qoder/trace.js +477 -0
- package/dist/observability/trace/source.d.ts +54 -59
- package/dist/observability/trace/source.js +187 -794
- package/dist/observability/trace/streamed-records.d.ts +16 -0
- package/dist/observability/trace/streamed-records.js +228 -0
- package/dist/observability/trace/trace-ir.d.ts +56 -5
- package/dist/observability/trace/trace-ir.js +66 -0
- package/dist/observability/trace/unknown-disposition.d.ts +36 -0
- package/dist/observability/trace/unknown-disposition.js +233 -0
- package/dist/observability/trace/zstd-frames.d.ts +18 -0
- package/dist/observability/trace/zstd-frames.js +166 -0
- package/dist/observability/view-models/index.d.ts +4 -0
- package/dist/shared/content-hash.d.ts +5 -0
- package/dist/shared/content-hash.js +7 -0
- package/dist/shared/language-preference.d.ts +36 -0
- package/dist/shared/language-preference.js +48 -0
- package/dist/studio/application/agents/agents-view.d.ts +34 -0
- package/dist/studio/application/agents/agents-view.js +36 -0
- package/dist/studio/application/conversations/conversation-extraction.d.ts +3 -3
- package/dist/studio/application/conversations/conversation-extraction.js +3 -3
- package/dist/studio/application/conversations/conversation-reader.d.ts +1 -1
- package/dist/studio/application/conversations/list-states.d.ts +11 -0
- package/dist/studio/application/conversations/list-states.js +9 -0
- package/dist/studio/application/conversations/reader-states.d.ts +14 -0
- package/dist/studio/application/conversations/reader-states.js +17 -0
- package/dist/studio/application/conversations/reader-viewport.d.ts +36 -0
- package/dist/studio/application/conversations/reader-viewport.js +35 -0
- package/dist/studio/application/conversations/sidebar-window.d.ts +24 -0
- package/dist/studio/application/conversations/sidebar-window.js +26 -0
- package/dist/studio/application/directory-sources.d.ts +49 -0
- package/dist/studio/application/directory-sources.js +45 -0
- package/dist/studio/application/display/conversation-label.d.ts +13 -0
- package/dist/studio/application/display/conversation-label.js +17 -0
- package/dist/studio/application/display/format.d.ts +5 -0
- package/dist/studio/application/display/format.js +22 -0
- package/dist/studio/application/knowledge/candidate-status.d.ts +9 -0
- package/dist/studio/application/knowledge/candidate-status.js +19 -0
- package/dist/studio/application/knowledge/knowledge-candidates.d.ts +1 -2
- package/dist/studio/application/knowledge/knowledge-candidates.js +1 -2
- package/dist/studio/application/knowledge/knowledge-query.d.ts +6 -1
- package/dist/studio/application/knowledge/knowledge-query.js +3 -3
- package/dist/studio/application/knowledge/knowledge-reports.d.ts +1 -1
- package/dist/studio/application/knowledge/knowledge-reports.js +1 -2
- package/dist/studio/application/knowledge/skill-health.js +1 -1
- package/dist/studio/application/knowledge/skill-index.d.ts +4 -1
- package/dist/studio/application/knowledge/skill-index.js +12 -9
- package/dist/studio/application/knowledge/skill-insights.d.ts +1 -1
- package/dist/studio/application/knowledge/skill-insights.js +98 -33
- package/dist/studio/application/measure/core-run-format.js +2 -1
- package/dist/studio/application/measure/core-run-projection.js +12 -0
- package/dist/studio/application/observe/health-format.d.ts +1 -2
- package/dist/studio/application/observe/health-format.js +1 -1
- package/dist/studio/application/settings/settings.d.ts +2 -4
- package/dist/studio/application/settings/settings.js +3 -1
- package/dist/studio/http/contracts.d.ts +6 -1
- package/dist/studio/http/language.d.ts +10 -0
- package/dist/studio/http/language.js +18 -0
- package/dist/studio/http/next-context.d.ts +2 -0
- package/dist/studio/http/next-context.js +1 -0
- package/dist/studio/http/next-server.js +36 -40
- package/dist/studio/http/page-params.d.ts +32 -0
- package/dist/studio/http/page-params.js +32 -0
- package/dist/studio/http/page-paths.d.ts +36 -0
- package/dist/studio/http/page-paths.js +36 -0
- package/dist/studio/http/pages/agents-page.d.ts +12 -0
- package/dist/studio/http/pages/agents-page.js +13 -0
- package/dist/studio/http/pages/health-page.js +7 -10
- package/dist/studio/http/pages/inbox-page.d.ts +4 -2
- package/dist/studio/http/pages/inbox-page.js +6 -1
- package/dist/studio/http/pages/knowledge-page.d.ts +3 -0
- package/dist/studio/http/pages/knowledge-page.js +11 -3
- package/dist/studio/http/pages/managed-page.js +4 -5
- package/dist/studio/http/pages/measure-page.d.ts +3 -0
- package/dist/studio/http/pages/measure-page.js +10 -7
- package/dist/studio/http/pages/observe-page.d.ts +3 -1
- package/dist/studio/http/pages/observe-page.js +10 -3
- package/dist/studio/http/report-server.js +0 -1
- package/dist/studio/http/request-handler.d.ts +0 -1
- package/dist/studio/http/request-handler.js +5 -11
- package/dist/studio/http/routes/contracts.d.ts +3 -0
- package/dist/studio/http/routes/conversations.d.ts +1 -1
- package/dist/studio/http/routes/conversations.js +2 -1
- package/dist/studio/http/routes/knowledge-candidates.d.ts +1 -1
- package/dist/studio/http/routes/knowledge.js +2 -2
- package/dist/studio/http/routes/observations.d.ts +1 -1
- package/dist/studio/http/routes/observations.js +1 -3
- package/dist/studio/view-models/knowledge/insight.d.ts +6 -0
- package/dist/studio/view-models/knowledge/knowledge-candidates.d.ts +1 -2
- package/dist/studio/view-models/measure/core-runs.d.ts +32 -0
- package/dist/studio/view-models/settings/settings.d.ts +4 -1
- package/dist/studio/web/.next/BUILD_ID +1 -1
- package/dist/studio/web/.next/app-path-routes-manifest.json +5 -4
- package/dist/studio/web/.next/build-manifest.json +4 -4
- package/dist/studio/web/.next/prerender-manifest.json +4 -4
- package/dist/studio/web/.next/routes-manifest.json +6 -0
- package/dist/studio/web/.next/server/app/_global-error/page.js +1 -1
- package/dist/studio/web/.next/server/app/_global-error/page.js.nft.json +1 -1
- package/dist/studio/web/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
- package/dist/studio/web/.next/server/app/_global-error.html +1 -1
- package/dist/studio/web/.next/server/app/_global-error.rsc +4 -4
- package/dist/studio/web/.next/server/app/_global-error.segments/_full.segment.rsc +4 -4
- package/dist/studio/web/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +4 -4
- package/dist/studio/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/dist/studio/web/.next/server/app/_not-found/page.js +1 -1
- package/dist/studio/web/.next/server/app/_not-found/page.js.nft.json +1 -1
- package/dist/studio/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/dist/studio/web/.next/server/app/agents/page.js +1 -0
- package/dist/studio/web/.next/server/app/agents/page.js.nft.json +1 -0
- package/dist/studio/web/.next/server/app/agents/page_client-reference-manifest.js +1 -0
- package/dist/studio/web/.next/server/app/knowledge/candidates/page.js +1 -1
- package/dist/studio/web/.next/server/app/knowledge/candidates/page.js.nft.json +1 -1
- package/dist/studio/web/.next/server/app/knowledge/candidates/page_client-reference-manifest.js +1 -1
- package/dist/studio/web/.next/server/app/knowledge/managed/[managedId]/page.js +1 -1
- package/dist/studio/web/.next/server/app/knowledge/managed/[managedId]/page.js.nft.json +1 -1
- package/dist/studio/web/.next/server/app/knowledge/managed/[managedId]/page_client-reference-manifest.js +1 -1
- package/dist/studio/web/.next/server/app/knowledge/managed/page.js +1 -1
- package/dist/studio/web/.next/server/app/knowledge/managed/page.js.nft.json +1 -1
- package/dist/studio/web/.next/server/app/knowledge/managed/page_client-reference-manifest.js +1 -1
- package/dist/studio/web/.next/server/app/knowledge/page.js +1 -1
- package/dist/studio/web/.next/server/app/knowledge/page.js.nft.json +1 -1
- package/dist/studio/web/.next/server/app/knowledge/page_client-reference-manifest.js +1 -1
- package/dist/studio/web/.next/server/app/knowledge/skills/[skillName]/page.js +1 -1
- package/dist/studio/web/.next/server/app/knowledge/skills/[skillName]/page.js.nft.json +1 -1
- package/dist/studio/web/.next/server/app/knowledge/skills/[skillName]/page_client-reference-manifest.js +1 -1
- package/dist/studio/web/.next/server/app/measure/[runId]/page.js +1 -1
- package/dist/studio/web/.next/server/app/measure/[runId]/page.js.nft.json +1 -1
- package/dist/studio/web/.next/server/app/measure/[runId]/page_client-reference-manifest.js +1 -1
- package/dist/studio/web/.next/server/app/measure/page.js +1 -1
- package/dist/studio/web/.next/server/app/measure/page.js.nft.json +1 -1
- package/dist/studio/web/.next/server/app/measure/page_client-reference-manifest.js +1 -1
- package/dist/studio/web/.next/server/app/observe/conversations/[threadId]/page.js +1 -1
- package/dist/studio/web/.next/server/app/observe/conversations/[threadId]/page.js.nft.json +1 -1
- package/dist/studio/web/.next/server/app/observe/conversations/[threadId]/page_client-reference-manifest.js +1 -1
- package/dist/studio/web/.next/server/app/observe/conversations/[threadId]/tasks/[turnId]/page.js +1 -1
- package/dist/studio/web/.next/server/app/observe/conversations/[threadId]/tasks/[turnId]/page.js.nft.json +1 -1
- package/dist/studio/web/.next/server/app/observe/conversations/[threadId]/tasks/[turnId]/page_client-reference-manifest.js +1 -1
- package/dist/studio/web/.next/server/app/observe/health/[analysisId]/page.js +1 -1
- package/dist/studio/web/.next/server/app/observe/health/[analysisId]/page.js.nft.json +1 -1
- package/dist/studio/web/.next/server/app/observe/health/[analysisId]/page_client-reference-manifest.js +1 -1
- package/dist/studio/web/.next/server/app/observe/health/page.js +1 -1
- package/dist/studio/web/.next/server/app/observe/health/page.js.nft.json +1 -1
- package/dist/studio/web/.next/server/app/observe/health/page_client-reference-manifest.js +1 -1
- package/dist/studio/web/.next/server/app/observe/health-diff/page.js +1 -1
- package/dist/studio/web/.next/server/app/observe/health-diff/page.js.nft.json +1 -1
- package/dist/studio/web/.next/server/app/observe/health-diff/page_client-reference-manifest.js +1 -1
- package/dist/studio/web/.next/server/app/observe/inbox/page.js +8 -8
- package/dist/studio/web/.next/server/app/observe/inbox/page.js.nft.json +1 -1
- package/dist/studio/web/.next/server/app/observe/inbox/page_client-reference-manifest.js +1 -1
- package/dist/studio/web/.next/server/app/observe/page.js +1 -1
- package/dist/studio/web/.next/server/app/observe/page.js.nft.json +1 -1
- package/dist/studio/web/.next/server/app/observe/page_client-reference-manifest.js +1 -1
- package/dist/studio/web/.next/server/app/observe/skill-trend/[skillName]/page.js +1 -1
- package/dist/studio/web/.next/server/app/observe/skill-trend/[skillName]/page.js.nft.json +1 -1
- package/dist/studio/web/.next/server/app/observe/skill-trend/[skillName]/page_client-reference-manifest.js +1 -1
- package/dist/studio/web/.next/server/app-paths-manifest.json +5 -4
- package/dist/studio/web/.next/server/chunks/3.js +1 -1
- package/dist/studio/web/.next/server/chunks/335.js +1 -1
- package/dist/studio/web/.next/server/chunks/374.js +1 -1
- package/dist/studio/web/.next/server/chunks/475.js +1 -1
- package/dist/studio/web/.next/server/chunks/499.js +1 -1
- package/dist/studio/web/.next/server/chunks/5.js +1 -0
- package/dist/studio/web/.next/server/chunks/740.js +3 -0
- package/dist/studio/web/.next/server/chunks/789.js +6 -0
- package/dist/studio/web/.next/server/chunks/{190.js → 827.js} +12 -12
- package/dist/studio/web/.next/server/chunks/84.js +2 -2
- package/dist/studio/web/.next/server/chunks/955.js +1 -1
- package/dist/studio/web/.next/server/chunks/996.js +1 -1
- package/dist/studio/web/.next/server/middleware-build-manifest.js +1 -1
- package/dist/studio/web/.next/server/pages/500.html +1 -1
- package/dist/studio/web/.next/server/server-reference-manifest.json +1 -1
- package/dist/studio/web/.next/server/webpack-runtime.js +1 -1
- package/dist/studio/web/.next/static/Ahppnr7sbzLwhsw77RqCy/_buildManifest.js +1 -0
- package/dist/studio/web/.next/static/chunks/{1858-53aecb176156ec2f.js → 1858-3ad7971aef7540de.js} +1 -1
- package/dist/studio/web/.next/static/chunks/2038-b941bab2ee1ef91a.js +1 -0
- package/dist/studio/web/.next/static/chunks/2666-022e0893a8ce80b1.js +4 -0
- package/dist/studio/web/.next/static/chunks/{7086-b6d6e13ce6f28429.js → 285-ee2bde496eae900b.js} +12 -12
- package/dist/studio/web/.next/static/chunks/{2953-5840070bcce6a075.js → 2953-32389c228338c03f.js} +1 -1
- package/dist/studio/web/.next/static/chunks/3958-b95d9b60fc7f9eaf.js +1 -0
- package/dist/studio/web/.next/static/chunks/4684-62296d31718b47b2.js +1 -0
- package/dist/studio/web/.next/static/chunks/5067-75d71f6808309f44.js +6 -0
- package/dist/studio/web/.next/static/chunks/5669-9f0ec3bc92ab3392.js +3 -0
- package/dist/studio/web/.next/static/chunks/5834-ceadd3ef88dd5027.js +1 -0
- package/dist/studio/web/.next/static/chunks/{6651-cad53455cca8c430.js → 6651-392fd48cf473d253.js} +2 -2
- package/dist/studio/web/.next/static/chunks/6698-fe3dadb4c5aa013d.js +9 -0
- package/dist/studio/web/.next/static/chunks/{7576-af77927e85dd21cd.js → 7576-0651db5aa8473f62.js} +4 -4
- package/dist/studio/web/.next/static/chunks/8284-399476b82eb468d0.js +1 -0
- package/dist/studio/web/.next/static/chunks/{8791-628c2e7b0dab299a.js → 8791-cc9640eb97b0ac98.js} +1 -1
- package/dist/studio/web/.next/static/chunks/9688-8fc2ea8f15ab0642.js +1 -0
- package/dist/studio/web/.next/static/chunks/app/agents/page-5566ed76365fc033.js +1 -0
- package/dist/studio/web/.next/static/chunks/app/{error-f4e4f5c25ab4ea68.js → error-da3a9e3657f1dc15.js} +1 -1
- package/dist/studio/web/.next/static/chunks/app/knowledge/candidates/page-8f6377569b01b64e.js +1 -0
- package/dist/studio/web/.next/static/chunks/app/knowledge/managed/[managedId]/page-e8aa43310b5ab528.js +1 -0
- package/dist/studio/web/.next/static/chunks/app/knowledge/managed/page-cbae9028d8b57dcf.js +1 -0
- package/dist/studio/web/.next/static/chunks/app/knowledge/page-92a6b1ddc3e44d8b.js +1 -0
- package/dist/studio/web/.next/static/chunks/app/knowledge/skills/[skillName]/page-082ada30d2554c7e.js +1 -0
- package/dist/studio/web/.next/static/chunks/app/layout-872f1dfcd7ede526.js +1 -0
- package/dist/studio/web/.next/static/chunks/app/{loading-6897e47422bee0f6.js → loading-459503db9bf76ee0.js} +1 -1
- package/dist/studio/web/.next/static/chunks/app/measure/[runId]/page-1b6e584362fa1fc7.js +1 -0
- package/dist/studio/web/.next/static/chunks/app/measure/page-94c52f9a44a8b88e.js +1 -0
- package/dist/studio/web/.next/static/chunks/app/not-found-5b86ee2b9fd19a95.js +1 -0
- package/dist/studio/web/.next/static/chunks/app/observe/conversations/[threadId]/page-327796657a0b2692.js +1 -0
- package/dist/studio/web/.next/static/chunks/app/observe/conversations/[threadId]/tasks/[turnId]/page-1c806e81831e69b9.js +1 -0
- package/dist/studio/web/.next/static/chunks/app/observe/health/[analysisId]/page-41dd612e29247f6f.js +1 -0
- package/dist/studio/web/.next/static/chunks/app/observe/health/page-66161c7025058683.js +1 -0
- package/dist/studio/web/.next/static/chunks/app/observe/health-diff/page-373e7ca6f18a4594.js +1 -0
- package/dist/studio/web/.next/static/chunks/app/observe/inbox/page-923860677b6af0ad.js +1 -0
- package/dist/studio/web/.next/static/chunks/app/observe/page-ff04bfbae9e9c409.js +1 -0
- package/dist/studio/web/.next/static/chunks/app/observe/skill-trend/[skillName]/page-4711e930a7c6a790.js +1 -0
- package/dist/studio/web/.next/static/chunks/{main-c86d24af6df62a67.js → main-be4276342bf776ea.js} +1 -1
- package/dist/studio/web/.next/static/chunks/webpack-ac24233801701b11.js +1 -0
- package/dist/studio/web/.next/static/css/bc117f6d956d35b6.css +1 -0
- package/dist/studio/web/.next/trace +47 -41
- package/dist/studio/web/.next/trace-build +1 -1
- package/package.json +8 -6
- package/dist/eval-runtime/evaluation/ordering.js +0 -3
- package/dist/eval-workflows/resume-admission/admit.d.ts +0 -8
- package/dist/eval-workflows/resume-admission/index.d.ts +0 -2
- package/dist/eval-workflows/resume-admission/index.js +0 -2
- package/dist/studio/web/.next/server/chunks/121.js +0 -1
- package/dist/studio/web/.next/server/chunks/286.js +0 -1
- package/dist/studio/web/.next/server/chunks/767.js +0 -6
- package/dist/studio/web/.next/server/chunks/864.js +0 -1
- package/dist/studio/web/.next/static/chunks/2038-ed7f68a7ae5147e7.js +0 -1
- package/dist/studio/web/.next/static/chunks/4684-a0ed05ac9d8ab616.js +0 -1
- package/dist/studio/web/.next/static/chunks/5834-509bc646670d19f0.js +0 -1
- package/dist/studio/web/.next/static/chunks/6250-52fb4cf774039f4d.js +0 -1
- package/dist/studio/web/.next/static/chunks/7754-d2d1b4242648f987.js +0 -4
- package/dist/studio/web/.next/static/chunks/8202-d22828e45db31cd7.js +0 -1
- package/dist/studio/web/.next/static/chunks/8284-56793a0da5776212.js +0 -1
- package/dist/studio/web/.next/static/chunks/8342-af342dbe9c2f0bfa.js +0 -6
- package/dist/studio/web/.next/static/chunks/8448-2a7aaa0bc1e3af89.js +0 -1
- package/dist/studio/web/.next/static/chunks/9688-568cb3f8978b37e8.js +0 -1
- package/dist/studio/web/.next/static/chunks/9978-2b5578a391a0f389.js +0 -9
- package/dist/studio/web/.next/static/chunks/app/knowledge/candidates/page-fe0361724325f726.js +0 -1
- package/dist/studio/web/.next/static/chunks/app/knowledge/managed/[managedId]/page-587bb53c0988665e.js +0 -1
- package/dist/studio/web/.next/static/chunks/app/knowledge/managed/page-f73e3830d520a4ea.js +0 -1
- package/dist/studio/web/.next/static/chunks/app/knowledge/page-0f6f64c058be91bf.js +0 -1
- package/dist/studio/web/.next/static/chunks/app/knowledge/skills/[skillName]/page-9e044c9d1e32d815.js +0 -1
- package/dist/studio/web/.next/static/chunks/app/layout-457e2c191c2308c1.js +0 -1
- package/dist/studio/web/.next/static/chunks/app/measure/[runId]/page-e065af1890b883a6.js +0 -1
- package/dist/studio/web/.next/static/chunks/app/measure/page-5dbcaa3fc0f36148.js +0 -1
- package/dist/studio/web/.next/static/chunks/app/not-found-23ff9fbd04f66261.js +0 -1
- package/dist/studio/web/.next/static/chunks/app/observe/conversations/[threadId]/page-b0175ec26507705d.js +0 -1
- package/dist/studio/web/.next/static/chunks/app/observe/conversations/[threadId]/tasks/[turnId]/page-79ae079fccc7f06a.js +0 -1
- package/dist/studio/web/.next/static/chunks/app/observe/health/[analysisId]/page-7ade4dd62ed66ece.js +0 -1
- package/dist/studio/web/.next/static/chunks/app/observe/health/page-59f723ecc9f7e5a3.js +0 -1
- package/dist/studio/web/.next/static/chunks/app/observe/health-diff/page-a04d6bbda0bb1945.js +0 -1
- package/dist/studio/web/.next/static/chunks/app/observe/inbox/page-48d0fb8be0af3319.js +0 -1
- package/dist/studio/web/.next/static/chunks/app/observe/page-22a89d134108381c.js +0 -1
- package/dist/studio/web/.next/static/chunks/app/observe/skill-trend/[skillName]/page-899dcb452d814b80.js +0 -1
- package/dist/studio/web/.next/static/chunks/webpack-040077c7c5b63775.js +0 -1
- package/dist/studio/web/.next/static/css/4a9c7da63c369015.css +0 -1
- package/dist/studio/web/.next/static/hccv6HVNJDzgZgMSLell8/_buildManifest.js +0 -1
- /package/dist/studio/web/.next/static/{hccv6HVNJDzgZgMSLell8 → Ahppnr7sbzLwhsw77RqCy}/_ssgManifest.js +0 -0
|
@@ -0,0 +1,216 @@
|
|
|
1
|
+
import { existsSync, statSync } from 'node:fs';
|
|
2
|
+
import { resolve } from 'node:path';
|
|
3
|
+
import { Args, Flags } from '@oclif/core';
|
|
4
|
+
import { BaseCommand } from '../oclif/base-command.js';
|
|
5
|
+
import { LANG_FLAG, bilingual } from '../oclif/i18n.js';
|
|
6
|
+
import { shellQuoteArg } from '../../shared/shell-quote.js';
|
|
7
|
+
import { UserSettingsStore } from '../../evidence/storage/user-settings.js';
|
|
8
|
+
import { globalLayout } from '../../evidence/storage/layout.js';
|
|
9
|
+
const description = (zh, en) => bilingual({ zh, en });
|
|
10
|
+
function formatEntryLine(entry, lang) {
|
|
11
|
+
const roots = entry.logRoots.map((root) => {
|
|
12
|
+
const suffix = lang === 'zh'
|
|
13
|
+
? `${root.traceSourceKind}:发现 ${root.discoveredCount} · 新增 ${root.collectedCount} · 跳过 ${root.skippedCount}`
|
|
14
|
+
: `${root.traceSourceKind}: ${root.discoveredCount} found · ${root.collectedCount} new · ${root.skippedCount} skipped`;
|
|
15
|
+
return root.failedCount > 0 ? `${suffix}${lang === 'zh' ? ` · 失败 ${root.failedCount}` : ` · ${root.failedCount} failed`}` : suffix;
|
|
16
|
+
}).join(' / ');
|
|
17
|
+
return lang === 'zh'
|
|
18
|
+
? ` ${entry.displayName}:${entry.logRoots.length} 个日志根 · ${roots}`
|
|
19
|
+
: ` ${entry.displayName}: ${entry.logRoots.length} log roots · ${roots}`;
|
|
20
|
+
}
|
|
21
|
+
export default class AgentsCommand extends BaseCommand {
|
|
22
|
+
static description = description('识别本机已安装的 Agent,采集其日志并映射成统一格式,再提炼候选知识。', 'Detect installed agents, collect their logs into the unified trace format, and extract candidate knowledge.');
|
|
23
|
+
static args = {
|
|
24
|
+
operation: Args.string({
|
|
25
|
+
required: true,
|
|
26
|
+
options: ['list', 'collect', 'extract'],
|
|
27
|
+
description: description('操作:list 识别安装情况,collect 采集日志并映射成统一 Trace IR,extract 从已采集日志提炼候选知识。', 'list: inspect installs. collect: gather logs into normalized Trace IR. extract: draft candidate knowledge from collected logs.'),
|
|
28
|
+
}),
|
|
29
|
+
};
|
|
30
|
+
static flags = {
|
|
31
|
+
lang: LANG_FLAG,
|
|
32
|
+
dir: Flags.string({
|
|
33
|
+
description: description('清单与采集产物目录,默认全局 ~/.oh-my-knowledge/observe/agents。', 'Inventory and collection dir; defaults to the global ~/.oh-my-knowledge/observe/agents.'),
|
|
34
|
+
}),
|
|
35
|
+
limit: Flags.integer({
|
|
36
|
+
min: 1,
|
|
37
|
+
description: description('collect 单轮处理的会话文件上限。', 'Per-run session file cap for collect.'),
|
|
38
|
+
}),
|
|
39
|
+
session: Flags.string({
|
|
40
|
+
description: description('extract:采集报告里的 runId。', 'extract: a runId from the collection report.'),
|
|
41
|
+
}),
|
|
42
|
+
knowledge: Flags.string({
|
|
43
|
+
description: description('extract:知识工作区,默认全局知识目录。', 'extract: knowledge workspace; defaults to the global knowledge dir.'),
|
|
44
|
+
}),
|
|
45
|
+
executor: Flags.string({
|
|
46
|
+
description: description('extract:生成执行器,沿用 OMK 运行配置。', 'extract: generation executor, using OMK runtime configuration.'),
|
|
47
|
+
}),
|
|
48
|
+
model: Flags.string({
|
|
49
|
+
description: description('extract:生成模型,沿用已配置模型。', 'extract: generation model, using the configured model.'),
|
|
50
|
+
}),
|
|
51
|
+
json: Flags.boolean({
|
|
52
|
+
default: false,
|
|
53
|
+
description: description('输出完整 JSON;默认输出可读摘要。', 'Print complete JSON instead of a readable summary.'),
|
|
54
|
+
}),
|
|
55
|
+
};
|
|
56
|
+
static examples = [
|
|
57
|
+
'<%= config.bin %> agents list',
|
|
58
|
+
'<%= config.bin %> agents collect --limit 50',
|
|
59
|
+
'<%= config.bin %> agents extract --session <runId> --executor codex --model <model>',
|
|
60
|
+
];
|
|
61
|
+
async run() {
|
|
62
|
+
const { args, flags } = await this.parse(AgentsCommand);
|
|
63
|
+
const lang = this.lang;
|
|
64
|
+
const { agentStorageLayout: layoutOf, AgentCollectionReportOutdatedError, collectAgentLogs, detectAgentInventory, loadAgentCollectionReport, LocalAgentCatalogError, resolveAgentCatalog, saveAgentCollectionReport, saveAgentInventoryReport, } = await import('../../observability/agents/index.js');
|
|
65
|
+
const layout = layoutOf(flags.dir ?? globalLayout().observeAgentsDir);
|
|
66
|
+
// 登记表是内置表与本机扩展文件的合并结果;扩展文件读不动时按业务失败处理,
|
|
67
|
+
// 因为拿半份表探测会让清单静默少一个宿主,比直接报错更难发现。
|
|
68
|
+
const readCatalog = () => {
|
|
69
|
+
try {
|
|
70
|
+
return resolveAgentCatalog();
|
|
71
|
+
}
|
|
72
|
+
catch (cause) {
|
|
73
|
+
if (cause instanceof LocalAgentCatalogError) {
|
|
74
|
+
this.error(lang === 'zh'
|
|
75
|
+
? `本机 Agent 登记表扩展不可用:${cause.message}`
|
|
76
|
+
: `Local agent catalog extension is unusable: ${cause.message}`, { exit: 1 });
|
|
77
|
+
}
|
|
78
|
+
throw cause;
|
|
79
|
+
}
|
|
80
|
+
};
|
|
81
|
+
await this.runWithCancellation(async (signal) => {
|
|
82
|
+
if (args.operation === 'list') {
|
|
83
|
+
const report = detectAgentInventory({ descriptors: readCatalog() });
|
|
84
|
+
const written = saveAgentInventoryReport(report, layout);
|
|
85
|
+
if (flags.json) {
|
|
86
|
+
this.log(JSON.stringify(report, null, 2));
|
|
87
|
+
}
|
|
88
|
+
else {
|
|
89
|
+
for (const agent of report.agents.filter((entry) => entry.installed)) {
|
|
90
|
+
this.log(`${agent.displayName} (${agent.agentId}) · ${agent.traceSourceKind ?? 'unknown'} · ${agent.sessionFileCount}`);
|
|
91
|
+
for (const root of agent.logRoots.filter((entry) => entry.exists)) {
|
|
92
|
+
this.log(lang === 'zh'
|
|
93
|
+
? ` ${root.path}:${root.sessionFileCount} 份${root.truncated ? '(已截断)' : ''}${root.readable ? '' : '(不可读)'}${root.unreadableReason ? '(本机运行时解不了这格式)' : ''}`
|
|
94
|
+
: ` ${root.path}: ${root.sessionFileCount}${root.truncated ? ' (truncated)' : ''}${root.readable ? '' : ' (unreadable)'}${root.unreadableReason ? ' (this runtime cannot read the format)' : ''}`);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
this.log(lang === 'zh'
|
|
98
|
+
? `已识别 ${report.summary.installedAgentCount}/${report.summary.knownAgentCount} 个 Agent · 会话日志 ${report.summary.sessionFileCount} 份`
|
|
99
|
+
: `${report.summary.installedAgentCount}/${report.summary.knownAgentCount} agents detected · ${report.summary.sessionFileCount} session logs`);
|
|
100
|
+
}
|
|
101
|
+
for (const agent of report.agents.filter((entry) => entry.installed)) {
|
|
102
|
+
// 「装了但本机读不了这格式」与「装了且没有日志」是两件事:前者要换运行时,
|
|
103
|
+
// 后者要等用户真的产生会话,混成一句会让人白跑一边排查。
|
|
104
|
+
if (agent.logRoots.some((root) => root.unreadableReason !== undefined)) {
|
|
105
|
+
this.logToStderr(lang === 'zh'
|
|
106
|
+
? `${agent.displayName} 已安装并发现了会话文件,但本机 Node 运行时没有内建 zstd 解压,读不了 .jsonl.zstd 会话。`
|
|
107
|
+
: `${agent.displayName} is installed and session files were found, but this Node runtime has no built-in zstd decompression, so .jsonl.zstd sessions cannot be read.`);
|
|
108
|
+
continue;
|
|
109
|
+
}
|
|
110
|
+
if (agent.sessionFileCount > 0)
|
|
111
|
+
continue;
|
|
112
|
+
this.logToStderr(lang === 'zh'
|
|
113
|
+
? `${agent.displayName} 已安装,但没有找到可读的会话日志。`
|
|
114
|
+
: `${agent.displayName} is installed but has no readable session logs.`);
|
|
115
|
+
}
|
|
116
|
+
this.logToStderr(lang === 'zh' ? `清单已写入:${written}` : `Inventory written to: ${written}`);
|
|
117
|
+
return;
|
|
118
|
+
}
|
|
119
|
+
if (args.operation === 'collect') {
|
|
120
|
+
const report = collectAgentLogs(undefined, {
|
|
121
|
+
layout,
|
|
122
|
+
detect: { descriptors: readCatalog() },
|
|
123
|
+
...(flags.limit === undefined ? {} : { limits: { maxFilesPerRun: flags.limit } }),
|
|
124
|
+
});
|
|
125
|
+
const written = saveAgentCollectionReport(report, layout);
|
|
126
|
+
if (flags.json) {
|
|
127
|
+
this.log(JSON.stringify(report, null, 2));
|
|
128
|
+
}
|
|
129
|
+
else {
|
|
130
|
+
for (const entry of report.agents) {
|
|
131
|
+
this.log(formatEntryLine(entry, lang));
|
|
132
|
+
}
|
|
133
|
+
this.log(lang === 'zh'
|
|
134
|
+
? `采集:发现 ${report.summary.discoveredCount} · 新增 ${report.summary.collectedCount} · 跳过 ${report.summary.skippedCount} · 失败 ${report.summary.failedCount} · 事件 ${report.summary.eventCount}(未支持格式 ${report.summary.unknownEventCount} · 重复视图 ${report.summary.duplicateViewCount} · 待映射证据 ${report.summary.unmappedEvidenceCount})`
|
|
135
|
+
: `Collected: ${report.summary.discoveredCount} found · ${report.summary.collectedCount} new · ${report.summary.skippedCount} skipped · ${report.summary.failedCount} failed · ${report.summary.eventCount} events (${report.summary.unknownEventCount} unsupported format · ${report.summary.duplicateViewCount} duplicate views · ${report.summary.unmappedEvidenceCount} unmapped evidence)`);
|
|
136
|
+
}
|
|
137
|
+
for (const limitation of report.limitations) {
|
|
138
|
+
this.logToStderr(lang === 'zh' ? `限制:${limitation}` : `Limitation: ${limitation}`);
|
|
139
|
+
}
|
|
140
|
+
this.logToStderr(lang === 'zh' ? `采集报告已写入:${written}` : `Collection report written to: ${written}`);
|
|
141
|
+
const sample = report.sessions[0]?.runId ?? '<runId>';
|
|
142
|
+
this.logToStderr(lang === 'zh'
|
|
143
|
+
? `下一步:omk agents extract --session ${shellQuoteArg(sample)}\n在 Studio 的 Agents 页查看:omk studio`
|
|
144
|
+
: `Next: omk agents extract --session ${shellQuoteArg(sample)}\nTo review it in Studio: omk studio`);
|
|
145
|
+
return;
|
|
146
|
+
}
|
|
147
|
+
const runId = flags.session;
|
|
148
|
+
if (!runId?.trim()) {
|
|
149
|
+
this.error(`--session ${lang === 'zh' ? '不能为空' : 'is required'}`, { exit: 2 });
|
|
150
|
+
}
|
|
151
|
+
let collection;
|
|
152
|
+
try {
|
|
153
|
+
collection = loadAgentCollectionReport(layout.observeAgentsDir);
|
|
154
|
+
}
|
|
155
|
+
catch (cause) {
|
|
156
|
+
if (cause instanceof AgentCollectionReportOutdatedError) {
|
|
157
|
+
this.error(lang === 'zh'
|
|
158
|
+
? `采集报告是 ${cause.foundVersion} 口径,未识别事件的分桶计数无法沿用。先运行 omk agents collect 重新采集。`
|
|
159
|
+
: `The collection report uses the superseded ${cause.foundVersion} scheme, whose unrecognized-event buckets cannot be carried over. Run omk agents collect to recollect.`, { exit: 1 });
|
|
160
|
+
}
|
|
161
|
+
throw cause;
|
|
162
|
+
}
|
|
163
|
+
if (!collection) {
|
|
164
|
+
this.error(lang === 'zh'
|
|
165
|
+
? '还没有采集报告,先运行 omk agents collect。'
|
|
166
|
+
: 'No collection report yet; run omk agents collect first.', { exit: 1 });
|
|
167
|
+
}
|
|
168
|
+
const session = collection.sessions.find((entry) => entry.runId === runId);
|
|
169
|
+
if (!session) {
|
|
170
|
+
this.error(lang === 'zh'
|
|
171
|
+
? `采集报告里没有会话 ${runId}。`
|
|
172
|
+
: `Session ${runId} is not in the collection report.`, { exit: 1 });
|
|
173
|
+
}
|
|
174
|
+
if (!existsSync(session.sourcePath) || !statSync(session.sourcePath).isFile()) {
|
|
175
|
+
this.error(lang === 'zh'
|
|
176
|
+
? `原始日志已不可读:${session.sourcePath}`
|
|
177
|
+
: `Source log is no longer readable: ${session.sourcePath}`, { exit: 1 });
|
|
178
|
+
}
|
|
179
|
+
const settings = new UserSettingsStore().resolve({
|
|
180
|
+
workspace: flags.knowledge ? resolve(flags.knowledge) : globalLayout().knowledgeDir,
|
|
181
|
+
executor: flags.executor,
|
|
182
|
+
model: flags.model,
|
|
183
|
+
});
|
|
184
|
+
const { createLocalKnowledgeApplication } = await import('../../observability/knowledge-extraction/local.js');
|
|
185
|
+
const { configuredExtractionModel } = await import('../../observability/knowledge-extraction/adapters/executor.js');
|
|
186
|
+
const app = createLocalKnowledgeApplication(settings.workspace);
|
|
187
|
+
this.logToStderr(lang === 'zh'
|
|
188
|
+
? `${session.agentId} / ${session.sourceKind} · 仅发送选定来源片段;费用以执行器实际报告为准。`
|
|
189
|
+
: `${session.agentId} / ${session.sourceKind} · Only selected excerpts are sent; cost depends on executor reporting.`);
|
|
190
|
+
const captured = app.capture({
|
|
191
|
+
path: session.sourcePath,
|
|
192
|
+
...(session.title ? { origin: { threadId: session.runId, title: session.title } } : {}),
|
|
193
|
+
}, signal);
|
|
194
|
+
if (!settings.model) {
|
|
195
|
+
this.error(lang === 'zh'
|
|
196
|
+
? '缺少生成模型,请用 --model 指定。'
|
|
197
|
+
: 'No generation model; pass --model.', { exit: 2 });
|
|
198
|
+
}
|
|
199
|
+
const run = await app.generate(captured.snapshotId, configuredExtractionModel(settings.executor, settings.model), undefined, signal);
|
|
200
|
+
if (flags.json) {
|
|
201
|
+
this.log(JSON.stringify({ session, snapshot: captured, run }, null, 2));
|
|
202
|
+
return;
|
|
203
|
+
}
|
|
204
|
+
this.log(lang === 'zh'
|
|
205
|
+
? `提炼完成:${run.committed.length} 条候选知识(来源格式 ${captured.sourceKind},快照 ${captured.snapshotId})`
|
|
206
|
+
: `Extracted ${run.committed.length} candidate(s) from ${captured.sourceKind} (snapshot ${captured.snapshotId}).`);
|
|
207
|
+
for (const committed of run.committed) {
|
|
208
|
+
const detail = app.detail(committed.knowledgeId, committed.revisionId);
|
|
209
|
+
this.log(`- ${detail.revision.title} · ${detail.revision.entities.length} 个实体 · ${committed.knowledgeId}`);
|
|
210
|
+
}
|
|
211
|
+
this.logToStderr(lang === 'zh'
|
|
212
|
+
? `下一步:omk observe knowledge list --workspace ${shellQuoteArg(settings.workspace)}`
|
|
213
|
+
: `Next: omk observe knowledge list --workspace ${shellQuoteArg(settings.workspace)}`);
|
|
214
|
+
});
|
|
215
|
+
}
|
|
216
|
+
}
|
|
@@ -9,7 +9,7 @@ export default class Doctor extends BaseCommand {
|
|
|
9
9
|
target: import("@oclif/core/interfaces").Arg<string | undefined, Record<string, unknown>>;
|
|
10
10
|
};
|
|
11
11
|
static flags: {
|
|
12
|
-
lang: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
|
|
12
|
+
lang: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
13
13
|
json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
14
14
|
gate: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
15
15
|
executor: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
@@ -5,7 +5,7 @@ export default class EvalGoldCompare extends BaseCommand {
|
|
|
5
5
|
runId: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
|
|
6
6
|
};
|
|
7
7
|
static flags: {
|
|
8
|
-
lang: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
|
|
8
|
+
lang: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
9
9
|
'gold-dir': import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
|
|
10
10
|
target: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
|
|
11
11
|
evaluator: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
|
|
@@ -2,7 +2,7 @@ import { BaseCommand } from '../../../oclif/base-command.js';
|
|
|
2
2
|
export default class EvalGold extends BaseCommand {
|
|
3
3
|
static description: string;
|
|
4
4
|
static flags: {
|
|
5
|
-
lang: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
|
|
5
|
+
lang: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
6
6
|
};
|
|
7
7
|
run(): Promise<void>;
|
|
8
8
|
}
|
|
@@ -2,7 +2,7 @@ import { BaseCommand } from '../../../oclif/base-command.js';
|
|
|
2
2
|
export default class EvalGoldInit extends BaseCommand {
|
|
3
3
|
static description: string;
|
|
4
4
|
static flags: {
|
|
5
|
-
lang: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
|
|
5
|
+
lang: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
6
6
|
out: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
|
|
7
7
|
annotator: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
8
8
|
};
|
|
@@ -5,7 +5,7 @@ export default class EvalGoldValidate extends BaseCommand {
|
|
|
5
5
|
dir: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
|
|
6
6
|
};
|
|
7
7
|
static flags: {
|
|
8
|
-
lang: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
|
|
8
|
+
lang: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
9
9
|
};
|
|
10
10
|
run(): Promise<void>;
|
|
11
11
|
}
|
|
@@ -18,7 +18,7 @@ export default class Eval extends BaseCommand {
|
|
|
18
18
|
command: string;
|
|
19
19
|
}[];
|
|
20
20
|
static flags: {
|
|
21
|
-
lang: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
|
|
21
|
+
lang: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
22
22
|
control: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
23
23
|
treatment: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
24
24
|
'control-cwd': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { BaseCommand } from '../../oclif/base-command.js';
|
|
2
|
+
export default class EvalTask extends BaseCommand {
|
|
3
|
+
static description: string;
|
|
4
|
+
static args: {
|
|
5
|
+
definition: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
|
|
6
|
+
};
|
|
7
|
+
static flags: {
|
|
8
|
+
lang: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
9
|
+
'dry-run': import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
10
|
+
output: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
|
|
11
|
+
};
|
|
12
|
+
run(): Promise<void>;
|
|
13
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { Args, Flags } from '@oclif/core';
|
|
2
|
+
import { mkdtemp, rm } from 'node:fs/promises';
|
|
3
|
+
import { tmpdir, homedir } from 'node:os';
|
|
4
|
+
import { join, resolve } from 'node:path';
|
|
5
|
+
import { BaseCommand } from '../../oclif/base-command.js';
|
|
6
|
+
import { LANG_FLAG, bilingual } from '../../oclif/i18n.js';
|
|
7
|
+
import { prepareLocalTask } from '../../../eval-workflows/hosts/local-task/application.js';
|
|
8
|
+
export default class EvalTask extends BaseCommand {
|
|
9
|
+
static description = bilingual({ zh: '从固定快照执行可信本地任务 A/B,采集产物并独立验收。', en: 'Run trusted local task A/B from a fixed snapshot, collect artifacts and verify outcomes independently.' });
|
|
10
|
+
static args = { definition: Args.string({ required: true, description: bilingual({ zh: '本地任务 YAML/JSON 定义。', en: 'Local task YAML/JSON definition.' }) }) };
|
|
11
|
+
static flags = {
|
|
12
|
+
lang: LANG_FLAG,
|
|
13
|
+
'dry-run': Flags.boolean({ description: bilingual({ zh: '预览封存计划,不执行任务。', en: 'Preview the sealed plan without executing tasks.' }) }),
|
|
14
|
+
output: Flags.string({ default: '.omk/eval', description: bilingual({ zh: '报告输出目录。', en: 'Report output directory.' }) }),
|
|
15
|
+
};
|
|
16
|
+
async run() {
|
|
17
|
+
const { args, flags } = await this.parse(EvalTask);
|
|
18
|
+
const temporaryRoot = await mkdtemp(join(tmpdir(), 'omk-local-task-'));
|
|
19
|
+
try {
|
|
20
|
+
await this.runWithCancellation(async (signal) => {
|
|
21
|
+
const application = await prepareLocalTask({ definitionPath: resolve(args.definition), temporaryRoot,
|
|
22
|
+
outputDirectory: resolve(flags.output),
|
|
23
|
+
authenticationFile: join(process.env.CODEX_HOME ?? join(homedir(), '.codex'), 'auth.json'),
|
|
24
|
+
});
|
|
25
|
+
if (flags['dry-run']) {
|
|
26
|
+
this.log(JSON.stringify(application.preview, null, 2));
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
process.stderr.write(`${JSON.stringify(application.preview, null, 2)}\n`);
|
|
30
|
+
const { result, artifacts, reference, diagnosticsDirectory, diagnosticReferences } = await application.run(signal);
|
|
31
|
+
this.log(JSON.stringify({ runId: result.runId, outputDirectory: resolve(flags.output), reference, diagnosticsDirectory, diagnosticReferences, report: artifacts.report }, null, 2));
|
|
32
|
+
if (result.status !== 'completed' || artifacts.execution.records.some((record) => record.executionStatus !== 'completed')
|
|
33
|
+
|| artifacts.evaluation.records.some((record) => record.evaluationStatus !== 'completed'
|
|
34
|
+
|| record.observations.some((observation) => observation.observationStatus !== 'observed')))
|
|
35
|
+
this.exit(1);
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
finally {
|
|
39
|
+
await rm(temporaryRoot, { recursive: true, force: true });
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}
|
|
@@ -13,7 +13,7 @@ export default class Evolve extends BaseCommand {
|
|
|
13
13
|
skillPath: Interfaces.Arg<string, Record<string, unknown>>;
|
|
14
14
|
};
|
|
15
15
|
static flags: {
|
|
16
|
-
lang: Interfaces.OptionFlag<string, Interfaces.CustomOptions>;
|
|
16
|
+
lang: Interfaces.OptionFlag<string | undefined, Interfaces.CustomOptions>;
|
|
17
17
|
rounds: Interfaces.OptionFlag<string, Interfaces.CustomOptions>;
|
|
18
18
|
target: Interfaces.OptionFlag<string | undefined, Interfaces.CustomOptions>;
|
|
19
19
|
samples: Interfaces.OptionFlag<string | undefined, Interfaces.CustomOptions>;
|
|
@@ -9,7 +9,7 @@ export default class Init extends BaseCommand {
|
|
|
9
9
|
targetDir: import("@oclif/core/interfaces").Arg<string | undefined, Record<string, unknown>>;
|
|
10
10
|
};
|
|
11
11
|
static flags: {
|
|
12
|
-
lang: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
|
|
12
|
+
lang: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
13
13
|
samples: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
|
|
14
14
|
force: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
15
15
|
};
|
|
@@ -8,20 +8,32 @@ import { shellQuoteArg } from '../../shared/shell-quote.js';
|
|
|
8
8
|
import { writeProjectScaffold } from '../../knowledge-artifacts/authoring/scaffold.js';
|
|
9
9
|
import { projectLayout } from '../../evidence/storage/layout.js';
|
|
10
10
|
import { DEFAULT_INIT_SAMPLE_COUNT, FULL_INIT_SAMPLE_COUNT, serializeInitSamples, } from '../templates/init-samples.js';
|
|
11
|
-
//
|
|
12
|
-
//
|
|
13
|
-
const INIT_OMK_GITIGNORE =
|
|
11
|
+
// 脚手架是用户拿到手的产物内容:语言必须跟着 --lang 走,否则英文用户 init 出来的
|
|
12
|
+
// 项目从注释到 skill 正文都是中文。name/目录名等身份字段两版一致,只有文字随语言。
|
|
13
|
+
const INIT_OMK_GITIGNORE = {
|
|
14
|
+
// 预置 .omk/.gitignore:测量 bulk + doctor --fix 备份(项目本地、不该入库)默认不入库;
|
|
15
|
+
// managed/ 治理档案 + 配置不在此列,默认 track。
|
|
16
|
+
zh: `# omk 测量 bulk 与 doctor --fix 备份(项目本地)——不入库;前导 / 锚定 .omk/ 顶层,不误伤嵌套同名目录。
|
|
14
17
|
/eval/
|
|
15
18
|
/doctor/
|
|
16
19
|
/observe/
|
|
17
20
|
/backups/
|
|
18
21
|
/state/
|
|
19
|
-
|
|
22
|
+
`,
|
|
23
|
+
en: `# omk measurement bulk and doctor --fix backups (project-local) - not committed; the leading / anchors at the .omk/ root so nested directories with the same name are unaffected.
|
|
24
|
+
/eval/
|
|
25
|
+
/doctor/
|
|
26
|
+
/observe/
|
|
27
|
+
/backups/
|
|
28
|
+
/state/
|
|
29
|
+
`,
|
|
30
|
+
};
|
|
20
31
|
// 模板带 Claude Code SKILL.md 兼容 frontmatter(name + description),让用户
|
|
21
32
|
// 可以把 init 出来的 SKILL.md 直接 deploy 到 ~/.claude/skills/ 给 Claude Code 用,
|
|
22
33
|
// 一份文件双向 dogfood(omk 评测 + Claude 部署)。omk 当前不 strip frontmatter,
|
|
23
34
|
// 它会跟着 leak 进 system prompt — 在 model 行为层面是无害噪声,跨 executor 一致。
|
|
24
|
-
const INIT_SKILL_V1 =
|
|
35
|
+
const INIT_SKILL_V1 = {
|
|
36
|
+
zh: `---
|
|
25
37
|
name: code-review-v1
|
|
26
38
|
description: 简单代码审查 skill,识别明显问题
|
|
27
39
|
---
|
|
@@ -29,8 +41,19 @@ description: 简单代码审查 skill,识别明显问题
|
|
|
29
41
|
# Code review v1
|
|
30
42
|
|
|
31
43
|
你是一个代码审查助手。请审查用户提供的代码,指出潜在问题。
|
|
32
|
-
|
|
33
|
-
|
|
44
|
+
`,
|
|
45
|
+
en: `---
|
|
46
|
+
name: code-review-v1
|
|
47
|
+
description: Simple code review skill that flags obvious problems
|
|
48
|
+
---
|
|
49
|
+
|
|
50
|
+
# Code review v1
|
|
51
|
+
|
|
52
|
+
You are a code review assistant. Review the code the user provides and point out potential problems.
|
|
53
|
+
`,
|
|
54
|
+
};
|
|
55
|
+
const INIT_SKILL_V2 = {
|
|
56
|
+
zh: `---
|
|
34
57
|
name: code-review-v2
|
|
35
58
|
description: 多维度代码审查,覆盖安全 / 健壮 / 可维护 / 性能,带严重程度标注
|
|
36
59
|
---
|
|
@@ -45,7 +68,24 @@ description: 多维度代码审查,覆盖安全 / 健壮 / 可维护 / 性能,
|
|
|
45
68
|
4. 性能:是否存在明显的性能瓶颈
|
|
46
69
|
|
|
47
70
|
对每个维度给出具体的改进建议,并标注严重程度(高/中/低)。
|
|
48
|
-
|
|
71
|
+
`,
|
|
72
|
+
en: `---
|
|
73
|
+
name: code-review-v2
|
|
74
|
+
description: Multi-dimension code review covering security / robustness / maintainability / performance, with severity labels
|
|
75
|
+
---
|
|
76
|
+
|
|
77
|
+
# Code review v2
|
|
78
|
+
|
|
79
|
+
You are a senior code review specialist. Review the code the user provides along these dimensions:
|
|
80
|
+
|
|
81
|
+
1. Security: injection, XSS, secret leakage and similar risks
|
|
82
|
+
2. Robustness: adequate error handling and boundary checks
|
|
83
|
+
3. Maintainability: clear naming and sound structure
|
|
84
|
+
4. Performance: obvious bottlenecks
|
|
85
|
+
|
|
86
|
+
For each dimension give concrete improvements and label their severity (high / medium / low).
|
|
87
|
+
`,
|
|
88
|
+
};
|
|
49
89
|
const INIT_EVAL_COMMAND = 'omk eval --control code-review-v1 --treatment code-review-v2';
|
|
50
90
|
function isOutsideCwd(relPath) {
|
|
51
91
|
return relPath === '..' || relPath.startsWith(`..${sep}`);
|
|
@@ -147,10 +187,10 @@ export default class Init extends BaseCommand {
|
|
|
147
187
|
throw new Error(tCli('cli.init.existing_files', lang, { paths: existingFiles.join(', ') }));
|
|
148
188
|
}
|
|
149
189
|
writeProjectScaffold(targetDir, [
|
|
150
|
-
{ relativePath: 'eval-samples.json', content: serializeInitSamples(sampleCount) },
|
|
151
|
-
{ relativePath: 'skills/code-review-v1/SKILL.md', content: INIT_SKILL_V1 },
|
|
152
|
-
{ relativePath: 'skills/code-review-v2/SKILL.md', content: INIT_SKILL_V2 },
|
|
153
|
-
{ relativePath: relative(targetDir, join(layout.root, '.gitignore')), content: INIT_OMK_GITIGNORE },
|
|
190
|
+
{ relativePath: 'eval-samples.json', content: serializeInitSamples(sampleCount, lang) },
|
|
191
|
+
{ relativePath: 'skills/code-review-v1/SKILL.md', content: INIT_SKILL_V1[lang] },
|
|
192
|
+
{ relativePath: 'skills/code-review-v2/SKILL.md', content: INIT_SKILL_V2[lang] },
|
|
193
|
+
{ relativePath: relative(targetDir, join(layout.root, '.gitignore')), content: INIT_OMK_GITIGNORE[lang] },
|
|
154
194
|
], flags.force);
|
|
155
195
|
console.log(tCli('cli.init.scaffolded', lang, { dir: targetDir }));
|
|
156
196
|
console.log(tCli('cli.init.sample_pack', lang, { count: sampleCount }));
|
|
@@ -163,6 +203,8 @@ export default class Init extends BaseCommand {
|
|
|
163
203
|
: 'cli.init.next_step_report_quick', lang));
|
|
164
204
|
console.log(tCli('cli.init.next_step_customize', lang));
|
|
165
205
|
console.log(tCli('cli.init.note_skill_injection', lang));
|
|
206
|
+
if (!this.langConfigured)
|
|
207
|
+
console.log(tCli('cli.init.language_hint', lang, { lang }));
|
|
166
208
|
});
|
|
167
209
|
}
|
|
168
210
|
}
|
|
@@ -9,7 +9,7 @@ export default class Install extends BaseCommand {
|
|
|
9
9
|
input: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
|
|
10
10
|
};
|
|
11
11
|
static flags: {
|
|
12
|
-
lang: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
|
|
12
|
+
lang: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
13
13
|
kind: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
14
14
|
to: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
|
|
15
15
|
dest: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
@@ -18,7 +18,7 @@ export default class List extends BaseCommand {
|
|
|
18
18
|
command: string;
|
|
19
19
|
}[];
|
|
20
20
|
static flags: {
|
|
21
|
-
lang: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
|
|
21
|
+
lang: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
22
22
|
global: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
23
23
|
json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
24
24
|
};
|
|
@@ -5,7 +5,7 @@ export declare function runObserveInbox(_args: ObserveInboxArgs, flags: ObserveI
|
|
|
5
5
|
export default class ObserveInbox extends BaseCommand {
|
|
6
6
|
static description: string;
|
|
7
7
|
static flags: {
|
|
8
|
-
lang: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
|
|
8
|
+
lang: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
9
9
|
'input-dir': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
10
10
|
global: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
11
11
|
skill: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
@@ -13,11 +13,11 @@ function printText(value) {
|
|
|
13
13
|
}
|
|
14
14
|
// runObserveInbox export:test/cli/observe.test.ts in-process import 验证 by-skill 聚合行为。
|
|
15
15
|
export async function runObserveInbox(_args, flags, lang, signal) {
|
|
16
|
-
const { queryObservationInbox, selectExploreInboxItems, loadLatestObservationInboxReports, summarizeObservationInboxBySkill,
|
|
17
|
-
// 显式 --input-dir 最高;否则 --global
|
|
16
|
+
const { queryObservationInbox, selectExploreInboxItems, loadLatestObservationInboxReports, summarizeObservationInboxBySkill, globalObservationsDir, projectObservationsDir } = await import('../../../observability/inbox/index.js');
|
|
17
|
+
// 显式 --input-dir 最高;否则 --global 直读全局、默认交给 inbox 读侧的「项目优先 → 全局兜底」。
|
|
18
18
|
const dir = flags['input-dir']
|
|
19
19
|
? resolve(flags['input-dir'])
|
|
20
|
-
: (flags.global ?
|
|
20
|
+
: (flags.global ? globalObservationsDir() : undefined);
|
|
21
21
|
if (flags['llm-enhanced-review']) {
|
|
22
22
|
const { buildObservationInboxViewModel } = await import('../../../observability/inbox/view-model.js');
|
|
23
23
|
const { extractSkillSoftStandards } = await import('../../../observability/soft-standards/index.js');
|
|
@@ -62,7 +62,7 @@ export async function runObserveInbox(_args, flags, lang, signal) {
|
|
|
62
62
|
items = items.filter((item) => item.skillName === flags.skill);
|
|
63
63
|
}
|
|
64
64
|
const recyclableCount = items.filter((item) => item.severity !== 'noise').length;
|
|
65
|
-
const sampleCommandBase = `omk sample --from-traces --observations-dir ${shellQuoteArg(dir)}`;
|
|
65
|
+
const sampleCommandBase = `omk sample --from-traces --observations-dir ${shellQuoteArg(dir ?? projectObservationsDir())}`;
|
|
66
66
|
const sampleCommand = flags.skill
|
|
67
67
|
? `${sampleCommandBase} --skill ${shellQuoteArg(flags.skill)}`
|
|
68
68
|
: sampleCommandBase;
|
|
@@ -9,7 +9,7 @@ export default class Observe extends BaseCommand {
|
|
|
9
9
|
sessionsDir: import("@oclif/core/interfaces").Arg<string | undefined, Record<string, unknown>>;
|
|
10
10
|
};
|
|
11
11
|
static flags: {
|
|
12
|
-
lang: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
|
|
12
|
+
lang: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
13
13
|
kb: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
14
14
|
last: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
15
15
|
from: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
@@ -7,7 +7,7 @@ export default class ObserveIngest extends BaseCommand {
|
|
|
7
7
|
traceDir: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
|
|
8
8
|
};
|
|
9
9
|
static flags: {
|
|
10
|
-
lang: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
|
|
10
|
+
lang: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
11
11
|
'output-dir': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
12
12
|
global: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
13
13
|
json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
@@ -84,14 +84,18 @@ export default class ObserveIngest extends BaseCommand {
|
|
|
84
84
|
: 'Error: --output-dir must not be an empty string.');
|
|
85
85
|
throw new CliExit(2);
|
|
86
86
|
}
|
|
87
|
-
const { buildObservationInboxReport, compactObservationInboxReport, saveObservationInboxReport,
|
|
88
|
-
// 显式 --output-dir 最高;否则 --global
|
|
89
|
-
const
|
|
90
|
-
|
|
87
|
+
const { buildObservationInboxReport, compactObservationInboxReport, saveObservationInboxReport, projectObservationsDir, globalObservationsDir, } = await import('../../../observability/inbox/index.js');
|
|
88
|
+
// 显式 --output-dir 最高;否则 --global 写全局、默认写项目。
|
|
89
|
+
const outDir = resolve(outDirRaw ?? (flags.global ? globalObservationsDir() : projectObservationsDir()));
|
|
90
|
+
// 读侧兜底只在默认目标上生效:显式 --output-dir 与 --global 都照读给定目录,与 inbox 读侧同口径。
|
|
91
|
+
const reviewStateSource = outDirRaw || flags.global ? outDir : undefined;
|
|
91
92
|
const { loadObservationReviewState } = await import('../../../observability/inbox/review-state.js');
|
|
92
93
|
const { buildObserveDiagnosticsFromReport } = await import('../../../diagnosis/observe-producer.js');
|
|
93
|
-
const report = buildObservationInboxReport(tracePath, { reviewState: loadObservationReviewState(
|
|
94
|
-
|
|
94
|
+
const report = buildObservationInboxReport(tracePath, { reviewState: loadObservationReviewState(reviewStateSource) });
|
|
95
|
+
// 链由 observability 侧单一生产者按报告内的 cwd 证据构建,歧义即跳过;诊断层只消费。
|
|
96
|
+
const { skillNamesFromReports, buildSkillChainsForEvidence } = await import('../../../observability/inbox/skill-chains.js');
|
|
97
|
+
const { chains } = buildSkillChainsForEvidence(skillNamesFromReports([report]), [report]);
|
|
98
|
+
report.diagnostics = buildObserveDiagnosticsFromReport(report, { skillChains: chains });
|
|
95
99
|
const path = saveObservationInboxReport(report, outDir);
|
|
96
100
|
console.log(flags.json
|
|
97
101
|
? JSON.stringify(compactObservationInboxReport(report), null, 2)
|
|
@@ -5,7 +5,7 @@ export default class ObserveKnowledge extends BaseCommand {
|
|
|
5
5
|
operation: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
|
|
6
6
|
};
|
|
7
7
|
static flags: {
|
|
8
|
-
lang: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
|
|
8
|
+
lang: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
9
9
|
workspace: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
10
10
|
source: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
11
11
|
'start-record': import("@oclif/core/interfaces").OptionFlag<number | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
@@ -15,7 +15,7 @@ export default class ObserveKnowledge extends BaseCommand {
|
|
|
15
15
|
static flags = {
|
|
16
16
|
lang: LANG_FLAG,
|
|
17
17
|
workspace: Flags.string({ description: description('本地知识工作区,默认使用全局设置;CLI 与 Studio 共用。', 'Local knowledge workspace; defaults to global settings shared with Studio.') }),
|
|
18
|
-
source: Flags.string({ description: description('capture
|
|
18
|
+
source: Flags.string({ description: description('capture:一份已支持格式的 Agent 会话日志(Codex/Claude/Qoder 等)。', 'capture: one supported agent session log (Codex / Claude / Qoder / ...).') }),
|
|
19
19
|
'start-record': Flags.integer({ min: 0, description: description('从零开始的非空记录序号,包含。', 'Zero-based nonempty record index, inclusive.') }),
|
|
20
20
|
'end-record': Flags.integer({ min: 0, description: description('最后一条记录序号,包含。', 'Last record index, inclusive.') }),
|
|
21
21
|
snapshot: Flags.string({ description: description('generate/source/delete-source:归档身份。', 'generate/source/delete-source: snapshot identity.') }),
|
|
@@ -5,7 +5,7 @@ export default class ObserveShow extends BaseCommand {
|
|
|
5
5
|
inboxId: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
|
|
6
6
|
};
|
|
7
7
|
static flags: {
|
|
8
|
-
lang: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
|
|
8
|
+
lang: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
9
9
|
'input-dir': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
10
10
|
global: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
11
11
|
};
|