@zbigniewsobiecki/squint 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +1065 -0
- package/bin/dev.js +5 -0
- package/bin/run.js +5 -0
- package/dist/commands/_shared/db-helper.d.ts +18 -0
- package/dist/commands/_shared/db-helper.d.ts.map +1 -0
- package/dist/commands/_shared/db-helper.js +72 -0
- package/dist/commands/_shared/db-helper.js.map +1 -0
- package/dist/commands/_shared/flags.d.ts +20 -0
- package/dist/commands/_shared/flags.d.ts.map +1 -0
- package/dist/commands/_shared/flags.js +38 -0
- package/dist/commands/_shared/flags.js.map +1 -0
- package/dist/commands/_shared/index.d.ts +6 -0
- package/dist/commands/_shared/index.d.ts.map +1 -0
- package/dist/commands/_shared/index.js +6 -0
- package/dist/commands/_shared/index.js.map +1 -0
- package/dist/commands/_shared/output.d.ts +22 -0
- package/dist/commands/_shared/output.d.ts.map +1 -0
- package/dist/commands/_shared/output.js +36 -0
- package/dist/commands/_shared/output.js.map +1 -0
- package/dist/commands/_shared/source-reader.d.ts +23 -0
- package/dist/commands/_shared/source-reader.d.ts.map +1 -0
- package/dist/commands/_shared/source-reader.js +45 -0
- package/dist/commands/_shared/source-reader.js.map +1 -0
- package/dist/commands/_shared/symbol-resolver.d.ts +35 -0
- package/dist/commands/_shared/symbol-resolver.d.ts.map +1 -0
- package/dist/commands/_shared/symbol-resolver.js +102 -0
- package/dist/commands/_shared/symbol-resolver.js.map +1 -0
- package/dist/commands/browse.d.ts +13 -0
- package/dist/commands/browse.d.ts.map +1 -0
- package/dist/commands/browse.js +106 -0
- package/dist/commands/browse.js.map +1 -0
- package/dist/commands/domains/create.d.ts +15 -0
- package/dist/commands/domains/create.d.ts.map +1 -0
- package/dist/commands/domains/create.js +34 -0
- package/dist/commands/domains/create.js.map +1 -0
- package/dist/commands/domains/delete.d.ts +14 -0
- package/dist/commands/domains/delete.d.ts.map +1 -0
- package/dist/commands/domains/delete.js +41 -0
- package/dist/commands/domains/delete.js.map +1 -0
- package/dist/commands/domains/index.d.ts +2 -0
- package/dist/commands/domains/index.d.ts.map +1 -0
- package/dist/commands/domains/index.js +2 -0
- package/dist/commands/domains/index.js.map +1 -0
- package/dist/commands/domains/list.d.ts +12 -0
- package/dist/commands/domains/list.d.ts.map +1 -0
- package/dist/commands/domains/list.js +67 -0
- package/dist/commands/domains/list.js.map +1 -0
- package/dist/commands/domains/merge.d.ts +14 -0
- package/dist/commands/domains/merge.d.ts.map +1 -0
- package/dist/commands/domains/merge.js +40 -0
- package/dist/commands/domains/merge.js.map +1 -0
- package/dist/commands/domains/rename.d.ts +14 -0
- package/dist/commands/domains/rename.d.ts.map +1 -0
- package/dist/commands/domains/rename.js +33 -0
- package/dist/commands/domains/rename.js.map +1 -0
- package/dist/commands/domains/show.d.ts +14 -0
- package/dist/commands/domains/show.d.ts.map +1 -0
- package/dist/commands/domains/show.js +47 -0
- package/dist/commands/domains/show.js.map +1 -0
- package/dist/commands/domains/sync.d.ts +11 -0
- package/dist/commands/domains/sync.d.ts.map +1 -0
- package/dist/commands/domains/sync.js +33 -0
- package/dist/commands/domains/sync.js.map +1 -0
- package/dist/commands/domains/update.d.ts +14 -0
- package/dist/commands/domains/update.d.ts.map +1 -0
- package/dist/commands/domains/update.js +28 -0
- package/dist/commands/domains/update.js.map +1 -0
- package/dist/commands/features/assign.d.ts +16 -0
- package/dist/commands/features/assign.d.ts.map +1 -0
- package/dist/commands/features/assign.js +51 -0
- package/dist/commands/features/assign.js.map +1 -0
- package/dist/commands/features/create.d.ts +15 -0
- package/dist/commands/features/create.d.ts.map +1 -0
- package/dist/commands/features/create.js +30 -0
- package/dist/commands/features/create.js.map +1 -0
- package/dist/commands/features/delete.d.ts +14 -0
- package/dist/commands/features/delete.d.ts.map +1 -0
- package/dist/commands/features/delete.js +37 -0
- package/dist/commands/features/delete.js.map +1 -0
- package/dist/commands/features/generate.d.ts +34 -0
- package/dist/commands/features/generate.d.ts.map +1 -0
- package/dist/commands/features/generate.js +178 -0
- package/dist/commands/features/generate.js.map +1 -0
- package/dist/commands/features/index.d.ts +2 -0
- package/dist/commands/features/index.d.ts.map +1 -0
- package/dist/commands/features/index.js +2 -0
- package/dist/commands/features/index.js.map +1 -0
- package/dist/commands/features/list.d.ts +11 -0
- package/dist/commands/features/list.d.ts.map +1 -0
- package/dist/commands/features/list.js +45 -0
- package/dist/commands/features/list.js.map +1 -0
- package/dist/commands/features/show.d.ts +15 -0
- package/dist/commands/features/show.d.ts.map +1 -0
- package/dist/commands/features/show.js +61 -0
- package/dist/commands/features/show.js.map +1 -0
- package/dist/commands/features/unassign.d.ts +16 -0
- package/dist/commands/features/unassign.d.ts.map +1 -0
- package/dist/commands/features/unassign.js +55 -0
- package/dist/commands/features/unassign.js.map +1 -0
- package/dist/commands/features/update.d.ts +16 -0
- package/dist/commands/features/update.d.ts.map +1 -0
- package/dist/commands/features/update.js +54 -0
- package/dist/commands/features/update.js.map +1 -0
- package/dist/commands/files/imported-by.d.ts +13 -0
- package/dist/commands/files/imported-by.d.ts.map +1 -0
- package/dist/commands/files/imported-by.js +40 -0
- package/dist/commands/files/imported-by.js.map +1 -0
- package/dist/commands/files/imports.d.ts +14 -0
- package/dist/commands/files/imports.d.ts.map +1 -0
- package/dist/commands/files/imports.js +48 -0
- package/dist/commands/files/imports.js.map +1 -0
- package/dist/commands/files/index.d.ts +2 -0
- package/dist/commands/files/index.d.ts.map +1 -0
- package/dist/commands/files/index.js +2 -0
- package/dist/commands/files/index.js.map +1 -0
- package/dist/commands/files/list.d.ts +11 -0
- package/dist/commands/files/list.d.ts.map +1 -0
- package/dist/commands/files/list.js +35 -0
- package/dist/commands/files/list.js.map +1 -0
- package/dist/commands/files/orphans.d.ts +12 -0
- package/dist/commands/files/orphans.d.ts.map +1 -0
- package/dist/commands/files/orphans.js +43 -0
- package/dist/commands/files/orphans.js.map +1 -0
- package/dist/commands/files/show.d.ts +14 -0
- package/dist/commands/files/show.d.ts.map +1 -0
- package/dist/commands/files/show.js +95 -0
- package/dist/commands/files/show.js.map +1 -0
- package/dist/commands/flows/add-step.d.ts +19 -0
- package/dist/commands/flows/add-step.d.ts.map +1 -0
- package/dist/commands/flows/add-step.js +46 -0
- package/dist/commands/flows/add-step.js.map +1 -0
- package/dist/commands/flows/create.d.ts +17 -0
- package/dist/commands/flows/create.d.ts.map +1 -0
- package/dist/commands/flows/create.js +39 -0
- package/dist/commands/flows/create.js.map +1 -0
- package/dist/commands/flows/delete.d.ts +14 -0
- package/dist/commands/flows/delete.d.ts.map +1 -0
- package/dist/commands/flows/delete.js +37 -0
- package/dist/commands/flows/delete.js.map +1 -0
- package/dist/commands/flows/generate.d.ts +50 -0
- package/dist/commands/flows/generate.d.ts.map +1 -0
- package/dist/commands/flows/generate.js +438 -0
- package/dist/commands/flows/generate.js.map +1 -0
- package/dist/commands/flows/index.d.ts +2 -0
- package/dist/commands/flows/index.d.ts.map +1 -0
- package/dist/commands/flows/index.js +2 -0
- package/dist/commands/flows/index.js.map +1 -0
- package/dist/commands/flows/list.d.ts +12 -0
- package/dist/commands/flows/list.d.ts.map +1 -0
- package/dist/commands/flows/list.js +98 -0
- package/dist/commands/flows/list.js.map +1 -0
- package/dist/commands/flows/remove-step.d.ts +18 -0
- package/dist/commands/flows/remove-step.d.ts.map +1 -0
- package/dist/commands/flows/remove-step.js +41 -0
- package/dist/commands/flows/remove-step.js.map +1 -0
- package/dist/commands/flows/show.d.ts +17 -0
- package/dist/commands/flows/show.d.ts.map +1 -0
- package/dist/commands/flows/show.js +136 -0
- package/dist/commands/flows/show.js.map +1 -0
- package/dist/commands/flows/trace.d.ts +22 -0
- package/dist/commands/flows/trace.d.ts.map +1 -0
- package/dist/commands/flows/trace.js +217 -0
- package/dist/commands/flows/trace.js.map +1 -0
- package/dist/commands/flows/update.d.ts +17 -0
- package/dist/commands/flows/update.d.ts.map +1 -0
- package/dist/commands/flows/update.js +60 -0
- package/dist/commands/flows/update.js.map +1 -0
- package/dist/commands/flows/verify.d.ts +21 -0
- package/dist/commands/flows/verify.d.ts.map +1 -0
- package/dist/commands/flows/verify.js +123 -0
- package/dist/commands/flows/verify.js.map +1 -0
- package/dist/commands/gaps.d.ts +14 -0
- package/dist/commands/gaps.d.ts.map +1 -0
- package/dist/commands/gaps.js +184 -0
- package/dist/commands/gaps.js.map +1 -0
- package/dist/commands/hierarchy/index.d.ts +20 -0
- package/dist/commands/hierarchy/index.d.ts.map +1 -0
- package/dist/commands/hierarchy/index.js +344 -0
- package/dist/commands/hierarchy/index.js.map +1 -0
- package/dist/commands/ingest.d.ts +23 -0
- package/dist/commands/ingest.d.ts.map +1 -0
- package/dist/commands/ingest.js +249 -0
- package/dist/commands/ingest.js.map +1 -0
- package/dist/commands/interactions/create.d.ts +16 -0
- package/dist/commands/interactions/create.d.ts.map +1 -0
- package/dist/commands/interactions/create.js +58 -0
- package/dist/commands/interactions/create.js.map +1 -0
- package/dist/commands/interactions/delete.d.ts +16 -0
- package/dist/commands/interactions/delete.d.ts.map +1 -0
- package/dist/commands/interactions/delete.js +28 -0
- package/dist/commands/interactions/delete.js.map +1 -0
- package/dist/commands/interactions/generate.d.ts +62 -0
- package/dist/commands/interactions/generate.d.ts.map +1 -0
- package/dist/commands/interactions/generate.js +870 -0
- package/dist/commands/interactions/generate.js.map +1 -0
- package/dist/commands/interactions/index.d.ts +2 -0
- package/dist/commands/interactions/index.d.ts.map +1 -0
- package/dist/commands/interactions/index.js +2 -0
- package/dist/commands/interactions/index.js.map +1 -0
- package/dist/commands/interactions/list.d.ts +15 -0
- package/dist/commands/interactions/list.d.ts.map +1 -0
- package/dist/commands/interactions/list.js +127 -0
- package/dist/commands/interactions/list.js.map +1 -0
- package/dist/commands/interactions/show.d.ts +17 -0
- package/dist/commands/interactions/show.d.ts.map +1 -0
- package/dist/commands/interactions/show.js +80 -0
- package/dist/commands/interactions/show.js.map +1 -0
- package/dist/commands/interactions/update.d.ts +20 -0
- package/dist/commands/interactions/update.d.ts.map +1 -0
- package/dist/commands/interactions/update.js +57 -0
- package/dist/commands/interactions/update.js.map +1 -0
- package/dist/commands/interactions/validate.d.ts +12 -0
- package/dist/commands/interactions/validate.d.ts.map +1 -0
- package/dist/commands/interactions/validate.js +94 -0
- package/dist/commands/interactions/validate.js.map +1 -0
- package/dist/commands/interactions/verify.d.ts +18 -0
- package/dist/commands/interactions/verify.d.ts.map +1 -0
- package/dist/commands/interactions/verify.js +127 -0
- package/dist/commands/interactions/verify.js.map +1 -0
- package/dist/commands/llm/_shared/base-llm-command.d.ts +44 -0
- package/dist/commands/llm/_shared/base-llm-command.d.ts.map +1 -0
- package/dist/commands/llm/_shared/base-llm-command.js +73 -0
- package/dist/commands/llm/_shared/base-llm-command.js.map +1 -0
- package/dist/commands/llm/_shared/coverage.d.ts +61 -0
- package/dist/commands/llm/_shared/coverage.d.ts.map +1 -0
- package/dist/commands/llm/_shared/coverage.js +161 -0
- package/dist/commands/llm/_shared/coverage.js.map +1 -0
- package/dist/commands/llm/_shared/csv-utils.d.ts +65 -0
- package/dist/commands/llm/_shared/csv-utils.d.ts.map +1 -0
- package/dist/commands/llm/_shared/csv-utils.js +231 -0
- package/dist/commands/llm/_shared/csv-utils.js.map +1 -0
- package/dist/commands/llm/_shared/csv.d.ts +44 -0
- package/dist/commands/llm/_shared/csv.d.ts.map +1 -0
- package/dist/commands/llm/_shared/csv.js +76 -0
- package/dist/commands/llm/_shared/csv.js.map +1 -0
- package/dist/commands/llm/_shared/entity-utils.d.ts +11 -0
- package/dist/commands/llm/_shared/entity-utils.d.ts.map +1 -0
- package/dist/commands/llm/_shared/entity-utils.js +87 -0
- package/dist/commands/llm/_shared/entity-utils.js.map +1 -0
- package/dist/commands/llm/_shared/flow-csv.d.ts +74 -0
- package/dist/commands/llm/_shared/flow-csv.d.ts.map +1 -0
- package/dist/commands/llm/_shared/flow-csv.js +198 -0
- package/dist/commands/llm/_shared/flow-csv.js.map +1 -0
- package/dist/commands/llm/_shared/flow-prompts.d.ts +61 -0
- package/dist/commands/llm/_shared/flow-prompts.d.ts.map +1 -0
- package/dist/commands/llm/_shared/flow-prompts.js +281 -0
- package/dist/commands/llm/_shared/flow-prompts.js.map +1 -0
- package/dist/commands/llm/_shared/flow-validation.d.ts +69 -0
- package/dist/commands/llm/_shared/flow-validation.d.ts.map +1 -0
- package/dist/commands/llm/_shared/flow-validation.js +176 -0
- package/dist/commands/llm/_shared/flow-validation.js.map +1 -0
- package/dist/commands/llm/_shared/llm-utils.d.ts +88 -0
- package/dist/commands/llm/_shared/llm-utils.d.ts.map +1 -0
- package/dist/commands/llm/_shared/llm-utils.js +256 -0
- package/dist/commands/llm/_shared/llm-utils.js.map +1 -0
- package/dist/commands/llm/_shared/module-csv.d.ts +76 -0
- package/dist/commands/llm/_shared/module-csv.d.ts.map +1 -0
- package/dist/commands/llm/_shared/module-csv.js +196 -0
- package/dist/commands/llm/_shared/module-csv.js.map +1 -0
- package/dist/commands/llm/_shared/module-prompts.d.ts +107 -0
- package/dist/commands/llm/_shared/module-prompts.d.ts.map +1 -0
- package/dist/commands/llm/_shared/module-prompts.js +395 -0
- package/dist/commands/llm/_shared/module-prompts.js.map +1 -0
- package/dist/commands/llm/_shared/process-utils.d.ts +52 -0
- package/dist/commands/llm/_shared/process-utils.d.ts.map +1 -0
- package/dist/commands/llm/_shared/process-utils.js +214 -0
- package/dist/commands/llm/_shared/process-utils.js.map +1 -0
- package/dist/commands/llm/_shared/prompts.d.ts +132 -0
- package/dist/commands/llm/_shared/prompts.d.ts.map +1 -0
- package/dist/commands/llm/_shared/prompts.js +391 -0
- package/dist/commands/llm/_shared/prompts.js.map +1 -0
- package/dist/commands/llm/_shared/pure-check.d.ts +10 -0
- package/dist/commands/llm/_shared/pure-check.d.ts.map +1 -0
- package/dist/commands/llm/_shared/pure-check.js +449 -0
- package/dist/commands/llm/_shared/pure-check.js.map +1 -0
- package/dist/commands/llm/_shared/verify/content-verifier.d.ts +40 -0
- package/dist/commands/llm/_shared/verify/content-verifier.d.ts.map +1 -0
- package/dist/commands/llm/_shared/verify/content-verifier.js +247 -0
- package/dist/commands/llm/_shared/verify/content-verifier.js.map +1 -0
- package/dist/commands/llm/_shared/verify/coverage-checker.d.ts +34 -0
- package/dist/commands/llm/_shared/verify/coverage-checker.d.ts.map +1 -0
- package/dist/commands/llm/_shared/verify/coverage-checker.js +1096 -0
- package/dist/commands/llm/_shared/verify/coverage-checker.js.map +1 -0
- package/dist/commands/llm/_shared/verify/verify-prompts.d.ts +30 -0
- package/dist/commands/llm/_shared/verify/verify-prompts.d.ts.map +1 -0
- package/dist/commands/llm/_shared/verify/verify-prompts.js +118 -0
- package/dist/commands/llm/_shared/verify/verify-prompts.js.map +1 -0
- package/dist/commands/llm/_shared/verify/verify-types.d.ts +47 -0
- package/dist/commands/llm/_shared/verify/verify-types.d.ts.map +1 -0
- package/dist/commands/llm/_shared/verify/verify-types.js +2 -0
- package/dist/commands/llm/_shared/verify/verify-types.js.map +1 -0
- package/dist/commands/llm/annotate.d.ts +7 -0
- package/dist/commands/llm/annotate.d.ts.map +1 -0
- package/dist/commands/llm/annotate.js +11 -0
- package/dist/commands/llm/annotate.js.map +1 -0
- package/dist/commands/llm/features/feature-grouper.d.ts +31 -0
- package/dist/commands/llm/features/feature-grouper.d.ts.map +1 -0
- package/dist/commands/llm/features/feature-grouper.js +223 -0
- package/dist/commands/llm/features/feature-grouper.js.map +1 -0
- package/dist/commands/llm/features/index.d.ts +6 -0
- package/dist/commands/llm/features/index.d.ts.map +1 -0
- package/dist/commands/llm/features/index.js +6 -0
- package/dist/commands/llm/features/index.js.map +1 -0
- package/dist/commands/llm/features/types.d.ts +10 -0
- package/dist/commands/llm/features/types.d.ts.map +1 -0
- package/dist/commands/llm/features/types.js +5 -0
- package/dist/commands/llm/features/types.js.map +1 -0
- package/dist/commands/llm/features.d.ts +7 -0
- package/dist/commands/llm/features.d.ts.map +1 -0
- package/dist/commands/llm/features.js +11 -0
- package/dist/commands/llm/features.js.map +1 -0
- package/dist/commands/llm/flows/atomic-flow-builder.d.ts +51 -0
- package/dist/commands/llm/flows/atomic-flow-builder.d.ts.map +1 -0
- package/dist/commands/llm/flows/atomic-flow-builder.js +247 -0
- package/dist/commands/llm/flows/atomic-flow-builder.js.map +1 -0
- package/dist/commands/llm/flows/dedup.d.ts +18 -0
- package/dist/commands/llm/flows/dedup.d.ts.map +1 -0
- package/dist/commands/llm/flows/dedup.js +76 -0
- package/dist/commands/llm/flows/dedup.js.map +1 -0
- package/dist/commands/llm/flows/entry-point-detector.d.ts +41 -0
- package/dist/commands/llm/flows/entry-point-detector.d.ts.map +1 -0
- package/dist/commands/llm/flows/entry-point-detector.js +388 -0
- package/dist/commands/llm/flows/entry-point-detector.js.map +1 -0
- package/dist/commands/llm/flows/flow-enhancer.d.ts +21 -0
- package/dist/commands/llm/flows/flow-enhancer.d.ts.map +1 -0
- package/dist/commands/llm/flows/flow-enhancer.js +166 -0
- package/dist/commands/llm/flows/flow-enhancer.js.map +1 -0
- package/dist/commands/llm/flows/flow-tracer.d.ts +50 -0
- package/dist/commands/llm/flows/flow-tracer.d.ts.map +1 -0
- package/dist/commands/llm/flows/flow-tracer.js +271 -0
- package/dist/commands/llm/flows/flow-tracer.js.map +1 -0
- package/dist/commands/llm/flows/flow-validator.d.ts +31 -0
- package/dist/commands/llm/flows/flow-validator.d.ts.map +1 -0
- package/dist/commands/llm/flows/flow-validator.js +262 -0
- package/dist/commands/llm/flows/flow-validator.js.map +1 -0
- package/dist/commands/llm/flows/gap-flow-generator.d.ts +13 -0
- package/dist/commands/llm/flows/gap-flow-generator.d.ts.map +1 -0
- package/dist/commands/llm/flows/gap-flow-generator.js +48 -0
- package/dist/commands/llm/flows/gap-flow-generator.js.map +1 -0
- package/dist/commands/llm/flows/index.d.ts +12 -0
- package/dist/commands/llm/flows/index.d.ts.map +1 -0
- package/dist/commands/llm/flows/index.js +12 -0
- package/dist/commands/llm/flows/index.js.map +1 -0
- package/dist/commands/llm/flows/types.d.ts +87 -0
- package/dist/commands/llm/flows/types.d.ts.map +1 -0
- package/dist/commands/llm/flows/types.js +5 -0
- package/dist/commands/llm/flows/types.js.map +1 -0
- package/dist/commands/llm/flows.d.ts +7 -0
- package/dist/commands/llm/flows.d.ts.map +1 -0
- package/dist/commands/llm/flows.js +11 -0
- package/dist/commands/llm/flows.js.map +1 -0
- package/dist/commands/llm/interactions.d.ts +7 -0
- package/dist/commands/llm/interactions.d.ts.map +1 -0
- package/dist/commands/llm/interactions.js +11 -0
- package/dist/commands/llm/interactions.js.map +1 -0
- package/dist/commands/llm/modules.d.ts +7 -0
- package/dist/commands/llm/modules.d.ts.map +1 -0
- package/dist/commands/llm/modules.js +11 -0
- package/dist/commands/llm/modules.js.map +1 -0
- package/dist/commands/llm/relationships.d.ts +7 -0
- package/dist/commands/llm/relationships.d.ts.map +1 -0
- package/dist/commands/llm/relationships.js +11 -0
- package/dist/commands/llm/relationships.js.map +1 -0
- package/dist/commands/modules/assign.d.ts +14 -0
- package/dist/commands/modules/assign.d.ts.map +1 -0
- package/dist/commands/modules/assign.js +54 -0
- package/dist/commands/modules/assign.js.map +1 -0
- package/dist/commands/modules/create.d.ts +16 -0
- package/dist/commands/modules/create.d.ts.map +1 -0
- package/dist/commands/modules/create.js +37 -0
- package/dist/commands/modules/create.js.map +1 -0
- package/dist/commands/modules/delete.d.ts +14 -0
- package/dist/commands/modules/delete.d.ts.map +1 -0
- package/dist/commands/modules/delete.js +54 -0
- package/dist/commands/modules/delete.js.map +1 -0
- package/dist/commands/modules/generate.d.ts +84 -0
- package/dist/commands/modules/generate.d.ts.map +1 -0
- package/dist/commands/modules/generate.js +1234 -0
- package/dist/commands/modules/generate.js.map +1 -0
- package/dist/commands/modules/index.d.ts +2 -0
- package/dist/commands/modules/index.d.ts.map +1 -0
- package/dist/commands/modules/index.js +2 -0
- package/dist/commands/modules/index.js.map +1 -0
- package/dist/commands/modules/list.d.ts +13 -0
- package/dist/commands/modules/list.d.ts.map +1 -0
- package/dist/commands/modules/list.js +92 -0
- package/dist/commands/modules/list.js.map +1 -0
- package/dist/commands/modules/prune.d.ts +10 -0
- package/dist/commands/modules/prune.d.ts.map +1 -0
- package/dist/commands/modules/prune.js +23 -0
- package/dist/commands/modules/prune.js.map +1 -0
- package/dist/commands/modules/show.d.ts +15 -0
- package/dist/commands/modules/show.d.ts.map +1 -0
- package/dist/commands/modules/show.js +95 -0
- package/dist/commands/modules/show.js.map +1 -0
- package/dist/commands/modules/unassign.d.ts +13 -0
- package/dist/commands/modules/unassign.d.ts.map +1 -0
- package/dist/commands/modules/unassign.js +49 -0
- package/dist/commands/modules/unassign.js.map +1 -0
- package/dist/commands/modules/update.d.ts +15 -0
- package/dist/commands/modules/update.d.ts.map +1 -0
- package/dist/commands/modules/update.js +50 -0
- package/dist/commands/modules/update.js.map +1 -0
- package/dist/commands/modules/verify.d.ts +18 -0
- package/dist/commands/modules/verify.d.ts.map +1 -0
- package/dist/commands/modules/verify.js +114 -0
- package/dist/commands/modules/verify.js.map +1 -0
- package/dist/commands/overview.d.ts +12 -0
- package/dist/commands/overview.d.ts.map +1 -0
- package/dist/commands/overview.js +219 -0
- package/dist/commands/overview.js.map +1 -0
- package/dist/commands/parse.d.ts +30 -0
- package/dist/commands/parse.d.ts.map +1 -0
- package/dist/commands/parse.js +211 -0
- package/dist/commands/parse.js.map +1 -0
- package/dist/commands/process-groups/index.d.ts +2 -0
- package/dist/commands/process-groups/index.d.ts.map +1 -0
- package/dist/commands/process-groups/index.js +2 -0
- package/dist/commands/process-groups/index.js.map +1 -0
- package/dist/commands/process-groups/list.d.ts +11 -0
- package/dist/commands/process-groups/list.d.ts.map +1 -0
- package/dist/commands/process-groups/list.js +98 -0
- package/dist/commands/process-groups/list.js.map +1 -0
- package/dist/commands/relationships/annotate.d.ts +27 -0
- package/dist/commands/relationships/annotate.d.ts.map +1 -0
- package/dist/commands/relationships/annotate.js +453 -0
- package/dist/commands/relationships/annotate.js.map +1 -0
- package/dist/commands/relationships/index.d.ts +2 -0
- package/dist/commands/relationships/index.d.ts.map +1 -0
- package/dist/commands/relationships/index.js +2 -0
- package/dist/commands/relationships/index.js.map +1 -0
- package/dist/commands/relationships/list.d.ts +18 -0
- package/dist/commands/relationships/list.d.ts.map +1 -0
- package/dist/commands/relationships/list.js +147 -0
- package/dist/commands/relationships/list.js.map +1 -0
- package/dist/commands/relationships/next.d.ts +17 -0
- package/dist/commands/relationships/next.d.ts.map +1 -0
- package/dist/commands/relationships/next.js +178 -0
- package/dist/commands/relationships/next.js.map +1 -0
- package/dist/commands/relationships/set.d.ts +19 -0
- package/dist/commands/relationships/set.d.ts.map +1 -0
- package/dist/commands/relationships/set.js +65 -0
- package/dist/commands/relationships/set.js.map +1 -0
- package/dist/commands/relationships/show.d.ts +13 -0
- package/dist/commands/relationships/show.d.ts.map +1 -0
- package/dist/commands/relationships/show.js +59 -0
- package/dist/commands/relationships/show.js.map +1 -0
- package/dist/commands/relationships/unset.d.ts +16 -0
- package/dist/commands/relationships/unset.d.ts.map +1 -0
- package/dist/commands/relationships/unset.js +62 -0
- package/dist/commands/relationships/unset.js.map +1 -0
- package/dist/commands/relationships/verify.d.ts +24 -0
- package/dist/commands/relationships/verify.d.ts.map +1 -0
- package/dist/commands/relationships/verify.js +328 -0
- package/dist/commands/relationships/verify.js.map +1 -0
- package/dist/commands/stats.d.ts +11 -0
- package/dist/commands/stats.d.ts.map +1 -0
- package/dist/commands/stats.js +207 -0
- package/dist/commands/stats.js.map +1 -0
- package/dist/commands/symbols/annotate.d.ts +32 -0
- package/dist/commands/symbols/annotate.d.ts.map +1 -0
- package/dist/commands/symbols/annotate.js +862 -0
- package/dist/commands/symbols/annotate.js.map +1 -0
- package/dist/commands/symbols/deps.d.ts +18 -0
- package/dist/commands/symbols/deps.d.ts.map +1 -0
- package/dist/commands/symbols/deps.js +104 -0
- package/dist/commands/symbols/deps.js.map +1 -0
- package/dist/commands/symbols/index.d.ts +2 -0
- package/dist/commands/symbols/index.d.ts.map +1 -0
- package/dist/commands/symbols/index.js +2 -0
- package/dist/commands/symbols/index.js.map +1 -0
- package/dist/commands/symbols/list.d.ts +17 -0
- package/dist/commands/symbols/list.d.ts.map +1 -0
- package/dist/commands/symbols/list.js +136 -0
- package/dist/commands/symbols/list.js.map +1 -0
- package/dist/commands/symbols/next.d.ts +15 -0
- package/dist/commands/symbols/next.d.ts.map +1 -0
- package/dist/commands/symbols/next.js +147 -0
- package/dist/commands/symbols/next.js.map +1 -0
- package/dist/commands/symbols/prereqs.d.ts +18 -0
- package/dist/commands/symbols/prereqs.d.ts.map +1 -0
- package/dist/commands/symbols/prereqs.js +107 -0
- package/dist/commands/symbols/prereqs.js.map +1 -0
- package/dist/commands/symbols/ready.d.ts +17 -0
- package/dist/commands/symbols/ready.d.ts.map +1 -0
- package/dist/commands/symbols/ready.js +126 -0
- package/dist/commands/symbols/ready.js.map +1 -0
- package/dist/commands/symbols/set.d.ts +27 -0
- package/dist/commands/symbols/set.d.ts.map +1 -0
- package/dist/commands/symbols/set.js +241 -0
- package/dist/commands/symbols/set.js.map +1 -0
- package/dist/commands/symbols/show.d.ts +19 -0
- package/dist/commands/symbols/show.d.ts.map +1 -0
- package/dist/commands/symbols/show.js +182 -0
- package/dist/commands/symbols/show.js.map +1 -0
- package/dist/commands/symbols/understood.d.ts +15 -0
- package/dist/commands/symbols/understood.d.ts.map +1 -0
- package/dist/commands/symbols/understood.js +101 -0
- package/dist/commands/symbols/understood.js.map +1 -0
- package/dist/commands/symbols/unset.d.ts +16 -0
- package/dist/commands/symbols/unset.d.ts.map +1 -0
- package/dist/commands/symbols/unset.js +48 -0
- package/dist/commands/symbols/unset.js.map +1 -0
- package/dist/commands/symbols/verify.d.ts +25 -0
- package/dist/commands/symbols/verify.d.ts.map +1 -0
- package/dist/commands/symbols/verify.js +360 -0
- package/dist/commands/symbols/verify.js.map +1 -0
- package/dist/db/connection.d.ts +14 -0
- package/dist/db/connection.d.ts.map +1 -0
- package/dist/db/connection.js +37 -0
- package/dist/db/connection.js.map +1 -0
- package/dist/db/database-facade.d.ts +125 -0
- package/dist/db/database-facade.d.ts.map +1 -0
- package/dist/db/database-facade.js +347 -0
- package/dist/db/database-facade.js.map +1 -0
- package/dist/db/database.d.ts +9 -0
- package/dist/db/database.d.ts.map +1 -0
- package/dist/db/database.js +11 -0
- package/dist/db/database.js.map +1 -0
- package/dist/db/index.d.ts +7 -0
- package/dist/db/index.d.ts.map +1 -0
- package/dist/db/index.js +11 -0
- package/dist/db/index.js.map +1 -0
- package/dist/db/repositories/_shared/call-graph-query.d.ts +10 -0
- package/dist/db/repositories/_shared/call-graph-query.d.ts.map +1 -0
- package/dist/db/repositories/_shared/call-graph-query.js +59 -0
- package/dist/db/repositories/_shared/call-graph-query.js.map +1 -0
- package/dist/db/repositories/call-graph-service.d.ts +28 -0
- package/dist/db/repositories/call-graph-service.d.ts.map +1 -0
- package/dist/db/repositories/call-graph-service.js +223 -0
- package/dist/db/repositories/call-graph-service.js.map +1 -0
- package/dist/db/repositories/definition-repository.d.ts +99 -0
- package/dist/db/repositories/definition-repository.d.ts.map +1 -0
- package/dist/db/repositories/definition-repository.js +317 -0
- package/dist/db/repositories/definition-repository.js.map +1 -0
- package/dist/db/repositories/dependency-repository.d.ts +78 -0
- package/dist/db/repositories/dependency-repository.d.ts.map +1 -0
- package/dist/db/repositories/dependency-repository.js +446 -0
- package/dist/db/repositories/dependency-repository.js.map +1 -0
- package/dist/db/repositories/domain-repository.d.ts +97 -0
- package/dist/db/repositories/domain-repository.d.ts.map +1 -0
- package/dist/db/repositories/domain-repository.js +261 -0
- package/dist/db/repositories/domain-repository.js.map +1 -0
- package/dist/db/repositories/feature-repository.d.ts +64 -0
- package/dist/db/repositories/feature-repository.d.ts.map +1 -0
- package/dist/db/repositories/feature-repository.js +189 -0
- package/dist/db/repositories/feature-repository.js.map +1 -0
- package/dist/db/repositories/file-repository.d.ts +67 -0
- package/dist/db/repositories/file-repository.d.ts.map +1 -0
- package/dist/db/repositories/file-repository.js +179 -0
- package/dist/db/repositories/file-repository.js.map +1 -0
- package/dist/db/repositories/flow-repository.d.ts +172 -0
- package/dist/db/repositories/flow-repository.d.ts.map +1 -0
- package/dist/db/repositories/flow-repository.js +599 -0
- package/dist/db/repositories/flow-repository.js.map +1 -0
- package/dist/db/repositories/graph-repository.d.ts +93 -0
- package/dist/db/repositories/graph-repository.d.ts.map +1 -0
- package/dist/db/repositories/graph-repository.js +413 -0
- package/dist/db/repositories/graph-repository.js.map +1 -0
- package/dist/db/repositories/index.d.ts +20 -0
- package/dist/db/repositories/index.d.ts.map +1 -0
- package/dist/db/repositories/index.js +15 -0
- package/dist/db/repositories/index.js.map +1 -0
- package/dist/db/repositories/interaction-analysis.d.ts +78 -0
- package/dist/db/repositories/interaction-analysis.d.ts.map +1 -0
- package/dist/db/repositories/interaction-analysis.js +340 -0
- package/dist/db/repositories/interaction-analysis.js.map +1 -0
- package/dist/db/repositories/interaction-repository.d.ts +145 -0
- package/dist/db/repositories/interaction-repository.d.ts.map +1 -0
- package/dist/db/repositories/interaction-repository.js +395 -0
- package/dist/db/repositories/interaction-repository.js.map +1 -0
- package/dist/db/repositories/metadata-repository.d.ts +110 -0
- package/dist/db/repositories/metadata-repository.d.ts.map +1 -0
- package/dist/db/repositories/metadata-repository.js +294 -0
- package/dist/db/repositories/metadata-repository.js.map +1 -0
- package/dist/db/repositories/module-repository.d.ts +162 -0
- package/dist/db/repositories/module-repository.d.ts.map +1 -0
- package/dist/db/repositories/module-repository.js +519 -0
- package/dist/db/repositories/module-repository.js.map +1 -0
- package/dist/db/repositories/relationship-repository.d.ts +98 -0
- package/dist/db/repositories/relationship-repository.d.ts.map +1 -0
- package/dist/db/repositories/relationship-repository.js +421 -0
- package/dist/db/repositories/relationship-repository.js.map +1 -0
- package/dist/db/schema-manager.d.ts +31 -0
- package/dist/db/schema-manager.d.ts.map +1 -0
- package/dist/db/schema-manager.js +398 -0
- package/dist/db/schema-manager.js.map +1 -0
- package/dist/db/schema.d.ts +404 -0
- package/dist/db/schema.d.ts.map +1 -0
- package/dist/db/schema.js +234 -0
- package/dist/db/schema.js.map +1 -0
- package/dist/db/utils/tree-builder.d.ts +25 -0
- package/dist/db/utils/tree-builder.d.ts.map +1 -0
- package/dist/db/utils/tree-builder.js +38 -0
- package/dist/db/utils/tree-builder.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -0
- package/dist/parser/ast-parser.d.ts +23 -0
- package/dist/parser/ast-parser.d.ts.map +1 -0
- package/dist/parser/ast-parser.js +65 -0
- package/dist/parser/ast-parser.js.map +1 -0
- package/dist/parser/definition-extractor.d.ts +29 -0
- package/dist/parser/definition-extractor.d.ts.map +1 -0
- package/dist/parser/definition-extractor.js +379 -0
- package/dist/parser/definition-extractor.js.map +1 -0
- package/dist/parser/reference-extractor.d.ts +72 -0
- package/dist/parser/reference-extractor.d.ts.map +1 -0
- package/dist/parser/reference-extractor.js +759 -0
- package/dist/parser/reference-extractor.js.map +1 -0
- package/dist/utils/file-scanner.d.ts +6 -0
- package/dist/utils/file-scanner.d.ts.map +1 -0
- package/dist/utils/file-scanner.js +33 -0
- package/dist/utils/file-scanner.js.map +1 -0
- package/dist/web/api-transforms.d.ts +4 -0
- package/dist/web/api-transforms.d.ts.map +1 -0
- package/dist/web/api-transforms.js +4 -0
- package/dist/web/api-transforms.js.map +1 -0
- package/dist/web/server.d.ts +16 -0
- package/dist/web/server.d.ts.map +1 -0
- package/dist/web/server.js +229 -0
- package/dist/web/server.js.map +1 -0
- package/dist/web/server.test.d.ts +2 -0
- package/dist/web/server.test.d.ts.map +1 -0
- package/dist/web/server.test.js +505 -0
- package/dist/web/server.test.js.map +1 -0
- package/dist/web/transforms/flow-transforms.d.ts +117 -0
- package/dist/web/transforms/flow-transforms.d.ts.map +1 -0
- package/dist/web/transforms/flow-transforms.js +202 -0
- package/dist/web/transforms/flow-transforms.js.map +1 -0
- package/dist/web/transforms/index.d.ts +4 -0
- package/dist/web/transforms/index.d.ts.map +1 -0
- package/dist/web/transforms/index.js +4 -0
- package/dist/web/transforms/index.js.map +1 -0
- package/dist/web/transforms/module-transforms.d.ts +42 -0
- package/dist/web/transforms/module-transforms.d.ts.map +1 -0
- package/dist/web/transforms/module-transforms.js +64 -0
- package/dist/web/transforms/module-transforms.js.map +1 -0
- package/dist/web/transforms/symbol-transforms.d.ts +31 -0
- package/dist/web/transforms/symbol-transforms.d.ts.map +1 -0
- package/dist/web/transforms/symbol-transforms.js +95 -0
- package/dist/web/transforms/symbol-transforms.js.map +1 -0
- package/package.json +96 -0
- package/ui/dist/assets/index-DP3dRMlh.js +268 -0
- package/ui/dist/assets/index-DP3dRMlh.js.map +1 -0
- package/ui/dist/assets/index-Db204Xn1.css +1 -0
- package/ui/dist/index.html +67 -0
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CSV parser for LLM-generated flow output.
|
|
3
|
+
*
|
|
4
|
+
* Handles two output formats:
|
|
5
|
+
* 1. Entry point classification (Phase 1)
|
|
6
|
+
* 2. Flow construction with sub-flow references (Phase 2)
|
|
7
|
+
*/
|
|
8
|
+
import { extractCsvContent, parseCsvWithMapper, parseRow, safeParseInt, splitCsvLines } from './csv-utils.js';
|
|
9
|
+
/**
|
|
10
|
+
* Parse entry point classification output.
|
|
11
|
+
* Expected format: type,id,classification,confidence,reason
|
|
12
|
+
*/
|
|
13
|
+
export function parseEntryPointClassification(content) {
|
|
14
|
+
const { items, errors } = parseCsvWithMapper(content, {
|
|
15
|
+
minColumns: 5,
|
|
16
|
+
rowMapper: (cols, lineNum, errs) => {
|
|
17
|
+
const [type, idStr, classification, confidence, reason] = cols;
|
|
18
|
+
if (type !== 'entry')
|
|
19
|
+
return null; // Skip non-entry rows
|
|
20
|
+
const id = safeParseInt(idStr, 'ID', lineNum, errs);
|
|
21
|
+
if (id === null)
|
|
22
|
+
return null;
|
|
23
|
+
if (!isValidClassification(classification)) {
|
|
24
|
+
errs.push(`Line ${lineNum}: Invalid classification "${classification}"`);
|
|
25
|
+
return null;
|
|
26
|
+
}
|
|
27
|
+
if (!isValidConfidence(confidence)) {
|
|
28
|
+
errs.push(`Line ${lineNum}: Invalid confidence "${confidence}"`);
|
|
29
|
+
return null;
|
|
30
|
+
}
|
|
31
|
+
return { id, classification, confidence, reason };
|
|
32
|
+
},
|
|
33
|
+
});
|
|
34
|
+
return { entries: items, errors };
|
|
35
|
+
}
|
|
36
|
+
function isValidClassification(s) {
|
|
37
|
+
return s === 'top_level' || s === 'subflow_candidate' || s === 'internal';
|
|
38
|
+
}
|
|
39
|
+
function isValidConfidence(s) {
|
|
40
|
+
return s === 'high' || s === 'medium' || s === 'low';
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Parse flow construction output.
|
|
44
|
+
* Expected format:
|
|
45
|
+
* ```csv
|
|
46
|
+
* type,flow_id,field,value
|
|
47
|
+
* flow,1,name,"UserRegistration"
|
|
48
|
+
* flow,1,description,"Handles new user signup"
|
|
49
|
+
* flow,1,domain,"auth"
|
|
50
|
+
* flow,1,is_composite,"true"
|
|
51
|
+
* step,1,1,42
|
|
52
|
+
* step,1,2,subflow:ValidateUser
|
|
53
|
+
* step,1,3,89
|
|
54
|
+
* subflow_reason,1,2,"Delegates input validation to reusable validation flow"
|
|
55
|
+
* ```
|
|
56
|
+
*/
|
|
57
|
+
export function parseFlowConstruction(content) {
|
|
58
|
+
const errors = [];
|
|
59
|
+
const flowsMap = new Map();
|
|
60
|
+
const csv = extractCsvContent(content);
|
|
61
|
+
const lines = splitCsvLines(csv);
|
|
62
|
+
if (lines.length === 0) {
|
|
63
|
+
errors.push('Empty CSV content');
|
|
64
|
+
return { flows: [], errors };
|
|
65
|
+
}
|
|
66
|
+
// Validate header
|
|
67
|
+
const header = parseRow(lines[0]);
|
|
68
|
+
if (!header || header.length < 4) {
|
|
69
|
+
errors.push(`Invalid header: expected "type,flow_id,field,value", got "${lines[0]}"`);
|
|
70
|
+
return { flows: [], errors };
|
|
71
|
+
}
|
|
72
|
+
// Parse data rows
|
|
73
|
+
for (let i = 1; i < lines.length; i++) {
|
|
74
|
+
const line = lines[i].trim();
|
|
75
|
+
if (!line)
|
|
76
|
+
continue;
|
|
77
|
+
const parsed = parseRow(line);
|
|
78
|
+
if (!parsed || parsed.length < 4) {
|
|
79
|
+
errors.push(`Line ${i + 1}: Invalid row format`);
|
|
80
|
+
continue;
|
|
81
|
+
}
|
|
82
|
+
const [type, flowIdStr, field, value] = parsed;
|
|
83
|
+
const flowId = safeParseInt(flowIdStr, 'flow_id', i + 1, errors);
|
|
84
|
+
if (flowId === null)
|
|
85
|
+
continue;
|
|
86
|
+
// Ensure flow exists in map
|
|
87
|
+
if (!flowsMap.has(flowId)) {
|
|
88
|
+
flowsMap.set(flowId, {
|
|
89
|
+
id: flowId,
|
|
90
|
+
name: '',
|
|
91
|
+
description: '',
|
|
92
|
+
domain: null,
|
|
93
|
+
isComposite: false,
|
|
94
|
+
steps: [],
|
|
95
|
+
subflowReasons: new Map(),
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
const flow = flowsMap.get(flowId);
|
|
99
|
+
switch (type) {
|
|
100
|
+
case 'flow':
|
|
101
|
+
switch (field) {
|
|
102
|
+
case 'name':
|
|
103
|
+
flow.name = value.trim();
|
|
104
|
+
break;
|
|
105
|
+
case 'description':
|
|
106
|
+
flow.description = value.trim();
|
|
107
|
+
break;
|
|
108
|
+
case 'domain':
|
|
109
|
+
flow.domain = value.trim() || null;
|
|
110
|
+
break;
|
|
111
|
+
case 'is_composite':
|
|
112
|
+
flow.isComposite = value.trim().toLowerCase() === 'true';
|
|
113
|
+
break;
|
|
114
|
+
default:
|
|
115
|
+
errors.push(`Line ${i + 1}: Unknown flow field "${field}"`);
|
|
116
|
+
}
|
|
117
|
+
break;
|
|
118
|
+
case 'step': {
|
|
119
|
+
const stepOrder = safeParseInt(field, 'step order', i + 1, errors);
|
|
120
|
+
if (stepOrder === null)
|
|
121
|
+
continue;
|
|
122
|
+
const stepValue = value.trim();
|
|
123
|
+
if (stepValue.startsWith('subflow:')) {
|
|
124
|
+
const flowName = stepValue.slice(8).trim();
|
|
125
|
+
flow.steps.push({
|
|
126
|
+
type: 'subflow',
|
|
127
|
+
order: stepOrder,
|
|
128
|
+
flowName,
|
|
129
|
+
});
|
|
130
|
+
flow.isComposite = true;
|
|
131
|
+
}
|
|
132
|
+
else {
|
|
133
|
+
const defId = safeParseInt(stepValue, 'step definition ID', i + 1, errors);
|
|
134
|
+
if (defId === null)
|
|
135
|
+
continue;
|
|
136
|
+
flow.steps.push({
|
|
137
|
+
type: 'definition',
|
|
138
|
+
order: stepOrder,
|
|
139
|
+
id: defId,
|
|
140
|
+
});
|
|
141
|
+
}
|
|
142
|
+
break;
|
|
143
|
+
}
|
|
144
|
+
case 'subflow_reason': {
|
|
145
|
+
const stepOrder = safeParseInt(field, 'step order for subflow_reason', i + 1, errors);
|
|
146
|
+
if (stepOrder === null)
|
|
147
|
+
continue;
|
|
148
|
+
flow.subflowReasons.set(stepOrder, value.trim());
|
|
149
|
+
break;
|
|
150
|
+
}
|
|
151
|
+
default:
|
|
152
|
+
errors.push(`Line ${i + 1}: Unknown row type "${type}"`);
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
// Sort steps by order for each flow
|
|
156
|
+
for (const flow of flowsMap.values()) {
|
|
157
|
+
flow.steps.sort((a, b) => a.order - b.order);
|
|
158
|
+
}
|
|
159
|
+
return {
|
|
160
|
+
flows: Array.from(flowsMap.values()).filter((f) => f.name !== ''),
|
|
161
|
+
errors,
|
|
162
|
+
};
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* Parse gap filling suggestions.
|
|
166
|
+
* Expected format: type,symbol_id,target_flow_id,reason
|
|
167
|
+
*/
|
|
168
|
+
export function parseGapFillSuggestions(content) {
|
|
169
|
+
const { items, errors } = parseCsvWithMapper(content, {
|
|
170
|
+
minColumns: 4,
|
|
171
|
+
rowMapper: (cols, lineNum, errs) => {
|
|
172
|
+
const [type, symbolIdStr, targetFlowIdStr, reason] = cols;
|
|
173
|
+
if (!isValidGapFillType(type)) {
|
|
174
|
+
errs.push(`Line ${lineNum}: Invalid suggestion type "${type}"`);
|
|
175
|
+
return null;
|
|
176
|
+
}
|
|
177
|
+
const symbolId = safeParseInt(symbolIdStr, 'symbol_id', lineNum, errs);
|
|
178
|
+
if (symbolId === null)
|
|
179
|
+
return null;
|
|
180
|
+
const targetFlowId = targetFlowIdStr ? Number.parseInt(targetFlowIdStr, 10) : undefined;
|
|
181
|
+
if (type === 'add_to_existing' && (targetFlowId === undefined || Number.isNaN(targetFlowId))) {
|
|
182
|
+
errs.push(`Line ${lineNum}: add_to_existing requires valid target_flow_id`);
|
|
183
|
+
return null;
|
|
184
|
+
}
|
|
185
|
+
return {
|
|
186
|
+
type,
|
|
187
|
+
symbolId,
|
|
188
|
+
targetFlowId: targetFlowId && !Number.isNaN(targetFlowId) ? targetFlowId : undefined,
|
|
189
|
+
reason,
|
|
190
|
+
};
|
|
191
|
+
},
|
|
192
|
+
});
|
|
193
|
+
return { suggestions: items, errors };
|
|
194
|
+
}
|
|
195
|
+
function isValidGapFillType(s) {
|
|
196
|
+
return s === 'new_flow' || s === 'add_to_existing' || s === 'new_subflow';
|
|
197
|
+
}
|
|
198
|
+
//# sourceMappingURL=flow-csv.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"flow-csv.js","sourceRoot":"","sources":["../../../../src/commands/llm/_shared/flow-csv.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Prompt templates for LLM-driven hierarchical flow detection.
|
|
3
|
+
*/
|
|
4
|
+
import type { AnnotatedEdgeInfo, AnnotatedSymbolInfo, FlowCoverageStats } from '../../../db/schema.js';
|
|
5
|
+
export declare function buildEntryPointSystemPrompt(): string;
|
|
6
|
+
export interface EntryPointCandidate {
|
|
7
|
+
id: number;
|
|
8
|
+
name: string;
|
|
9
|
+
kind: string;
|
|
10
|
+
filePath: string;
|
|
11
|
+
incomingDeps: number;
|
|
12
|
+
outgoingDeps: number;
|
|
13
|
+
purpose: string | null;
|
|
14
|
+
domain: string[] | null;
|
|
15
|
+
role: string | null;
|
|
16
|
+
}
|
|
17
|
+
export declare function buildEntryPointUserPrompt(candidates: EntryPointCandidate[]): string;
|
|
18
|
+
export declare function buildFlowConstructionSystemPrompt(): string;
|
|
19
|
+
export interface FlowConstructionContext {
|
|
20
|
+
entryPoint: AnnotatedSymbolInfo;
|
|
21
|
+
neighborhood: {
|
|
22
|
+
nodes: AnnotatedSymbolInfo[];
|
|
23
|
+
edges: AnnotatedEdgeInfo[];
|
|
24
|
+
};
|
|
25
|
+
existingFlows: Array<{
|
|
26
|
+
id: number;
|
|
27
|
+
name: string;
|
|
28
|
+
description: string | null;
|
|
29
|
+
entryPointId: number;
|
|
30
|
+
}>;
|
|
31
|
+
existingSubflows: string[];
|
|
32
|
+
}
|
|
33
|
+
export declare function buildFlowConstructionUserPrompt(contexts: FlowConstructionContext[]): string;
|
|
34
|
+
export declare function buildGapFillingSystemPrompt(): string;
|
|
35
|
+
export interface GapFillingContext {
|
|
36
|
+
uncoveredSymbols: Array<{
|
|
37
|
+
id: number;
|
|
38
|
+
name: string;
|
|
39
|
+
kind: string;
|
|
40
|
+
filePath: string;
|
|
41
|
+
purpose: string | null;
|
|
42
|
+
domain: string[] | null;
|
|
43
|
+
role: string | null;
|
|
44
|
+
incomingDeps: number;
|
|
45
|
+
outgoingDeps: number;
|
|
46
|
+
}>;
|
|
47
|
+
existingFlows: Array<{
|
|
48
|
+
id: number;
|
|
49
|
+
name: string;
|
|
50
|
+
description: string | null;
|
|
51
|
+
stepCount: number;
|
|
52
|
+
}>;
|
|
53
|
+
coverageStats: {
|
|
54
|
+
covered: number;
|
|
55
|
+
total: number;
|
|
56
|
+
percentage: number;
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
export declare function buildGapFillingUserPrompt(context: GapFillingContext): string;
|
|
60
|
+
export declare function formatCoverageStats(stats: FlowCoverageStats): string;
|
|
61
|
+
//# sourceMappingURL=flow-prompts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"flow-prompts.d.ts","sourceRoot":"","sources":["../../../../src/commands/llm/_shared/flow-prompts.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAMvG,wBAAgB,2BAA2B,IAAI,MAAM,CA6CpD;AAED,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IACxB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CACrB;AAED,wBAAgB,yBAAyB,CAAC,UAAU,EAAE,mBAAmB,EAAE,GAAG,MAAM,CA0BnF;AAMD,wBAAgB,iCAAiC,IAAI,MAAM,CA4D1D;AAED,MAAM,WAAW,uBAAuB;IACtC,UAAU,EAAE,mBAAmB,CAAC;IAChC,YAAY,EAAE;QACZ,KAAK,EAAE,mBAAmB,EAAE,CAAC;QAC7B,KAAK,EAAE,iBAAiB,EAAE,CAAC;KAC5B,CAAC;IACF,aAAa,EAAE,KAAK,CAAC;QACnB,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;QAC3B,YAAY,EAAE,MAAM,CAAC;KACtB,CAAC,CAAC;IACH,gBAAgB,EAAE,MAAM,EAAE,CAAC;CAC5B;AAED,wBAAgB,+BAA+B,CAAC,QAAQ,EAAE,uBAAuB,EAAE,GAAG,MAAM,CAiE3F;AAMD,wBAAgB,2BAA2B,IAAI,MAAM,CAwCpD;AAED,MAAM,WAAW,iBAAiB;IAChC,gBAAgB,EAAE,KAAK,CAAC;QACtB,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,EAAE,MAAM,CAAC;QACjB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;QACvB,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;QACxB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;QACpB,YAAY,EAAE,MAAM,CAAC;QACrB,YAAY,EAAE,MAAM,CAAC;KACtB,CAAC,CAAC;IACH,aAAa,EAAE,KAAK,CAAC;QACnB,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;QAC3B,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC,CAAC;IACH,aAAa,EAAE;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,KAAK,EAAE,MAAM,CAAC;QACd,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;CACH;AAED,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,iBAAiB,GAAG,MAAM,CAuC5E;AAMD,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,iBAAiB,GAAG,MAAM,CASpE"}
|
|
@@ -0,0 +1,281 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Prompt templates for LLM-driven hierarchical flow detection.
|
|
3
|
+
*/
|
|
4
|
+
// ============================================
|
|
5
|
+
// Phase 1: Entry Point Classification
|
|
6
|
+
// ============================================
|
|
7
|
+
export function buildEntryPointSystemPrompt() {
|
|
8
|
+
return `You are a software architect analyzing entry points in a codebase.
|
|
9
|
+
|
|
10
|
+
## Your Task
|
|
11
|
+
Classify each candidate entry point into one of three categories:
|
|
12
|
+
1. **top_level**: Entry points for top-level execution flows (HTTP handlers, CLI commands, event handlers)
|
|
13
|
+
2. **subflow_candidate**: Reusable logic that appears to be called by multiple entry points (validation, common operations)
|
|
14
|
+
3. **internal**: Internal implementation details, not suitable as flow entry points
|
|
15
|
+
|
|
16
|
+
## Output Format
|
|
17
|
+
Respond with **only** a CSV table:
|
|
18
|
+
|
|
19
|
+
\`\`\`csv
|
|
20
|
+
type,id,classification,confidence,reason
|
|
21
|
+
entry,42,top_level,high,"HTTP controller handling POST /users"
|
|
22
|
+
entry,87,subflow_candidate,medium,"Validation logic called by multiple controllers"
|
|
23
|
+
entry,15,internal,high,"Private helper function"
|
|
24
|
+
\`\`\`
|
|
25
|
+
|
|
26
|
+
## Classification Guidelines
|
|
27
|
+
|
|
28
|
+
**top_level indicators:**
|
|
29
|
+
- Controllers, handlers, or routes receiving external requests
|
|
30
|
+
- CLI command entry points
|
|
31
|
+
- Event handlers processing external events
|
|
32
|
+
- Symbols with role=controller metadata
|
|
33
|
+
- Names containing "Controller", "Handler", "Route"
|
|
34
|
+
- Exported from routes/controllers/handlers directories
|
|
35
|
+
|
|
36
|
+
**subflow_candidate indicators:**
|
|
37
|
+
- High incoming dependency count (called by many)
|
|
38
|
+
- Names suggesting reusable operations: "validate", "process", "transform"
|
|
39
|
+
- Pure business logic without direct external interface
|
|
40
|
+
- Appears in multiple execution paths
|
|
41
|
+
|
|
42
|
+
**internal indicators:**
|
|
43
|
+
- Private or unexported helpers
|
|
44
|
+
- Low connectivity (few callers)
|
|
45
|
+
- Utility functions with generic names
|
|
46
|
+
- Implementation details not representing business operations
|
|
47
|
+
|
|
48
|
+
## Confidence Levels
|
|
49
|
+
- **high**: Clear indicators match the classification
|
|
50
|
+
- **medium**: Some indicators present, but not definitive
|
|
51
|
+
- **low**: Classification based on heuristics, may need review`;
|
|
52
|
+
}
|
|
53
|
+
export function buildEntryPointUserPrompt(candidates) {
|
|
54
|
+
const parts = [];
|
|
55
|
+
parts.push(`## Entry Point Candidates (${candidates.length})`);
|
|
56
|
+
parts.push('');
|
|
57
|
+
for (const c of candidates) {
|
|
58
|
+
parts.push(`### #${c.id}: ${c.name} (${c.kind})`);
|
|
59
|
+
parts.push(`File: ${c.filePath}`);
|
|
60
|
+
parts.push(`Connectivity: ${c.incomingDeps} incoming, ${c.outgoingDeps} outgoing`);
|
|
61
|
+
if (c.purpose) {
|
|
62
|
+
parts.push(`Purpose: "${c.purpose}"`);
|
|
63
|
+
}
|
|
64
|
+
if (c.domain && c.domain.length > 0) {
|
|
65
|
+
parts.push(`Domains: ${c.domain.join(', ')}`);
|
|
66
|
+
}
|
|
67
|
+
if (c.role) {
|
|
68
|
+
parts.push(`Role: ${c.role}`);
|
|
69
|
+
}
|
|
70
|
+
parts.push('');
|
|
71
|
+
}
|
|
72
|
+
parts.push('Classify each entry point in CSV format.');
|
|
73
|
+
return parts.join('\n');
|
|
74
|
+
}
|
|
75
|
+
// ============================================
|
|
76
|
+
// Phase 2: Flow Construction
|
|
77
|
+
// ============================================
|
|
78
|
+
export function buildFlowConstructionSystemPrompt() {
|
|
79
|
+
return `You are a software architect constructing execution flows from annotated code.
|
|
80
|
+
|
|
81
|
+
## Your Task
|
|
82
|
+
For each entry point, trace the logical execution path through the codebase to create a meaningful business flow.
|
|
83
|
+
|
|
84
|
+
## Key Concepts
|
|
85
|
+
|
|
86
|
+
**Atomic flows**: Sequences of definition steps (function/method calls)
|
|
87
|
+
**Composite flows**: Flows that include references to sub-flows
|
|
88
|
+
**Sub-flows**: Reusable patterns that can be referenced by name
|
|
89
|
+
|
|
90
|
+
## Output Format
|
|
91
|
+
Respond with **only** a CSV table:
|
|
92
|
+
|
|
93
|
+
\`\`\`csv
|
|
94
|
+
type,flow_id,field,value
|
|
95
|
+
flow,1,name,"UserRegistration"
|
|
96
|
+
flow,1,description,"Handles new user signup from request to confirmation"
|
|
97
|
+
flow,1,domain,"auth"
|
|
98
|
+
flow,1,is_composite,"true"
|
|
99
|
+
step,1,1,42
|
|
100
|
+
step,1,2,subflow:ValidateUser
|
|
101
|
+
step,1,3,89
|
|
102
|
+
step,1,4,subflow:SendWelcomeEmail
|
|
103
|
+
step,1,5,123
|
|
104
|
+
subflow_reason,1,2,"Delegates input validation to reusable validation flow"
|
|
105
|
+
subflow_reason,1,4,"Triggers async email notification flow"
|
|
106
|
+
\`\`\`
|
|
107
|
+
|
|
108
|
+
## Row Types
|
|
109
|
+
|
|
110
|
+
**flow rows:**
|
|
111
|
+
- \`flow,{id},name,{PascalCase name}\`
|
|
112
|
+
- \`flow,{id},description,{one-sentence description}\`
|
|
113
|
+
- \`flow,{id},domain,{primary domain}\`
|
|
114
|
+
- \`flow,{id},is_composite,{true|false}\`
|
|
115
|
+
|
|
116
|
+
**step rows:**
|
|
117
|
+
- \`step,{flow_id},{order},{definition_id}\` - Direct function call
|
|
118
|
+
- \`step,{flow_id},{order},subflow:{FlowName}\` - Reference to sub-flow
|
|
119
|
+
|
|
120
|
+
**subflow_reason rows:**
|
|
121
|
+
- \`subflow_reason,{flow_id},{step_order},{reason}\` - Why this sub-flow is invoked
|
|
122
|
+
|
|
123
|
+
## Construction Guidelines
|
|
124
|
+
|
|
125
|
+
1. **Follow call graph edges**: Each step should have a call edge to the next
|
|
126
|
+
2. **Identify sub-flow opportunities**:
|
|
127
|
+
- Validation logic reused across flows
|
|
128
|
+
- Common patterns like "send notification", "log action", "update cache"
|
|
129
|
+
- Sequences that appear in multiple flows
|
|
130
|
+
3. **Name flows by business operation**: CreateSale, UserLogin, ProcessPayment
|
|
131
|
+
4. **Order steps by execution sequence**: Follow the actual call order
|
|
132
|
+
5. **Use relationship annotations**: Leverage semantic descriptions to understand purpose
|
|
133
|
+
|
|
134
|
+
## Naming Conventions
|
|
135
|
+
- Flow names: PascalCase, action-oriented (CreateUser, ValidatePayment)
|
|
136
|
+
- Sub-flow names: PascalCase, describing the reusable operation (ValidateUser, SendEmail)
|
|
137
|
+
- Descriptions: One sentence, business-focused`;
|
|
138
|
+
}
|
|
139
|
+
export function buildFlowConstructionUserPrompt(contexts) {
|
|
140
|
+
const parts = [];
|
|
141
|
+
// List existing sub-flows that can be referenced
|
|
142
|
+
if (contexts.length > 0 && contexts[0].existingSubflows.length > 0) {
|
|
143
|
+
parts.push('## Available Sub-flows');
|
|
144
|
+
for (const name of contexts[0].existingSubflows) {
|
|
145
|
+
parts.push(`- ${name}`);
|
|
146
|
+
}
|
|
147
|
+
parts.push('');
|
|
148
|
+
}
|
|
149
|
+
// List existing flows for context
|
|
150
|
+
if (contexts.length > 0 && contexts[0].existingFlows.length > 0) {
|
|
151
|
+
parts.push('## Existing Flows');
|
|
152
|
+
for (const flow of contexts[0].existingFlows) {
|
|
153
|
+
const desc = flow.description ? `: ${flow.description}` : '';
|
|
154
|
+
parts.push(`- ${flow.name}${desc}`);
|
|
155
|
+
}
|
|
156
|
+
parts.push('');
|
|
157
|
+
}
|
|
158
|
+
parts.push(`## Entry Points to Trace (${contexts.length})`);
|
|
159
|
+
parts.push('');
|
|
160
|
+
for (let i = 0; i < contexts.length; i++) {
|
|
161
|
+
const ctx = contexts[i];
|
|
162
|
+
const flowId = i + 1;
|
|
163
|
+
parts.push(`### Flow ${flowId}: Entry Point #${ctx.entryPoint.id} - ${ctx.entryPoint.name}`);
|
|
164
|
+
parts.push(`File: ${ctx.entryPoint.filePath}:${ctx.entryPoint.line}`);
|
|
165
|
+
if (ctx.entryPoint.purpose) {
|
|
166
|
+
parts.push(`Purpose: "${ctx.entryPoint.purpose}"`);
|
|
167
|
+
}
|
|
168
|
+
if (ctx.entryPoint.domain && ctx.entryPoint.domain.length > 0) {
|
|
169
|
+
parts.push(`Domain: ${ctx.entryPoint.domain.join(', ')}`);
|
|
170
|
+
}
|
|
171
|
+
parts.push('');
|
|
172
|
+
// Show neighborhood nodes
|
|
173
|
+
parts.push('**Call Graph Neighborhood:**');
|
|
174
|
+
for (const node of ctx.neighborhood.nodes) {
|
|
175
|
+
const purpose = node.purpose ? ` - "${node.purpose}"` : '';
|
|
176
|
+
const role = node.role ? ` [${node.role}]` : '';
|
|
177
|
+
parts.push(`- #${node.id}: ${node.name} (${node.kind})${role}${purpose}`);
|
|
178
|
+
}
|
|
179
|
+
parts.push('');
|
|
180
|
+
// Show edges with semantic annotations
|
|
181
|
+
parts.push('**Call Relationships:**');
|
|
182
|
+
for (const edge of ctx.neighborhood.edges) {
|
|
183
|
+
const fromNode = ctx.neighborhood.nodes.find((n) => n.id === edge.fromId);
|
|
184
|
+
const toNode = ctx.neighborhood.nodes.find((n) => n.id === edge.toId);
|
|
185
|
+
if (fromNode && toNode) {
|
|
186
|
+
const semantic = edge.semantic ? `: "${edge.semantic}"` : '';
|
|
187
|
+
parts.push(`- ${fromNode.name} (#${edge.fromId}) → ${toNode.name} (#${edge.toId})${semantic}`);
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
parts.push('');
|
|
191
|
+
}
|
|
192
|
+
parts.push('Construct flows in CSV format. Reference sub-flows where appropriate.');
|
|
193
|
+
return parts.join('\n');
|
|
194
|
+
}
|
|
195
|
+
// ============================================
|
|
196
|
+
// Phase 3: Gap Filling
|
|
197
|
+
// ============================================
|
|
198
|
+
export function buildGapFillingSystemPrompt() {
|
|
199
|
+
return `You are a software architect analyzing coverage gaps in detected execution flows.
|
|
200
|
+
|
|
201
|
+
## Your Task
|
|
202
|
+
Review uncovered symbols and suggest how they should be incorporated into flows.
|
|
203
|
+
|
|
204
|
+
## Suggestion Types
|
|
205
|
+
|
|
206
|
+
1. **new_flow**: Symbol should be an entry point for a new top-level flow
|
|
207
|
+
2. **add_to_existing**: Symbol should be added as a step to an existing flow
|
|
208
|
+
3. **new_subflow**: Symbol represents reusable logic that should become a sub-flow
|
|
209
|
+
|
|
210
|
+
## Output Format
|
|
211
|
+
Respond with **only** a CSV table:
|
|
212
|
+
|
|
213
|
+
\`\`\`csv
|
|
214
|
+
type,symbol_id,target_flow_id,reason
|
|
215
|
+
new_flow,89,,"Payment validation should be a standalone flow"
|
|
216
|
+
add_to_existing,156,3,"Should be added to CreateSale flow as notification step"
|
|
217
|
+
new_subflow,42,,"Appears in multiple flows as common validation pattern"
|
|
218
|
+
\`\`\`
|
|
219
|
+
|
|
220
|
+
## Guidelines
|
|
221
|
+
|
|
222
|
+
**When to suggest new_flow:**
|
|
223
|
+
- Symbol has characteristics of an entry point
|
|
224
|
+
- Represents a distinct business operation not covered by existing flows
|
|
225
|
+
- Has outgoing dependencies forming a logical execution path
|
|
226
|
+
|
|
227
|
+
**When to suggest add_to_existing:**
|
|
228
|
+
- Symbol is called by or calls symbols in an existing flow
|
|
229
|
+
- Logically belongs to an existing flow's execution path
|
|
230
|
+
- Would complete or enhance an existing flow
|
|
231
|
+
|
|
232
|
+
**When to suggest new_subflow:**
|
|
233
|
+
- Symbol is called by multiple existing flows
|
|
234
|
+
- Represents reusable business logic (validation, notification, etc.)
|
|
235
|
+
- Would reduce duplication if extracted as sub-flow
|
|
236
|
+
|
|
237
|
+
Prioritize symbols with high connectivity - they're more likely to be important.`;
|
|
238
|
+
}
|
|
239
|
+
export function buildGapFillingUserPrompt(context) {
|
|
240
|
+
const parts = [];
|
|
241
|
+
parts.push('## Current Coverage');
|
|
242
|
+
parts.push(`${context.coverageStats.covered}/${context.coverageStats.total} symbols covered (${context.coverageStats.percentage.toFixed(1)}%)`);
|
|
243
|
+
parts.push('');
|
|
244
|
+
parts.push('## Existing Flows');
|
|
245
|
+
for (const flow of context.existingFlows) {
|
|
246
|
+
const desc = flow.description ? `: ${flow.description}` : '';
|
|
247
|
+
parts.push(`- [${flow.id}] ${flow.name} (${flow.stepCount} steps)${desc}`);
|
|
248
|
+
}
|
|
249
|
+
parts.push('');
|
|
250
|
+
parts.push(`## Uncovered Important Symbols (${context.uncoveredSymbols.length})`);
|
|
251
|
+
parts.push('');
|
|
252
|
+
for (const sym of context.uncoveredSymbols) {
|
|
253
|
+
parts.push(`### #${sym.id}: ${sym.name} (${sym.kind})`);
|
|
254
|
+
parts.push(`File: ${sym.filePath}`);
|
|
255
|
+
parts.push(`Connectivity: ${sym.incomingDeps} incoming, ${sym.outgoingDeps} outgoing`);
|
|
256
|
+
if (sym.purpose) {
|
|
257
|
+
parts.push(`Purpose: "${sym.purpose}"`);
|
|
258
|
+
}
|
|
259
|
+
if (sym.domain && sym.domain.length > 0) {
|
|
260
|
+
parts.push(`Domains: ${sym.domain.join(', ')}`);
|
|
261
|
+
}
|
|
262
|
+
if (sym.role) {
|
|
263
|
+
parts.push(`Role: ${sym.role}`);
|
|
264
|
+
}
|
|
265
|
+
parts.push('');
|
|
266
|
+
}
|
|
267
|
+
parts.push('Suggest how to incorporate these symbols in CSV format.');
|
|
268
|
+
return parts.join('\n');
|
|
269
|
+
}
|
|
270
|
+
// ============================================
|
|
271
|
+
// Coverage Formatting
|
|
272
|
+
// ============================================
|
|
273
|
+
export function formatCoverageStats(stats) {
|
|
274
|
+
const parts = [];
|
|
275
|
+
parts.push('## Flow Coverage Statistics');
|
|
276
|
+
parts.push('');
|
|
277
|
+
parts.push(`Total interactions: ${stats.totalInteractions}`);
|
|
278
|
+
parts.push(`Covered by flows: ${stats.coveredByFlows} (${stats.percentage.toFixed(1)}%)`);
|
|
279
|
+
return parts.join('\n');
|
|
280
|
+
}
|
|
281
|
+
//# sourceMappingURL=flow-prompts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"flow-prompts.js","sourceRoot":"","sources":["../../../../src/commands/llm/_shared/flow-prompts.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Flow and interaction validation logic.
|
|
3
|
+
*/
|
|
4
|
+
import type { IndexDatabase } from '../../../db/database.js';
|
|
5
|
+
import type { Flow, Interaction, InteractionWithPaths } from '../../../db/schema.js';
|
|
6
|
+
export interface ValidationOptions {
|
|
7
|
+
maxSteps: number;
|
|
8
|
+
}
|
|
9
|
+
export declare const DEFAULT_VALIDATION_OPTIONS: ValidationOptions;
|
|
10
|
+
export type FlowValidationErrorType = 'invalid_entry_point_module' | 'invalid_entry_point' | 'invalid_interaction_id' | 'max_steps_exceeded' | 'duplicate_slug';
|
|
11
|
+
export interface FlowValidationError {
|
|
12
|
+
type: FlowValidationErrorType;
|
|
13
|
+
message: string;
|
|
14
|
+
flowId?: number;
|
|
15
|
+
flowName?: string;
|
|
16
|
+
}
|
|
17
|
+
export type FlowValidationWarningType = 'no_steps' | 'missing_description';
|
|
18
|
+
export interface FlowValidationWarning {
|
|
19
|
+
type: FlowValidationWarningType;
|
|
20
|
+
message: string;
|
|
21
|
+
severity: 'low' | 'medium' | 'high';
|
|
22
|
+
}
|
|
23
|
+
export interface FlowValidationResult {
|
|
24
|
+
valid: boolean;
|
|
25
|
+
errors: FlowValidationError[];
|
|
26
|
+
warnings: FlowValidationWarning[];
|
|
27
|
+
}
|
|
28
|
+
export declare class FlowValidator {
|
|
29
|
+
private db;
|
|
30
|
+
private options;
|
|
31
|
+
constructor(db: IndexDatabase, options?: ValidationOptions);
|
|
32
|
+
/**
|
|
33
|
+
* Validate a single flow.
|
|
34
|
+
*/
|
|
35
|
+
validateFlow(flow: Flow): FlowValidationResult;
|
|
36
|
+
/**
|
|
37
|
+
* Validate all flows in the database.
|
|
38
|
+
*/
|
|
39
|
+
validateAllFlows(): Map<number, FlowValidationResult>;
|
|
40
|
+
/**
|
|
41
|
+
* Find duplicate slugs.
|
|
42
|
+
*/
|
|
43
|
+
findDuplicateSlugs(): Array<{
|
|
44
|
+
slug: string;
|
|
45
|
+
flows: Flow[];
|
|
46
|
+
}>;
|
|
47
|
+
}
|
|
48
|
+
export interface InteractionValidationError {
|
|
49
|
+
type: 'invalid_module_id';
|
|
50
|
+
message: string;
|
|
51
|
+
interactionId: number;
|
|
52
|
+
}
|
|
53
|
+
export declare function validateInteraction(db: IndexDatabase, interaction: Interaction): InteractionValidationError[];
|
|
54
|
+
export interface CoverageGap {
|
|
55
|
+
fromModuleId: number;
|
|
56
|
+
toModuleId: number;
|
|
57
|
+
fromModulePath: string;
|
|
58
|
+
toModulePath: string;
|
|
59
|
+
weight: number;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Find interactions not covered by any flow.
|
|
63
|
+
*/
|
|
64
|
+
export declare function findUncoveredInteractions(db: IndexDatabase): InteractionWithPaths[];
|
|
65
|
+
/**
|
|
66
|
+
* Find module edges that don't have interactions.
|
|
67
|
+
*/
|
|
68
|
+
export declare function findMissingInteractions(db: IndexDatabase): CoverageGap[];
|
|
69
|
+
//# sourceMappingURL=flow-validation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"flow-validation.d.ts","sourceRoot":"","sources":["../../../../src/commands/llm/_shared/flow-validation.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAMrF,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,eAAO,MAAM,0BAA0B,EAAE,iBAExC,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAC/B,4BAA4B,GAC5B,qBAAqB,GACrB,wBAAwB,GACxB,oBAAoB,GACpB,gBAAgB,CAAC;AAErB,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,uBAAuB,CAAC;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,MAAM,yBAAyB,GAAG,UAAU,GAAG,qBAAqB,CAAC;AAE3E,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,yBAAyB,CAAC;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;CACrC;AAED,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,mBAAmB,EAAE,CAAC;IAC9B,QAAQ,EAAE,qBAAqB,EAAE,CAAC;CACnC;AAMD,qBAAa,aAAa;IAEtB,OAAO,CAAC,EAAE;IACV,OAAO,CAAC,OAAO;gBADP,EAAE,EAAE,aAAa,EACjB,OAAO,GAAE,iBAA8C;IAGjE;;OAEG;IACH,YAAY,CAAC,IAAI,EAAE,IAAI,GAAG,oBAAoB;IA+E9C;;OAEG;IACH,gBAAgB,IAAI,GAAG,CAAC,MAAM,EAAE,oBAAoB,CAAC;IAWrD;;OAEG;IACH,kBAAkB,IAAI,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,IAAI,EAAE,CAAA;KAAE,CAAC;CAmB7D;AAMD,MAAM,WAAW,0BAA0B;IACzC,IAAI,EAAE,mBAAmB,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,aAAa,EAAE,WAAW,EAAE,WAAW,GAAG,0BAA0B,EAAE,CAsB7G;AAMD,MAAM,WAAW,WAAW;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,EAAE,EAAE,aAAa,GAAG,oBAAoB,EAAE,CAEnF;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,EAAE,EAAE,aAAa,GAAG,WAAW,EAAE,CA6BxE"}
|