@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,388 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* EntryPointDetector - LLM-based entry point module classification.
|
|
3
|
+
* Identifies modules and their members that serve as entry points for user flows.
|
|
4
|
+
*/
|
|
5
|
+
import { parseRow } from '../_shared/csv-utils.js';
|
|
6
|
+
import { completeWithLogging, getErrorMessage, logLlmRequest, logLlmResponse, logVerbose, logWarning, } from '../_shared/llm-utils.js';
|
|
7
|
+
export class EntryPointDetector {
|
|
8
|
+
db;
|
|
9
|
+
command;
|
|
10
|
+
isJson;
|
|
11
|
+
verbose;
|
|
12
|
+
memberClassifications = [];
|
|
13
|
+
constructor(db, command, isJson, verbose) {
|
|
14
|
+
this.db = db;
|
|
15
|
+
this.command = command;
|
|
16
|
+
this.isJson = isJson;
|
|
17
|
+
this.verbose = verbose;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Detect entry point modules using LLM classification.
|
|
21
|
+
*/
|
|
22
|
+
async detectEntryPointModules(model, llmOptions) {
|
|
23
|
+
const allModulesWithMembers = this.db.modules.getAllWithMembers();
|
|
24
|
+
// Build module candidates (only modules with members, skip test modules)
|
|
25
|
+
const candidates = [];
|
|
26
|
+
for (const mod of allModulesWithMembers) {
|
|
27
|
+
if (mod.members.length === 0)
|
|
28
|
+
continue;
|
|
29
|
+
if (mod.isTest)
|
|
30
|
+
continue; // Test modules are never entry points
|
|
31
|
+
// Skip modules where ALL members are type-only (no callable code)
|
|
32
|
+
const callableKinds = new Set(['function', 'class', 'const', 'variable', 'method']);
|
|
33
|
+
const hasCallableMembers = mod.members.some((m) => callableKinds.has(m.kind));
|
|
34
|
+
if (!hasCallableMembers)
|
|
35
|
+
continue;
|
|
36
|
+
candidates.push({
|
|
37
|
+
id: mod.id,
|
|
38
|
+
fullPath: mod.fullPath,
|
|
39
|
+
name: mod.name,
|
|
40
|
+
description: mod.description,
|
|
41
|
+
depth: mod.depth,
|
|
42
|
+
memberCount: mod.members.length,
|
|
43
|
+
members: mod.members.map((m) => ({
|
|
44
|
+
definitionId: m.definitionId,
|
|
45
|
+
name: m.name,
|
|
46
|
+
kind: m.kind,
|
|
47
|
+
})),
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
if (candidates.length === 0) {
|
|
51
|
+
return [];
|
|
52
|
+
}
|
|
53
|
+
// Classify with LLM
|
|
54
|
+
let classifications;
|
|
55
|
+
try {
|
|
56
|
+
classifications = await this.classifyModulesAsEntryPoints(candidates, model, llmOptions);
|
|
57
|
+
logVerbose(this.command, ` LLM classified ${classifications.filter((c) => c.isEntryPoint).length}/${candidates.length} modules as entry points`, this.verbose, this.isJson);
|
|
58
|
+
}
|
|
59
|
+
catch (error) {
|
|
60
|
+
const message = getErrorMessage(error);
|
|
61
|
+
logWarning(this.command, ` LLM classification failed: ${message}`, this.isJson);
|
|
62
|
+
if (!this.isJson) {
|
|
63
|
+
this.command.log(' Falling back to heuristic detection');
|
|
64
|
+
}
|
|
65
|
+
classifications = candidates.map((c) => ({
|
|
66
|
+
moduleId: c.id,
|
|
67
|
+
isEntryPoint: this.isLikelyEntryPointModuleHeuristic(c),
|
|
68
|
+
confidence: 'low',
|
|
69
|
+
reason: 'Heuristic fallback',
|
|
70
|
+
}));
|
|
71
|
+
}
|
|
72
|
+
return this.buildEntryPointModules(classifications, candidates);
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Get stored member classifications (available after detectEntryPointModules is called).
|
|
76
|
+
*/
|
|
77
|
+
getMemberClassifications() {
|
|
78
|
+
return this.memberClassifications;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Use LLM to classify modules and their member functions for user journey detection.
|
|
82
|
+
*/
|
|
83
|
+
async classifyModulesAsEntryPoints(candidates, model, llmOptions) {
|
|
84
|
+
const memberClassifications = await this.classifyModuleMembers(candidates, model, llmOptions);
|
|
85
|
+
this.memberClassifications = memberClassifications;
|
|
86
|
+
// Aggregate: a module is an entry point if ANY member is an entry point
|
|
87
|
+
const moduleEntryStatus = new Map();
|
|
88
|
+
for (const mc of memberClassifications) {
|
|
89
|
+
const existing = moduleEntryStatus.get(mc.moduleId);
|
|
90
|
+
if (mc.isEntryPoint) {
|
|
91
|
+
moduleEntryStatus.set(mc.moduleId, { isEntry: true, reason: mc.reason });
|
|
92
|
+
}
|
|
93
|
+
else if (!existing) {
|
|
94
|
+
moduleEntryStatus.set(mc.moduleId, { isEntry: false, reason: mc.reason });
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
return candidates.map((c) => {
|
|
98
|
+
const status = moduleEntryStatus.get(c.id);
|
|
99
|
+
return {
|
|
100
|
+
moduleId: c.id,
|
|
101
|
+
isEntryPoint: status?.isEntry ?? this.isLikelyEntryPointModuleHeuristic(c),
|
|
102
|
+
confidence: 'medium',
|
|
103
|
+
reason: status?.reason ?? 'Heuristic fallback',
|
|
104
|
+
};
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Use LLM to classify module members with action types and target entities.
|
|
109
|
+
*/
|
|
110
|
+
async classifyModuleMembers(candidates, model, llmOptions) {
|
|
111
|
+
const interactions = this.db.callGraph.getEnrichedModuleCallGraph();
|
|
112
|
+
const relationships = this.db.relationships.getAll({ limit: 200 });
|
|
113
|
+
const systemPrompt = this.buildClassificationSystemPrompt();
|
|
114
|
+
const moduleList = this.buildModuleContext(candidates);
|
|
115
|
+
const interactionList = this.buildInteractionContext(interactions, candidates);
|
|
116
|
+
const relationshipList = this.buildRelationshipContext(relationships, candidates);
|
|
117
|
+
const userPrompt = `## Modules (${candidates.length})
|
|
118
|
+
${moduleList}
|
|
119
|
+
|
|
120
|
+
## Module Interactions (which modules call which)
|
|
121
|
+
${interactionList || '(No interaction data available)'}
|
|
122
|
+
|
|
123
|
+
## Symbol Relationships (semantic connections)
|
|
124
|
+
${relationshipList || '(No relationship annotations available)'}
|
|
125
|
+
|
|
126
|
+
Identify all user-facing actions for each entry point module. A screen component may have multiple actions if it calls different hooks/mutations.`;
|
|
127
|
+
const logOptions = {
|
|
128
|
+
showRequests: llmOptions.showLlmRequests,
|
|
129
|
+
showResponses: llmOptions.showLlmResponses,
|
|
130
|
+
isJson: this.isJson,
|
|
131
|
+
};
|
|
132
|
+
logLlmRequest(this.command, 'classifyModuleMembers', systemPrompt, userPrompt, logOptions);
|
|
133
|
+
const response = await completeWithLogging({
|
|
134
|
+
model,
|
|
135
|
+
systemPrompt,
|
|
136
|
+
userPrompt,
|
|
137
|
+
temperature: 0,
|
|
138
|
+
command: this.command,
|
|
139
|
+
isJson: this.isJson,
|
|
140
|
+
});
|
|
141
|
+
logLlmResponse(this.command, 'classifyModuleMembers', response, logOptions);
|
|
142
|
+
return this.parseMemberClassificationCSV(response, candidates);
|
|
143
|
+
}
|
|
144
|
+
buildClassificationSystemPrompt() {
|
|
145
|
+
return `You are analyzing a codebase to identify user-facing flows and their actions.
|
|
146
|
+
|
|
147
|
+
## Context Provided
|
|
148
|
+
You have access to:
|
|
149
|
+
1. **Modules** - code organization with their exported members
|
|
150
|
+
2. **Interactions** - which modules call which, and which specific symbols are called
|
|
151
|
+
3. **Relationships** - semantic descriptions of symbol-to-symbol connections
|
|
152
|
+
|
|
153
|
+
## Task
|
|
154
|
+
For each entry point module (screens, pages, routes, controllers), identify ALL user-facing actions including those that go through hooks/services.
|
|
155
|
+
|
|
156
|
+
Key insight: A screen component like "Customers" may call hooks like "useCreateCustomer", "useDeleteCustomer". These represent separate user actions even though they're not direct members of the screen module.
|
|
157
|
+
|
|
158
|
+
## Action Type Guidelines
|
|
159
|
+
- **view**: Displays data - list views, detail views, dashboards
|
|
160
|
+
- **create**: Adds new records - uses hooks/services with "create", "add", "new"
|
|
161
|
+
- **update**: Modifies existing - uses hooks/services with "update", "edit", "save"
|
|
162
|
+
- **delete**: Removes records - uses hooks/services with "delete", "remove"
|
|
163
|
+
- **process**: Non-CRUD - login, logout, sync, export
|
|
164
|
+
|
|
165
|
+
## Output Format
|
|
166
|
+
\`\`\`csv
|
|
167
|
+
module_id,member_name,is_entry_point,action_type,target_entity,reason
|
|
168
|
+
42,Customers,true,view,customer,"Main component displaying customer list"
|
|
169
|
+
42,Customers,true,create,customer,"Calls useCreateCustomer hook for new customers"
|
|
170
|
+
42,Customers,true,update,customer,"Calls useUpdateCustomer hook"
|
|
171
|
+
42,Customers,true,delete,customer,"Calls useDeleteCustomer hook"
|
|
172
|
+
\`\`\`
|
|
173
|
+
|
|
174
|
+
IMPORTANT: A single component can have MULTIPLE action types if it calls multiple mutation hooks.
|
|
175
|
+
Only mark as is_entry_point=true if it's user-initiated (UI event, API endpoint).
|
|
176
|
+
Internal services/utilities should be is_entry_point=false.
|
|
177
|
+
|
|
178
|
+
## CRITICAL: Test Code Exclusion
|
|
179
|
+
Test helpers, mock factories, test fixtures, spec runners, and test utilities are NEVER entry points.
|
|
180
|
+
Only production code that real end-users or external clients interact with should be classified as entry points.
|
|
181
|
+
If a module exists solely to support testing (generating test data, mocking services, setting up test state),
|
|
182
|
+
mark ALL its members as is_entry_point=false regardless of their names.
|
|
183
|
+
|
|
184
|
+
## CRITICAL: Type-Only Module Exclusion
|
|
185
|
+
Modules containing only interfaces, types, and enums are data structure definitions, NOT entry points.`;
|
|
186
|
+
}
|
|
187
|
+
buildModuleContext(candidates) {
|
|
188
|
+
return candidates
|
|
189
|
+
.map((m) => {
|
|
190
|
+
let desc = `## Module ${m.id}: ${m.fullPath}`;
|
|
191
|
+
if (m.description)
|
|
192
|
+
desc += `\nDescription: ${m.description}`;
|
|
193
|
+
desc += `\nName: ${m.name}`;
|
|
194
|
+
desc += '\nMembers:';
|
|
195
|
+
for (const mem of m.members) {
|
|
196
|
+
desc += `\n - ${mem.name} (${mem.kind})`;
|
|
197
|
+
}
|
|
198
|
+
return desc;
|
|
199
|
+
})
|
|
200
|
+
.join('\n\n');
|
|
201
|
+
}
|
|
202
|
+
buildInteractionContext(interactions, candidates) {
|
|
203
|
+
const candidateIds = new Set(candidates.map((c) => c.id));
|
|
204
|
+
const relevant = interactions.filter((i) => candidateIds.has(i.fromModuleId) || candidateIds.has(i.toModuleId));
|
|
205
|
+
if (relevant.length === 0)
|
|
206
|
+
return '';
|
|
207
|
+
return relevant
|
|
208
|
+
.map((i) => {
|
|
209
|
+
const symbols = i.calledSymbols.map((s) => s.name).join(', ');
|
|
210
|
+
return `${i.fromModulePath} → ${i.toModulePath}: calls [${symbols}]`;
|
|
211
|
+
})
|
|
212
|
+
.join('\n');
|
|
213
|
+
}
|
|
214
|
+
buildRelationshipContext(relationships, candidates) {
|
|
215
|
+
const defIds = new Set(candidates.flatMap((c) => c.members.map((m) => m.definitionId)));
|
|
216
|
+
const relevant = relationships.filter((r) => defIds.has(r.fromDefinitionId) || defIds.has(r.toDefinitionId));
|
|
217
|
+
if (relevant.length === 0)
|
|
218
|
+
return '';
|
|
219
|
+
return relevant.map((r) => `${r.fromName} → ${r.toName}: "${r.semantic}"`).join('\n');
|
|
220
|
+
}
|
|
221
|
+
parseMemberClassificationCSV(response, candidates) {
|
|
222
|
+
const results = [];
|
|
223
|
+
const csvMatch = response.match(/```csv\n([\s\S]*?)\n```/) || response.match(/```\n([\s\S]*?)\n```/);
|
|
224
|
+
const csvContent = csvMatch ? csvMatch[1] : response;
|
|
225
|
+
const lines = csvContent.split('\n').filter((l) => l.trim() && !l.startsWith('module_id,'));
|
|
226
|
+
const candidateMap = new Map(candidates.map((c) => [c.id, c]));
|
|
227
|
+
for (const line of lines) {
|
|
228
|
+
const fields = parseRow(line);
|
|
229
|
+
if (!fields || fields.length < 6)
|
|
230
|
+
continue;
|
|
231
|
+
const moduleId = Number.parseInt(fields[0].trim(), 10);
|
|
232
|
+
if (!candidateMap.has(moduleId))
|
|
233
|
+
continue;
|
|
234
|
+
const memberName = fields[1].trim();
|
|
235
|
+
const isEntryPoint = fields[2].trim().toLowerCase() === 'true';
|
|
236
|
+
const actionTypeRaw = fields[3].trim().toLowerCase();
|
|
237
|
+
const targetEntity = fields[4].trim() || null;
|
|
238
|
+
const reason = fields[5].trim().replace(/"/g, '');
|
|
239
|
+
const validActions = ['view', 'create', 'update', 'delete', 'process'];
|
|
240
|
+
const actionType = validActions.includes(actionTypeRaw) ? actionTypeRaw : null;
|
|
241
|
+
results.push({
|
|
242
|
+
moduleId,
|
|
243
|
+
memberName,
|
|
244
|
+
isEntryPoint,
|
|
245
|
+
actionType,
|
|
246
|
+
targetEntity: targetEntity || null,
|
|
247
|
+
reason,
|
|
248
|
+
});
|
|
249
|
+
}
|
|
250
|
+
// Add fallback for any members not in response
|
|
251
|
+
for (const candidate of candidates) {
|
|
252
|
+
for (const member of candidate.members) {
|
|
253
|
+
if (!results.find((r) => r.moduleId === candidate.id && r.memberName === member.name)) {
|
|
254
|
+
const inferred = this.inferMemberActionType(member.name, candidate.fullPath);
|
|
255
|
+
results.push({
|
|
256
|
+
moduleId: candidate.id,
|
|
257
|
+
memberName: member.name,
|
|
258
|
+
isEntryPoint: this.isLikelyEntryPointMemberHeuristic(member.name, candidate),
|
|
259
|
+
actionType: inferred.actionType,
|
|
260
|
+
targetEntity: inferred.targetEntity,
|
|
261
|
+
reason: 'Not in LLM response, using heuristic',
|
|
262
|
+
});
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
return results;
|
|
267
|
+
}
|
|
268
|
+
inferMemberActionType(memberName, modulePath) {
|
|
269
|
+
const name = memberName.toLowerCase();
|
|
270
|
+
const path = modulePath.toLowerCase();
|
|
271
|
+
let actionType = null;
|
|
272
|
+
if (name.includes('create') || name.includes('add') || name.includes('new') || name.includes('insert')) {
|
|
273
|
+
actionType = 'create';
|
|
274
|
+
}
|
|
275
|
+
else if (name.includes('update') || name.includes('edit') || name.includes('modify') || name.includes('save')) {
|
|
276
|
+
actionType = 'update';
|
|
277
|
+
}
|
|
278
|
+
else if (name.includes('delete') || name.includes('remove')) {
|
|
279
|
+
actionType = 'delete';
|
|
280
|
+
}
|
|
281
|
+
else if (name.includes('list') || name.includes('view') || name.includes('get') || name.includes('show')) {
|
|
282
|
+
actionType = 'view';
|
|
283
|
+
}
|
|
284
|
+
else if (name.includes('login') ||
|
|
285
|
+
name.includes('logout') ||
|
|
286
|
+
name.includes('auth') ||
|
|
287
|
+
name.includes('process') ||
|
|
288
|
+
name.includes('sync')) {
|
|
289
|
+
actionType = 'process';
|
|
290
|
+
}
|
|
291
|
+
let targetEntity = null;
|
|
292
|
+
const entityPatterns = ['customer', 'vehicle', 'sale', 'user', 'order', 'product', 'inventory', 'dashboard'];
|
|
293
|
+
for (const entity of entityPatterns) {
|
|
294
|
+
if (name.includes(entity) || path.includes(entity)) {
|
|
295
|
+
targetEntity = entity;
|
|
296
|
+
break;
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
if (!targetEntity) {
|
|
300
|
+
const pathParts = modulePath.split('.');
|
|
301
|
+
const lastPart = pathParts[pathParts.length - 1]?.toLowerCase();
|
|
302
|
+
if (lastPart && !['screen', 'page', 'view', 'handler', 'controller'].includes(lastPart)) {
|
|
303
|
+
targetEntity = lastPart;
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
return { actionType, targetEntity };
|
|
307
|
+
}
|
|
308
|
+
isLikelyEntryPointMemberHeuristic(memberName, module) {
|
|
309
|
+
const name = memberName.toLowerCase();
|
|
310
|
+
const path = module.fullPath.toLowerCase();
|
|
311
|
+
if (name.includes('handle') || name.includes('screen') || name.includes('page'))
|
|
312
|
+
return true;
|
|
313
|
+
if (name.endsWith('list') || name.endsWith('view') || name.endsWith('form'))
|
|
314
|
+
return true;
|
|
315
|
+
if (path.includes('screen') || path.includes('page') || path.includes('route'))
|
|
316
|
+
return true;
|
|
317
|
+
return false;
|
|
318
|
+
}
|
|
319
|
+
isLikelyEntryPointModuleHeuristic(candidate) {
|
|
320
|
+
const path = candidate.fullPath.toLowerCase();
|
|
321
|
+
if (path.includes('page') || path.includes('screen') || path.includes('view'))
|
|
322
|
+
return true;
|
|
323
|
+
if (path.includes('route') || path.includes('api') || path.includes('endpoint'))
|
|
324
|
+
return true;
|
|
325
|
+
if (path.includes('handler') || path.includes('controller'))
|
|
326
|
+
return true;
|
|
327
|
+
if (path.includes('command') || path.includes('cli'))
|
|
328
|
+
return true;
|
|
329
|
+
if (path.includes('util') || path.includes('helper') || path.includes('common'))
|
|
330
|
+
return false;
|
|
331
|
+
if (path.includes('lib') || path.includes('shared') || path.includes('core'))
|
|
332
|
+
return false;
|
|
333
|
+
if (path.includes('service') || path.includes('repository') || path.includes('model'))
|
|
334
|
+
return false;
|
|
335
|
+
const memberNames = candidate.members.map((m) => m.name.toLowerCase());
|
|
336
|
+
const hasHandlerLikeMember = memberNames.some((n) => n.includes('handle') || n.includes('route') || n.includes('page'));
|
|
337
|
+
if (hasHandlerLikeMember)
|
|
338
|
+
return true;
|
|
339
|
+
return false;
|
|
340
|
+
}
|
|
341
|
+
buildEntryPointModules(classifications, candidates) {
|
|
342
|
+
const entryPointModules = [];
|
|
343
|
+
for (const classification of classifications) {
|
|
344
|
+
if (!classification.isEntryPoint)
|
|
345
|
+
continue;
|
|
346
|
+
const mod = candidates.find((c) => c.id === classification.moduleId);
|
|
347
|
+
if (!mod)
|
|
348
|
+
continue;
|
|
349
|
+
const moduleClassifications = this.memberClassifications.filter((mc) => mc.moduleId === mod.id && mc.isEntryPoint);
|
|
350
|
+
const memberDefinitions = [];
|
|
351
|
+
for (const mc of moduleClassifications) {
|
|
352
|
+
const member = mod.members.find((m) => m.name === mc.memberName);
|
|
353
|
+
if (member) {
|
|
354
|
+
memberDefinitions.push({
|
|
355
|
+
id: member.definitionId,
|
|
356
|
+
name: member.name,
|
|
357
|
+
kind: member.kind,
|
|
358
|
+
actionType: mc.actionType,
|
|
359
|
+
targetEntity: mc.targetEntity,
|
|
360
|
+
});
|
|
361
|
+
}
|
|
362
|
+
}
|
|
363
|
+
// For members without any classification, add them with null action type
|
|
364
|
+
for (const member of mod.members) {
|
|
365
|
+
const hasClassification = moduleClassifications.some((mc) => mc.memberName === member.name);
|
|
366
|
+
if (!hasClassification) {
|
|
367
|
+
memberDefinitions.push({
|
|
368
|
+
id: member.definitionId,
|
|
369
|
+
name: member.name,
|
|
370
|
+
kind: member.kind,
|
|
371
|
+
actionType: null,
|
|
372
|
+
targetEntity: null,
|
|
373
|
+
});
|
|
374
|
+
}
|
|
375
|
+
}
|
|
376
|
+
if (memberDefinitions.length > 0) {
|
|
377
|
+
entryPointModules.push({
|
|
378
|
+
moduleId: mod.id,
|
|
379
|
+
modulePath: mod.fullPath,
|
|
380
|
+
moduleName: mod.name,
|
|
381
|
+
memberDefinitions,
|
|
382
|
+
});
|
|
383
|
+
}
|
|
384
|
+
}
|
|
385
|
+
return entryPointModules;
|
|
386
|
+
}
|
|
387
|
+
}
|
|
388
|
+
//# sourceMappingURL=entry-point-detector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entry-point-detector.js","sourceRoot":"","sources":["../../../../src/commands/llm/flows/entry-point-detector.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* FlowEnhancer - LLM metadata enhancement for flows.
|
|
3
|
+
* Enriches flow suggestions with better names and descriptions using LLM.
|
|
4
|
+
*/
|
|
5
|
+
import type { Command } from '@oclif/core';
|
|
6
|
+
import type { InteractionWithPaths } from '../../../db/schema.js';
|
|
7
|
+
import type { FlowSuggestion, LlmOptions } from './types.js';
|
|
8
|
+
export declare class FlowEnhancer {
|
|
9
|
+
private readonly command;
|
|
10
|
+
private readonly isJson;
|
|
11
|
+
constructor(command: Command, isJson: boolean);
|
|
12
|
+
/**
|
|
13
|
+
* Enhance flows with LLM-generated metadata.
|
|
14
|
+
*/
|
|
15
|
+
enhanceFlowsWithLLM(flows: FlowSuggestion[], interactions: InteractionWithPaths[], model: string, llmOptions: LlmOptions): Promise<FlowSuggestion[]>;
|
|
16
|
+
private buildEnhancementSystemPrompt;
|
|
17
|
+
private buildEnhancementUserPrompt;
|
|
18
|
+
private stakeholderToActor;
|
|
19
|
+
private parseEnhancedFlowsCSV;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=flow-enhancer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"flow-enhancer.d.ts","sourceRoot":"","sources":["../../../../src/commands/llm/flows/flow-enhancer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAGlE,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7D,qBAAa,YAAY;IAErB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,MAAM;gBADN,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,OAAO;IAGlC;;OAEG;IACG,mBAAmB,CACvB,KAAK,EAAE,cAAc,EAAE,EACvB,YAAY,EAAE,oBAAoB,EAAE,EACpC,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,UAAU,GACrB,OAAO,CAAC,cAAc,EAAE,CAAC;IAoC5B,OAAO,CAAC,4BAA4B;IAyCpC,OAAO,CAAC,0BAA0B;IAmClC,OAAO,CAAC,kBAAkB;IAiB1B,OAAO,CAAC,qBAAqB;CA+C9B"}
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* FlowEnhancer - LLM metadata enhancement for flows.
|
|
3
|
+
* Enriches flow suggestions with better names and descriptions using LLM.
|
|
4
|
+
*/
|
|
5
|
+
import { parseRow } from '../_shared/csv-utils.js';
|
|
6
|
+
import { completeWithLogging, logLlmRequest, logLlmResponse } from '../_shared/llm-utils.js';
|
|
7
|
+
export class FlowEnhancer {
|
|
8
|
+
command;
|
|
9
|
+
isJson;
|
|
10
|
+
constructor(command, isJson) {
|
|
11
|
+
this.command = command;
|
|
12
|
+
this.isJson = isJson;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Enhance flows with LLM-generated metadata.
|
|
16
|
+
*/
|
|
17
|
+
async enhanceFlowsWithLLM(flows, interactions, model, llmOptions) {
|
|
18
|
+
// Separate tier-0 (atomic) flows — they keep deterministic names
|
|
19
|
+
const atomicFlows = flows.filter((f) => f.tier === 0);
|
|
20
|
+
const compositeFlows = flows.filter((f) => f.tier !== 0);
|
|
21
|
+
// If no composite flows to enhance, return all as-is
|
|
22
|
+
if (compositeFlows.length === 0)
|
|
23
|
+
return flows;
|
|
24
|
+
const interactionMap = new Map(interactions.map((i) => [i.id, i]));
|
|
25
|
+
const systemPrompt = this.buildEnhancementSystemPrompt();
|
|
26
|
+
const userPrompt = this.buildEnhancementUserPrompt(compositeFlows, interactionMap);
|
|
27
|
+
const logOptions = {
|
|
28
|
+
showRequests: llmOptions.showLlmRequests,
|
|
29
|
+
showResponses: llmOptions.showLlmResponses,
|
|
30
|
+
isJson: this.isJson,
|
|
31
|
+
};
|
|
32
|
+
logLlmRequest(this.command, 'enhanceFlowsWithLLM', systemPrompt, userPrompt, logOptions);
|
|
33
|
+
const response = await completeWithLogging({
|
|
34
|
+
model,
|
|
35
|
+
systemPrompt,
|
|
36
|
+
userPrompt,
|
|
37
|
+
temperature: 0,
|
|
38
|
+
command: this.command,
|
|
39
|
+
isJson: this.isJson,
|
|
40
|
+
});
|
|
41
|
+
logLlmResponse(this.command, 'enhanceFlowsWithLLM', response, logOptions);
|
|
42
|
+
const enhanced = this.parseEnhancedFlowsCSV(response, compositeFlows);
|
|
43
|
+
return [...atomicFlows, ...enhanced];
|
|
44
|
+
}
|
|
45
|
+
buildEnhancementSystemPrompt() {
|
|
46
|
+
return `You are creating user story names for code flows.
|
|
47
|
+
|
|
48
|
+
## REQUIRED Name Format
|
|
49
|
+
"[stakeholder] [verb]s [entity]"
|
|
50
|
+
|
|
51
|
+
Rules:
|
|
52
|
+
- Stakeholder MUST come first (user, admin, salesperson, system, developer)
|
|
53
|
+
- Verb MUST match the action type:
|
|
54
|
+
- view → views, lists, browses
|
|
55
|
+
- create → creates, adds, registers
|
|
56
|
+
- update → updates, edits, modifies
|
|
57
|
+
- delete → deletes, removes
|
|
58
|
+
- process → processes, logs into, authenticates
|
|
59
|
+
- Entity MUST be singular and specific (customer, vehicle, sale)
|
|
60
|
+
- All lowercase sentence format
|
|
61
|
+
|
|
62
|
+
## Examples
|
|
63
|
+
|
|
64
|
+
GOOD:
|
|
65
|
+
- "user views customer list"
|
|
66
|
+
- "admin creates new vehicle"
|
|
67
|
+
- "salesperson updates sale details"
|
|
68
|
+
- "user deletes draft order"
|
|
69
|
+
- "user logs into system"
|
|
70
|
+
|
|
71
|
+
BAD (DO NOT produce):
|
|
72
|
+
- "CustomerFlow" ❌ (wrong format)
|
|
73
|
+
- "Vehicle Management" ❌ (too vague)
|
|
74
|
+
- "views customers" ❌ (missing stakeholder)
|
|
75
|
+
- "User Creates Customer" ❌ (wrong case)
|
|
76
|
+
|
|
77
|
+
## Output
|
|
78
|
+
\`\`\`csv
|
|
79
|
+
entry_point,name,description
|
|
80
|
+
handleCustomerCreate,"admin creates new customer","Validates and persists customer record"
|
|
81
|
+
VehicleList,"user views vehicle inventory","Displays available vehicles with filters"
|
|
82
|
+
handleDelete,"user deletes customer","Removes customer after confirmation"
|
|
83
|
+
\`\`\``;
|
|
84
|
+
}
|
|
85
|
+
buildEnhancementUserPrompt(flows, interactionMap) {
|
|
86
|
+
const flowDescriptions = flows
|
|
87
|
+
.map((f, i) => {
|
|
88
|
+
const steps = f.interactionIds
|
|
89
|
+
.map((id) => {
|
|
90
|
+
const interaction = interactionMap.get(id);
|
|
91
|
+
return interaction ? `${interaction.fromModulePath} → ${interaction.toModulePath}` : '?';
|
|
92
|
+
})
|
|
93
|
+
.join(' → ');
|
|
94
|
+
const actor = this.stakeholderToActor(f.stakeholder).toLowerCase();
|
|
95
|
+
const defStepInfo = f.definitionSteps.length > 0
|
|
96
|
+
? `\n Definition path: ${f.definitionSteps.map((s) => `def#${s.fromDefinitionId}→def#${s.toDefinitionId}`).join(' → ')}`
|
|
97
|
+
: '';
|
|
98
|
+
const actionLine = f.actionType ? `Action: ${f.actionType}` : 'Action: unknown';
|
|
99
|
+
const entityLine = f.targetEntity ? `Entity: ${f.targetEntity}` : 'Entity: unknown';
|
|
100
|
+
return `${i + 1}. ${actionLine}, ${entityLine}, Actor: ${actor}\n Entry: ${f.entryPath}\n Steps: ${steps}${defStepInfo}`;
|
|
101
|
+
})
|
|
102
|
+
.join('\n\n');
|
|
103
|
+
return `## Flows to Enhance (${flows.length})
|
|
104
|
+
|
|
105
|
+
${flowDescriptions}
|
|
106
|
+
|
|
107
|
+
Provide enhanced names and descriptions for each flow in CSV format.
|
|
108
|
+
IMPORTANT: Follow the exact format "[stakeholder] [verb]s [entity]" - all lowercase.`;
|
|
109
|
+
}
|
|
110
|
+
stakeholderToActor(stakeholder) {
|
|
111
|
+
switch (stakeholder) {
|
|
112
|
+
case 'admin':
|
|
113
|
+
return 'Admin';
|
|
114
|
+
case 'user':
|
|
115
|
+
return 'User';
|
|
116
|
+
case 'system':
|
|
117
|
+
return 'System';
|
|
118
|
+
case 'developer':
|
|
119
|
+
return 'Developer';
|
|
120
|
+
case 'external':
|
|
121
|
+
return 'External service';
|
|
122
|
+
default:
|
|
123
|
+
return 'User';
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
parseEnhancedFlowsCSV(response, originalFlows) {
|
|
127
|
+
const results = [];
|
|
128
|
+
const csvMatch = response.match(/```csv\n([\s\S]*?)\n```/) || response.match(/```\n([\s\S]*?)\n```/);
|
|
129
|
+
const csvContent = csvMatch ? csvMatch[1] : response;
|
|
130
|
+
const lines = csvContent.split('\n').filter((l) => l.trim() && !l.startsWith('entry_point'));
|
|
131
|
+
for (let i = 0; i < originalFlows.length; i++) {
|
|
132
|
+
const original = originalFlows[i];
|
|
133
|
+
if (i < lines.length) {
|
|
134
|
+
const fields = parseRow(lines[i]);
|
|
135
|
+
if (fields && fields.length >= 3) {
|
|
136
|
+
const newName = fields[1].trim().replace(/"/g, '');
|
|
137
|
+
const newSlug = newName
|
|
138
|
+
.toLowerCase()
|
|
139
|
+
.replace(/[^a-z0-9]+/g, '-')
|
|
140
|
+
.replace(/^-|-$/g, '');
|
|
141
|
+
// Extract stakeholder from the LLM-generated name (format: "[stakeholder] [verb]s [entity]")
|
|
142
|
+
const validStakeholders = {
|
|
143
|
+
user: 'user',
|
|
144
|
+
admin: 'admin',
|
|
145
|
+
system: 'system',
|
|
146
|
+
developer: 'developer',
|
|
147
|
+
external: 'external',
|
|
148
|
+
};
|
|
149
|
+
const firstWord = newName.split(' ')[0]?.toLowerCase();
|
|
150
|
+
const derivedStakeholder = validStakeholders[firstWord] ?? null;
|
|
151
|
+
results.push({
|
|
152
|
+
...original,
|
|
153
|
+
name: newName || original.name,
|
|
154
|
+
slug: newSlug || original.slug,
|
|
155
|
+
description: fields[2].trim().replace(/"/g, '') || original.description,
|
|
156
|
+
...(derivedStakeholder ? { stakeholder: derivedStakeholder } : {}),
|
|
157
|
+
});
|
|
158
|
+
continue;
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
results.push(original);
|
|
162
|
+
}
|
|
163
|
+
return results;
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
//# sourceMappingURL=flow-enhancer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"flow-enhancer.js","sourceRoot":"","sources":["../../../../src/commands/llm/flows/flow-enhancer.ts"],"names":[],"mappings":"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"}
|