@ngocsangairvds/vsaf 3.2.16 → 4.0.1

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.
Files changed (2337) hide show
  1. package/README.md +638 -302
  2. package/package.json +51 -13
  3. package/packages/cli/dist/commands/doctor.d.ts +9 -0
  4. package/packages/cli/dist/commands/doctor.d.ts.map +1 -0
  5. package/packages/cli/dist/commands/doctor.js +49 -0
  6. package/packages/cli/dist/commands/doctor.js.map +1 -0
  7. package/packages/cli/dist/commands/init.d.ts +6 -0
  8. package/packages/cli/dist/commands/init.d.ts.map +1 -0
  9. package/packages/cli/dist/commands/init.js +66 -0
  10. package/packages/cli/dist/commands/init.js.map +1 -0
  11. package/packages/cli/dist/commands/install.d.ts +38 -0
  12. package/packages/cli/dist/commands/install.d.ts.map +1 -0
  13. package/packages/cli/dist/commands/install.js +246 -0
  14. package/packages/cli/dist/commands/install.js.map +1 -0
  15. package/packages/cli/dist/commands/list.d.ts +7 -0
  16. package/packages/cli/dist/commands/list.d.ts.map +1 -0
  17. package/packages/cli/dist/commands/list.js +40 -0
  18. package/packages/cli/dist/commands/list.js.map +1 -0
  19. package/packages/cli/dist/commands/mcp.d.ts +2 -0
  20. package/packages/cli/dist/commands/mcp.d.ts.map +1 -0
  21. package/packages/cli/dist/commands/mcp.js +8 -0
  22. package/packages/cli/dist/commands/mcp.js.map +1 -0
  23. package/packages/cli/dist/commands/run.d.ts +13 -0
  24. package/packages/cli/dist/commands/run.d.ts.map +1 -0
  25. package/packages/cli/dist/commands/run.js +90 -0
  26. package/packages/cli/dist/commands/run.js.map +1 -0
  27. package/packages/cli/dist/commands/serve.d.ts +6 -0
  28. package/packages/cli/dist/commands/serve.d.ts.map +1 -0
  29. package/packages/cli/dist/commands/serve.js +28 -0
  30. package/packages/cli/dist/commands/serve.js.map +1 -0
  31. package/packages/cli/dist/commands/skill.d.ts +48 -0
  32. package/packages/cli/dist/commands/skill.d.ts.map +1 -0
  33. package/packages/cli/dist/commands/skill.js +283 -0
  34. package/packages/cli/dist/commands/skill.js.map +1 -0
  35. package/packages/cli/dist/commands/status.d.ts +4 -0
  36. package/packages/cli/dist/commands/status.d.ts.map +1 -0
  37. package/packages/cli/dist/commands/status.js +21 -0
  38. package/packages/cli/dist/commands/status.js.map +1 -0
  39. package/packages/cli/dist/index.d.ts +3 -0
  40. package/packages/cli/dist/index.d.ts.map +1 -0
  41. package/packages/cli/dist/index.js +218 -0
  42. package/packages/cli/dist/index.js.map +1 -0
  43. package/packages/cli/dist/mcp/server.d.ts +40 -0
  44. package/packages/cli/dist/mcp/server.d.ts.map +1 -0
  45. package/packages/cli/dist/mcp/server.js +219 -0
  46. package/packages/cli/dist/mcp/server.js.map +1 -0
  47. package/packages/cli/dist/server/app.d.ts +8 -0
  48. package/packages/cli/dist/server/app.d.ts.map +1 -0
  49. package/packages/cli/dist/server/app.js +29 -0
  50. package/packages/cli/dist/server/app.js.map +1 -0
  51. package/packages/cli/dist/server/routes/health.d.ts +3 -0
  52. package/packages/cli/dist/server/routes/health.d.ts.map +1 -0
  53. package/packages/cli/dist/server/routes/health.js +13 -0
  54. package/packages/cli/dist/server/routes/health.js.map +1 -0
  55. package/packages/cli/dist/server/routes/runs.d.ts +9 -0
  56. package/packages/cli/dist/server/routes/runs.d.ts.map +1 -0
  57. package/packages/cli/dist/server/routes/runs.js +57 -0
  58. package/packages/cli/dist/server/routes/runs.js.map +1 -0
  59. package/packages/cli/dist/server/routes/workflows.d.ts +5 -0
  60. package/packages/cli/dist/server/routes/workflows.d.ts.map +1 -0
  61. package/packages/cli/dist/server/routes/workflows.js +56 -0
  62. package/packages/cli/dist/server/routes/workflows.js.map +1 -0
  63. package/packages/cli/dist/server/services/execution-manager.d.ts +15 -0
  64. package/packages/cli/dist/server/services/execution-manager.d.ts.map +1 -0
  65. package/packages/cli/dist/server/services/execution-manager.js +78 -0
  66. package/packages/cli/dist/server/services/execution-manager.js.map +1 -0
  67. package/packages/cli/dist/server/services/sse-manager.d.ts +9 -0
  68. package/packages/cli/dist/server/services/sse-manager.d.ts.map +1 -0
  69. package/packages/cli/dist/server/services/sse-manager.js +41 -0
  70. package/packages/cli/dist/server/services/sse-manager.js.map +1 -0
  71. package/packages/cli/dist/server/static.d.ts +3 -0
  72. package/packages/cli/dist/server/static.d.ts.map +1 -0
  73. package/packages/cli/dist/server/static.js +30 -0
  74. package/packages/cli/dist/server/static.js.map +1 -0
  75. package/packages/cli/dist/ui/progress.d.ts +3 -0
  76. package/packages/cli/dist/ui/progress.d.ts.map +1 -0
  77. package/packages/cli/dist/ui/progress.js +27 -0
  78. package/packages/cli/dist/ui/progress.js.map +1 -0
  79. package/packages/core/dist/commands/command-loader.d.ts +9 -0
  80. package/packages/core/dist/commands/command-loader.d.ts.map +1 -0
  81. package/packages/core/dist/commands/command-loader.js +32 -0
  82. package/packages/core/dist/commands/command-loader.js.map +1 -0
  83. package/packages/core/dist/commands/prompt-builder.d.ts +3 -0
  84. package/packages/core/dist/commands/prompt-builder.d.ts.map +1 -0
  85. package/packages/core/dist/commands/prompt-builder.js +9 -0
  86. package/packages/core/dist/commands/prompt-builder.js.map +1 -0
  87. package/packages/core/dist/config/config-loader.d.ts +13 -0
  88. package/packages/core/dist/config/config-loader.d.ts.map +1 -0
  89. package/packages/core/dist/config/config-loader.js +40 -0
  90. package/packages/core/dist/config/config-loader.js.map +1 -0
  91. package/packages/core/dist/engine/condition-evaluator.d.ts +7 -0
  92. package/packages/core/dist/engine/condition-evaluator.d.ts.map +1 -0
  93. package/packages/core/dist/engine/condition-evaluator.js +37 -0
  94. package/packages/core/dist/engine/condition-evaluator.js.map +1 -0
  95. package/packages/core/dist/engine/contract-validator.d.ts +2 -0
  96. package/packages/core/dist/engine/contract-validator.d.ts.map +1 -0
  97. package/packages/core/dist/engine/contract-validator.js +8 -0
  98. package/packages/core/dist/engine/contract-validator.js.map +1 -0
  99. package/packages/core/dist/engine/cycle-detector.d.ts +4 -0
  100. package/packages/core/dist/engine/cycle-detector.d.ts.map +1 -0
  101. package/packages/core/dist/engine/cycle-detector.js +39 -0
  102. package/packages/core/dist/engine/cycle-detector.js.map +1 -0
  103. package/packages/core/dist/engine/dag-executor.d.ts +58 -0
  104. package/packages/core/dist/engine/dag-executor.d.ts.map +1 -0
  105. package/packages/core/dist/engine/dag-executor.js +262 -0
  106. package/packages/core/dist/engine/dag-executor.js.map +1 -0
  107. package/packages/core/dist/engine/dag-parser.d.ts +3 -0
  108. package/packages/core/dist/engine/dag-parser.d.ts.map +1 -0
  109. package/packages/core/dist/engine/dag-parser.js +83 -0
  110. package/packages/core/dist/engine/dag-parser.js.map +1 -0
  111. package/packages/core/dist/engine/node-runner.d.ts +16 -0
  112. package/packages/core/dist/engine/node-runner.d.ts.map +1 -0
  113. package/packages/core/dist/engine/node-runner.js +54 -0
  114. package/packages/core/dist/engine/node-runner.js.map +1 -0
  115. package/packages/core/dist/engine/variable-resolver.d.ts +10 -0
  116. package/packages/core/dist/engine/variable-resolver.d.ts.map +1 -0
  117. package/packages/core/dist/engine/variable-resolver.js +25 -0
  118. package/packages/core/dist/engine/variable-resolver.js.map +1 -0
  119. package/packages/core/dist/index.d.ts +20 -0
  120. package/packages/core/dist/index.d.ts.map +1 -0
  121. package/packages/core/dist/index.js +55 -0
  122. package/packages/core/dist/index.js.map +1 -0
  123. package/packages/core/dist/isolation/artifact-store.d.ts +9 -0
  124. package/packages/core/dist/isolation/artifact-store.d.ts.map +1 -0
  125. package/packages/core/dist/isolation/artifact-store.js +30 -0
  126. package/packages/core/dist/isolation/artifact-store.js.map +1 -0
  127. package/packages/core/dist/isolation/workspace-manager.d.ts +36 -0
  128. package/packages/core/dist/isolation/workspace-manager.d.ts.map +1 -0
  129. package/packages/core/dist/isolation/workspace-manager.js +189 -0
  130. package/packages/core/dist/isolation/workspace-manager.js.map +1 -0
  131. package/packages/core/dist/providers/provider-registry.d.ts +8 -0
  132. package/packages/core/dist/providers/provider-registry.d.ts.map +1 -0
  133. package/packages/core/dist/providers/provider-registry.js +21 -0
  134. package/packages/core/dist/providers/provider-registry.js.map +1 -0
  135. package/packages/core/dist/schema/ajv-instance.d.ts +3 -0
  136. package/packages/core/dist/schema/ajv-instance.d.ts.map +1 -0
  137. package/packages/core/dist/schema/ajv-instance.js +12 -0
  138. package/packages/core/dist/schema/ajv-instance.js.map +1 -0
  139. package/packages/core/dist/schema/validators.d.ts +11 -0
  140. package/packages/core/dist/schema/validators.d.ts.map +1 -0
  141. package/packages/core/dist/schema/validators.js +68 -0
  142. package/packages/core/dist/schema/validators.js.map +1 -0
  143. package/packages/core/dist/schema/workflow-schema.d.ts +158 -0
  144. package/packages/core/dist/schema/workflow-schema.d.ts.map +1 -0
  145. package/packages/core/dist/schema/workflow-schema.js +84 -0
  146. package/packages/core/dist/schema/workflow-schema.js.map +1 -0
  147. package/packages/core/dist/skills/skill-loader.d.ts +9 -0
  148. package/packages/core/dist/skills/skill-loader.d.ts.map +1 -0
  149. package/packages/core/dist/skills/skill-loader.js +37 -0
  150. package/packages/core/dist/skills/skill-loader.js.map +1 -0
  151. package/packages/core/dist/store/event-log.d.ts +8 -0
  152. package/packages/core/dist/store/event-log.d.ts.map +1 -0
  153. package/packages/core/dist/store/event-log.js +30 -0
  154. package/packages/core/dist/store/event-log.js.map +1 -0
  155. package/packages/core/dist/store/run-store.d.ts +20 -0
  156. package/packages/core/dist/store/run-store.d.ts.map +1 -0
  157. package/packages/core/dist/store/run-store.js +113 -0
  158. package/packages/core/dist/store/run-store.js.map +1 -0
  159. package/packages/core/dist/store/types.d.ts +30 -0
  160. package/packages/core/dist/store/types.d.ts.map +1 -0
  161. package/packages/core/dist/store/types.js +3 -0
  162. package/packages/core/dist/store/types.js.map +1 -0
  163. package/packages/core/dist/types/dag.d.ts +36 -0
  164. package/packages/core/dist/types/dag.d.ts.map +1 -0
  165. package/packages/core/dist/types/dag.js +3 -0
  166. package/packages/core/dist/types/dag.js.map +1 -0
  167. package/packages/core/dist/types/index.d.ts +4 -0
  168. package/packages/core/dist/types/index.d.ts.map +1 -0
  169. package/packages/core/dist/types/index.js +20 -0
  170. package/packages/core/dist/types/index.js.map +1 -0
  171. package/packages/core/dist/types/provider.d.ts +19 -0
  172. package/packages/core/dist/types/provider.d.ts.map +1 -0
  173. package/packages/core/dist/types/provider.js +3 -0
  174. package/packages/core/dist/types/provider.js.map +1 -0
  175. package/packages/core/dist/types/workflow.d.ts +47 -0
  176. package/packages/core/dist/types/workflow.d.ts.map +1 -0
  177. package/packages/core/dist/types/workflow.js +3 -0
  178. package/packages/core/dist/types/workflow.js.map +1 -0
  179. package/skills/sdlc/architecture/SKILL.md +202 -0
  180. package/skills/sdlc/diagnose/SKILL.md +117 -0
  181. package/skills/sdlc/discovery/SKILL.md +182 -0
  182. package/skills/sdlc/feature-complete/SKILL.md +159 -0
  183. package/skills/sdlc/grill-me/SKILL.md +10 -0
  184. package/skills/sdlc/hotfix-analyze/SKILL.md +174 -0
  185. package/skills/sdlc/hotfix-green/SKILL.md +101 -0
  186. package/skills/sdlc/hotfix-red/SKILL.md +96 -0
  187. package/skills/sdlc/hotfix-review/SKILL.md +151 -0
  188. package/skills/sdlc/implement/SKILL.md +234 -0
  189. package/skills/sdlc/improve-codebase-architecture/SKILL.md +70 -0
  190. package/skills/sdlc/init/SKILL.md +195 -0
  191. package/skills/sdlc/install-deps.mjs +139 -0
  192. package/skills/sdlc/onboard-code/SKILL.md +193 -0
  193. package/skills/sdlc/onboard-docs/SKILL.md +121 -0
  194. package/skills/sdlc/pack.yaml +59 -0
  195. package/skills/sdlc/prd/SKILL.md +163 -0
  196. package/skills/sdlc/review/SKILL.md +229 -0
  197. package/skills/sdlc/sdlc-health/SKILL.md +165 -0
  198. package/skills/sdlc/setup/SKILL.md +162 -0
  199. package/skills/sdlc/ship/SKILL.md +279 -0
  200. package/skills/sdlc/srs/SKILL.md +135 -0
  201. package/skills/sdlc/tdd/SKILL.md +107 -0
  202. package/skills/sdlc/test-design/SKILL.md +126 -0
  203. package/skills/sdlc/workflows/hotfix-tdd.yaml +20 -0
  204. package/skills/sdlc/workflows/hotfix.yaml +34 -0
  205. package/skills/sdlc/workflows/master-sdlc.yaml +45 -0
  206. package/skills/sdlc/workflows/onboarding.yaml +9 -0
  207. package/skills/sdlc/workflows/sdlc-build.yaml +16 -0
  208. package/skills/sdlc/workflows/sdlc-design.yaml +12 -0
  209. package/skills/sdlc/workflows/sdlc-qa.yaml +17 -0
  210. package/skills/sdlc/workflows/sdlc-testcase.yaml +7 -0
  211. package/skills/sdlc/workflows/sdlc-thinking.yaml +12 -0
  212. package/skills/sdlc/zoom-out/SKILL.md +7 -0
  213. package/assets/templates/.claude/settings.json +0 -48
  214. package/assets/templates/.codex/instructions.md +0 -143
  215. package/assets/templates/CLAUDE.md +0 -161
  216. package/bin/vsaf.js +0 -142
  217. package/src/config.js +0 -167
  218. package/src/global.js +0 -261
  219. package/src/project.js +0 -191
  220. package/src/status.js +0 -91
  221. package/src/utils.js +0 -126
  222. package/src/workflow.js +0 -106
  223. package/tools/bmad/_config/agent-manifest.csv +0 -7
  224. package/tools/bmad/_config/bmad-help.csv +0 -44
  225. package/tools/bmad/_config/files-manifest.csv +0 -261
  226. package/tools/bmad/_config/manifest.yaml +0 -21
  227. package/tools/bmad/_config/skill-manifest.csv +0 -42
  228. package/tools/bmad/bmm/1-analysis/bmad-document-project/templates/srs-feature-template.md +0 -669
  229. package/tools/bmad/bmm/1-analysis/bmad-document-project/templates/srs-system-template.md +0 -430
  230. package/tools/bmad/bmm/config.yaml +0 -20
  231. package/tools/bmad/bmm/module-help.csv +0 -33
  232. package/tools/bmad/core/config.yaml +0 -9
  233. package/tools/bmad/core/module-help.csv +0 -12
  234. package/tools/skills/bmad-agent-architect/SKILL.md +0 -54
  235. package/tools/skills/bmad-agent-architect/bmad-skill-manifest.yaml +0 -11
  236. package/tools/skills/bmad-agent-dev/SKILL.md +0 -69
  237. package/tools/skills/bmad-agent-dev/bmad-skill-manifest.yaml +0 -11
  238. package/tools/skills/bmad-agent-pm/SKILL.md +0 -59
  239. package/tools/skills/bmad-agent-pm/bmad-skill-manifest.yaml +0 -11
  240. package/tools/skills/bmad-agent-tech-writer/SKILL.md +0 -57
  241. package/tools/skills/bmad-agent-tech-writer/bmad-skill-manifest.yaml +0 -11
  242. package/tools/skills/bmad-agent-tech-writer/explain-concept.md +0 -20
  243. package/tools/skills/bmad-agent-tech-writer/mermaid-gen.md +0 -20
  244. package/tools/skills/bmad-agent-tech-writer/validate-doc.md +0 -19
  245. package/tools/skills/bmad-agent-tech-writer/write-document.md +0 -20
  246. package/tools/skills/bmad-agent-ux-designer/SKILL.md +0 -55
  247. package/tools/skills/bmad-agent-ux-designer/bmad-skill-manifest.yaml +0 -11
  248. package/tools/skills/bmad-checkpoint-preview/SKILL.md +0 -29
  249. package/tools/skills/bmad-checkpoint-preview/generate-trail.md +0 -38
  250. package/tools/skills/bmad-checkpoint-preview/step-01-orientation.md +0 -105
  251. package/tools/skills/bmad-checkpoint-preview/step-02-walkthrough.md +0 -89
  252. package/tools/skills/bmad-checkpoint-preview/step-03-detail-pass.md +0 -106
  253. package/tools/skills/bmad-checkpoint-preview/step-04-testing.md +0 -74
  254. package/tools/skills/bmad-checkpoint-preview/step-05-wrapup.md +0 -24
  255. package/tools/skills/bmad-correct-course/SKILL.md +0 -6
  256. package/tools/skills/bmad-correct-course/checklist.md +0 -288
  257. package/tools/skills/bmad-correct-course/workflow.md +0 -267
  258. package/tools/skills/bmad-create-story/SKILL.md +0 -6
  259. package/tools/skills/bmad-create-story/checklist.md +0 -357
  260. package/tools/skills/bmad-create-story/discover-inputs.md +0 -88
  261. package/tools/skills/bmad-create-story/template.md +0 -49
  262. package/tools/skills/bmad-create-story/workflow.md +0 -380
  263. package/tools/skills/bmad-create-ux-design/SKILL.md +0 -6
  264. package/tools/skills/bmad-create-ux-design/steps/step-01-init.md +0 -135
  265. package/tools/skills/bmad-create-ux-design/steps/step-01b-continue.md +0 -127
  266. package/tools/skills/bmad-create-ux-design/steps/step-02-discovery.md +0 -190
  267. package/tools/skills/bmad-create-ux-design/steps/step-03-core-experience.md +0 -217
  268. package/tools/skills/bmad-create-ux-design/steps/step-04-emotional-response.md +0 -220
  269. package/tools/skills/bmad-create-ux-design/steps/step-05-inspiration.md +0 -235
  270. package/tools/skills/bmad-create-ux-design/steps/step-06-design-system.md +0 -253
  271. package/tools/skills/bmad-create-ux-design/steps/step-07-defining-experience.md +0 -255
  272. package/tools/skills/bmad-create-ux-design/steps/step-08-visual-foundation.md +0 -225
  273. package/tools/skills/bmad-create-ux-design/steps/step-09-design-directions.md +0 -225
  274. package/tools/skills/bmad-create-ux-design/steps/step-10-user-journeys.md +0 -242
  275. package/tools/skills/bmad-create-ux-design/steps/step-11-component-strategy.md +0 -249
  276. package/tools/skills/bmad-create-ux-design/steps/step-12-ux-patterns.md +0 -238
  277. package/tools/skills/bmad-create-ux-design/steps/step-13-responsive-accessibility.md +0 -265
  278. package/tools/skills/bmad-create-ux-design/steps/step-14-complete.md +0 -171
  279. package/tools/skills/bmad-create-ux-design/ux-design-template.md +0 -13
  280. package/tools/skills/bmad-create-ux-design/workflow.md +0 -35
  281. package/tools/skills/bmad-dev-story/SKILL.md +0 -6
  282. package/tools/skills/bmad-dev-story/checklist.md +0 -80
  283. package/tools/skills/bmad-dev-story/workflow.md +0 -450
  284. package/tools/skills/bmad-distillator/SKILL.md +0 -177
  285. package/tools/skills/bmad-distillator/agents/distillate-compressor.md +0 -116
  286. package/tools/skills/bmad-distillator/agents/round-trip-reconstructor.md +0 -68
  287. package/tools/skills/bmad-distillator/resources/compression-rules.md +0 -51
  288. package/tools/skills/bmad-distillator/resources/distillate-format-reference.md +0 -227
  289. package/tools/skills/bmad-distillator/resources/splitting-strategy.md +0 -78
  290. package/tools/skills/bmad-distillator/scripts/analyze_sources.py +0 -300
  291. package/tools/skills/bmad-distillator/scripts/tests/test_analyze_sources.py +0 -204
  292. package/tools/skills/bmad-document-project/SKILL.md +0 -6
  293. package/tools/skills/bmad-document-project/checklist.md +0 -245
  294. package/tools/skills/bmad-document-project/documentation-requirements.csv +0 -12
  295. package/tools/skills/bmad-document-project/instructions.md +0 -128
  296. package/tools/skills/bmad-document-project/templates/deep-dive-template.md +0 -345
  297. package/tools/skills/bmad-document-project/templates/index-template.md +0 -169
  298. package/tools/skills/bmad-document-project/templates/project-overview-template.md +0 -103
  299. package/tools/skills/bmad-document-project/templates/project-scan-report-schema.json +0 -160
  300. package/tools/skills/bmad-document-project/templates/source-tree-template.md +0 -135
  301. package/tools/skills/bmad-document-project/workflow.md +0 -25
  302. package/tools/skills/bmad-document-project/workflows/deep-dive-instructions.md +0 -299
  303. package/tools/skills/bmad-document-project/workflows/deep-dive-workflow.md +0 -34
  304. package/tools/skills/bmad-document-project/workflows/full-scan-instructions.md +0 -1107
  305. package/tools/skills/bmad-document-project/workflows/full-scan-workflow.md +0 -34
  306. package/tools/skills/bmad-edit-prd/SKILL.md +0 -6
  307. package/tools/skills/bmad-edit-prd/steps-e/step-e-01-discovery.md +0 -242
  308. package/tools/skills/bmad-edit-prd/steps-e/step-e-01b-legacy-conversion.md +0 -204
  309. package/tools/skills/bmad-edit-prd/steps-e/step-e-02-review.md +0 -245
  310. package/tools/skills/bmad-edit-prd/steps-e/step-e-03-edit.md +0 -250
  311. package/tools/skills/bmad-edit-prd/steps-e/step-e-04-complete.md +0 -163
  312. package/tools/skills/bmad-edit-prd/workflow.md +0 -62
  313. package/tools/skills/bmad-editorial-review-prose/SKILL.md +0 -86
  314. package/tools/skills/bmad-editorial-review-structure/SKILL.md +0 -179
  315. package/tools/skills/bmad-generate-project-context/SKILL.md +0 -6
  316. package/tools/skills/bmad-generate-project-context/project-context-template.md +0 -21
  317. package/tools/skills/bmad-generate-project-context/steps/step-01-discover.md +0 -186
  318. package/tools/skills/bmad-generate-project-context/steps/step-02-generate.md +0 -321
  319. package/tools/skills/bmad-generate-project-context/steps/step-03-complete.md +0 -278
  320. package/tools/skills/bmad-generate-project-context/workflow.md +0 -39
  321. package/tools/skills/bmad-help/SKILL.md +0 -75
  322. package/tools/skills/bmad-index-docs/SKILL.md +0 -66
  323. package/tools/skills/bmad-market-research/SKILL.md +0 -6
  324. package/tools/skills/bmad-market-research/research.template.md +0 -29
  325. package/tools/skills/bmad-market-research/steps/step-01-init.md +0 -184
  326. package/tools/skills/bmad-market-research/steps/step-02-customer-behavior.md +0 -239
  327. package/tools/skills/bmad-market-research/steps/step-03-customer-pain-points.md +0 -251
  328. package/tools/skills/bmad-market-research/steps/step-04-customer-decisions.md +0 -261
  329. package/tools/skills/bmad-market-research/steps/step-05-competitive-analysis.md +0 -173
  330. package/tools/skills/bmad-market-research/steps/step-06-research-completion.md +0 -478
  331. package/tools/skills/bmad-market-research/workflow.md +0 -51
  332. package/tools/skills/bmad-product-brief/SKILL.md +0 -82
  333. package/tools/skills/bmad-product-brief/agents/artifact-analyzer.md +0 -60
  334. package/tools/skills/bmad-product-brief/agents/opportunity-reviewer.md +0 -44
  335. package/tools/skills/bmad-product-brief/agents/skeptic-reviewer.md +0 -44
  336. package/tools/skills/bmad-product-brief/agents/web-researcher.md +0 -49
  337. package/tools/skills/bmad-product-brief/bmad-manifest.json +0 -17
  338. package/tools/skills/bmad-product-brief/prompts/contextual-discovery.md +0 -57
  339. package/tools/skills/bmad-product-brief/prompts/draft-and-review.md +0 -86
  340. package/tools/skills/bmad-product-brief/prompts/finalize.md +0 -75
  341. package/tools/skills/bmad-product-brief/prompts/guided-elicitation.md +0 -70
  342. package/tools/skills/bmad-product-brief/resources/brief-template.md +0 -60
  343. package/tools/skills/bmad-quick-dev/SKILL.md +0 -6
  344. package/tools/skills/bmad-quick-dev/compile-epic-context.md +0 -62
  345. package/tools/skills/bmad-quick-dev/spec-template.md +0 -88
  346. package/tools/skills/bmad-quick-dev/step-01-clarify-and-route.md +0 -91
  347. package/tools/skills/bmad-quick-dev/step-02-plan.md +0 -47
  348. package/tools/skills/bmad-quick-dev/step-03-implement.md +0 -39
  349. package/tools/skills/bmad-quick-dev/step-04-review.md +0 -49
  350. package/tools/skills/bmad-quick-dev/step-05-present.md +0 -63
  351. package/tools/skills/bmad-quick-dev/step-oneshot.md +0 -61
  352. package/tools/skills/bmad-quick-dev/workflow.md +0 -75
  353. package/tools/skills/bmad-retrospective/SKILL.md +0 -6
  354. package/tools/skills/bmad-retrospective/workflow.md +0 -1479
  355. package/tools/skills/bmad-shard-doc/SKILL.md +0 -105
  356. package/tools/skills/bmad-sprint-planning/SKILL.md +0 -6
  357. package/tools/skills/bmad-sprint-planning/checklist.md +0 -33
  358. package/tools/skills/bmad-sprint-planning/sprint-status-template.yaml +0 -56
  359. package/tools/skills/bmad-sprint-planning/workflow.md +0 -263
  360. package/tools/skills/bmad-sprint-status/SKILL.md +0 -6
  361. package/tools/skills/bmad-sprint-status/workflow.md +0 -261
  362. package/tools/skills/bmad-technical-research/SKILL.md +0 -6
  363. package/tools/skills/bmad-technical-research/research.template.md +0 -29
  364. package/tools/skills/bmad-technical-research/technical-steps/step-01-init.md +0 -137
  365. package/tools/skills/bmad-technical-research/technical-steps/step-02-technical-overview.md +0 -239
  366. package/tools/skills/bmad-technical-research/technical-steps/step-03-integration-patterns.md +0 -248
  367. package/tools/skills/bmad-technical-research/technical-steps/step-04-architectural-patterns.md +0 -202
  368. package/tools/skills/bmad-technical-research/technical-steps/step-05-implementation-research.md +0 -233
  369. package/tools/skills/bmad-technical-research/technical-steps/step-06-research-synthesis.md +0 -487
  370. package/tools/skills/bmad-technical-research/workflow.md +0 -52
  371. package/tools/skills/bmad-validate-prd/data/prd-purpose.md +0 -197
  372. package/tools/skills/gitnexus/gitnexus-cli/SKILL.md +0 -82
  373. package/tools/skills/gitnexus/gitnexus-debugging/SKILL.md +0 -89
  374. package/tools/skills/gitnexus/gitnexus-exploring/SKILL.md +0 -78
  375. package/tools/skills/gitnexus/gitnexus-guide/SKILL.md +0 -64
  376. package/tools/skills/gitnexus/gitnexus-impact-analysis/SKILL.md +0 -97
  377. package/tools/skills/gitnexus/gitnexus-refactoring/SKILL.md +0 -121
  378. package/tools/skills/vds-scripts-skill/.openskills.json +0 -6
  379. package/tools/skills/vds-scripts-skill/QUALITY.md +0 -44
  380. package/tools/skills/vds-scripts-skill/SKILL.md +0 -127
  381. package/tools/skills/vds-scripts-skill/references/audit-commands.md +0 -171
  382. package/tools/skills/vds-scripts-skill/references/capability-index.md +0 -34
  383. package/tools/skills/vds-scripts-skill/references/development-commands.md +0 -12
  384. package/tools/skills/vds-scripts-skill/references/google-sheets.md +0 -71
  385. package/tools/skills/vds-scripts-skill/references/integration-commands.md +0 -17
  386. package/tools/skills/vds-scripts-skill/references/platform-bootstrap.md +0 -31
  387. package/tools/skills/vds-scripts-skill/references/specialist-routing.md +0 -14
  388. package/tools/skills/vds-scripts-skill/references/validation-commands.md +0 -15
  389. package/tools/skills/vsaf-build/SKILL.md +0 -146
  390. package/tools/skills/vsaf-discover/SKILL.md +0 -92
  391. package/tools/skills/vsaf-doc/SKILL.md +0 -22
  392. package/tools/skills/vsaf-doc-prd/SKILL.md +0 -58
  393. package/tools/skills/vsaf-doc-srs/SKILL.md +0 -170
  394. package/tools/skills/vsaf-docs/SKILL.md +0 -81
  395. package/tools/skills/vsaf-onboard/SKILL.md +0 -81
  396. package/tools/skills/vsaf-plan/SKILL.md +0 -101
  397. package/tools/skills/vsaf-push-prd/SKILL.md +0 -154
  398. package/tools/skills/vsaf-push-srs/SKILL.md +0 -166
  399. package/tools/skills/vsaf-retro/SKILL.md +0 -94
  400. package/tools/skills/vsaf-ship/SKILL.md +0 -142
  401. package/tools/skills/vsaf-sprint/SKILL.md +0 -111
  402. package/tools/skills/vsaf-test/SKILL.md +0 -207
  403. package/tools/vds-scripts/.claude/phase7-CLOSURE.md +0 -100
  404. package/tools/vds-scripts/.dockerignore +0 -62
  405. package/tools/vds-scripts/.github/ISSUE_TEMPLATE/cli-change.md +0 -92
  406. package/tools/vds-scripts/.github/PULL_REQUEST_TEMPLATE/pull_request_template.md +0 -48
  407. package/tools/vds-scripts/.github/workflows/chaos-smoke.yml +0 -266
  408. package/tools/vds-scripts/.github/workflows/confluence-sync.yml +0 -44
  409. package/tools/vds-scripts/.github/workflows/docs-confluence-evidence.yml +0 -170
  410. package/tools/vds-scripts/.github/workflows/docs-quality.yml +0 -59
  411. package/tools/vds-scripts/.github/workflows/lint-and-test.yml +0 -90
  412. package/tools/vds-scripts/.github/workflows/scheduler-load-smoke.yml +0 -104
  413. package/tools/vds-scripts/.github/workflows/telegram-bridge-ci.yml +0 -131
  414. package/tools/vds-scripts/.graphifyignore +0 -29
  415. package/tools/vds-scripts/.importlinter +0 -86
  416. package/tools/vds-scripts/.mcp.json +0 -11
  417. package/tools/vds-scripts/.pre-commit-config.yaml +0 -62
  418. package/tools/vds-scripts/.ruffignore +0 -3
  419. package/tools/vds-scripts/.secrets.baseline +0 -133
  420. package/tools/vds-scripts/AGENTS.md +0 -250
  421. package/tools/vds-scripts/AGENTS.vi.md +0 -92
  422. package/tools/vds-scripts/Makefile +0 -97
  423. package/tools/vds-scripts/README.md +0 -103
  424. package/tools/vds-scripts/bitbucket_manifest_mapping.toml +0 -34
  425. package/tools/vds-scripts/bitbucket_orchestrator/ARCHITECTURE_ANALYSIS.md +0 -258
  426. package/tools/vds-scripts/bitbucket_orchestrator/BITBUCKET_API_PRACTICES.md +0 -393
  427. package/tools/vds-scripts/bitbucket_orchestrator/EVALUATION_REPORT.md +0 -61
  428. package/tools/vds-scripts/bitbucket_orchestrator/FEATURES.md +0 -908
  429. package/tools/vds-scripts/bitbucket_orchestrator/README.md +0 -817
  430. package/tools/vds-scripts/bitbucket_orchestrator/pyproject.toml +0 -49
  431. package/tools/vds-scripts/bitbucket_orchestrator/src/vds_bitbucket_orchestrator/__init__.py +0 -50
  432. package/tools/vds-scripts/bitbucket_orchestrator/src/vds_bitbucket_orchestrator/async_client.py +0 -641
  433. package/tools/vds-scripts/bitbucket_orchestrator/src/vds_bitbucket_orchestrator/cli.py +0 -2271
  434. package/tools/vds-scripts/bitbucket_orchestrator/src/vds_bitbucket_orchestrator/client.py +0 -2693
  435. package/tools/vds-scripts/bitbucket_orchestrator/src/vds_bitbucket_orchestrator/config.py +0 -186
  436. package/tools/vds-scripts/bitbucket_orchestrator/src/vds_bitbucket_orchestrator/errors.py +0 -34
  437. package/tools/vds-scripts/bitbucket_orchestrator/src/vds_bitbucket_orchestrator/factory.py +0 -185
  438. package/tools/vds-scripts/bitbucket_orchestrator/src/vds_bitbucket_orchestrator/parsers.py +0 -113
  439. package/tools/vds-scripts/bitbucket_orchestrator/src/vds_bitbucket_orchestrator/protocols.py +0 -244
  440. package/tools/vds-scripts/bitbucket_orchestrator/src/vds_bitbucket_orchestrator/repo_ops.py +0 -325
  441. package/tools/vds-scripts/bitbucket_orchestrator/tests/__init__.py +0 -8
  442. package/tools/vds-scripts/bitbucket_orchestrator/tests/conftest.py +0 -65
  443. package/tools/vds-scripts/bitbucket_orchestrator/tests/test_advanced_search.py +0 -155
  444. package/tools/vds-scripts/bitbucket_orchestrator/tests/test_async_client.py +0 -505
  445. package/tools/vds-scripts/bitbucket_orchestrator/tests/test_branch_permissions.py +0 -172
  446. package/tools/vds-scripts/bitbucket_orchestrator/tests/test_cli.py +0 -113
  447. package/tools/vds-scripts/bitbucket_orchestrator/tests/test_cli_archive.py +0 -122
  448. package/tools/vds-scripts/bitbucket_orchestrator/tests/test_cli_clone.py +0 -131
  449. package/tools/vds-scripts/bitbucket_orchestrator/tests/test_client.py +0 -207
  450. package/tools/vds-scripts/bitbucket_orchestrator/tests/test_client_archive.py +0 -73
  451. package/tools/vds-scripts/bitbucket_orchestrator/tests/test_client_branch_conditions.py +0 -101
  452. package/tools/vds-scripts/bitbucket_orchestrator/tests/test_client_code_advanced.py +0 -180
  453. package/tools/vds-scripts/bitbucket_orchestrator/tests/test_client_code_file.py +0 -33
  454. package/tools/vds-scripts/bitbucket_orchestrator/tests/test_client_deployment_environments.py +0 -193
  455. package/tools/vds-scripts/bitbucket_orchestrator/tests/test_client_issues.py +0 -163
  456. package/tools/vds-scripts/bitbucket_orchestrator/tests/test_client_pipelines_advanced.py +0 -171
  457. package/tools/vds-scripts/bitbucket_orchestrator/tests/test_client_pr_blockers.py +0 -118
  458. package/tools/vds-scripts/bitbucket_orchestrator/tests/test_client_repository_variables.py +0 -155
  459. package/tools/vds-scripts/bitbucket_orchestrator/tests/test_code.py +0 -98
  460. package/tools/vds-scripts/bitbucket_orchestrator/tests/test_code_advanced.py +0 -279
  461. package/tools/vds-scripts/bitbucket_orchestrator/tests/test_code_insights.py +0 -334
  462. package/tools/vds-scripts/bitbucket_orchestrator/tests/test_conditions.py +0 -149
  463. package/tools/vds-scripts/bitbucket_orchestrator/tests/test_config.py +0 -297
  464. package/tools/vds-scripts/bitbucket_orchestrator/tests/test_deployment_env.py +0 -352
  465. package/tools/vds-scripts/bitbucket_orchestrator/tests/test_errors.py +0 -67
  466. package/tools/vds-scripts/bitbucket_orchestrator/tests/test_factory.py +0 -352
  467. package/tools/vds-scripts/bitbucket_orchestrator/tests/test_fork_operations.py +0 -203
  468. package/tools/vds-scripts/bitbucket_orchestrator/tests/test_issue_cli.py +0 -262
  469. package/tools/vds-scripts/bitbucket_orchestrator/tests/test_pipeline_advanced.py +0 -265
  470. package/tools/vds-scripts/bitbucket_orchestrator/tests/test_pr_blocker.py +0 -206
  471. package/tools/vds-scripts/bitbucket_orchestrator/tests/test_protocols.py +0 -336
  472. package/tools/vds-scripts/bitbucket_orchestrator/tests/test_repo_ops_archive.py +0 -169
  473. package/tools/vds-scripts/bitbucket_orchestrator/tests/test_repo_ops_clone.py +0 -115
  474. package/tools/vds-scripts/bitbucket_orchestrator/tests/test_repo_ops_parsing.py +0 -149
  475. package/tools/vds-scripts/bitbucket_orchestrator/tests/test_repo_settings.py +0 -336
  476. package/tools/vds-scripts/bitbucket_orchestrator/tests/test_repo_variables.py +0 -266
  477. package/tools/vds-scripts/bitbucket_orchestrator/tests/test_webhooks.py +0 -188
  478. package/tools/vds-scripts/bitbucket_orchestrator/tests/test_workspace.py +0 -234
  479. package/tools/vds-scripts/bitbucket_orchestrator/tests/unit/__init__.py +0 -0
  480. package/tools/vds-scripts/bitbucket_orchestrator/tests/unit/test_parsers.py +0 -254
  481. package/tools/vds-scripts/code/code_evidence_pack.json +0 -435
  482. package/tools/vds-scripts/confluence_orchestrator/Dockerfile +0 -19
  483. package/tools/vds-scripts/confluence_orchestrator/README.md +0 -479
  484. package/tools/vds-scripts/confluence_orchestrator/SYNC_SCRIPTS.md +0 -127
  485. package/tools/vds-scripts/confluence_orchestrator/SYNC_STANDARDIZATION.md +0 -108
  486. package/tools/vds-scripts/confluence_orchestrator/pyproject.toml +0 -50
  487. package/tools/vds-scripts/confluence_orchestrator/src/confluence_orchestrator/__init__.py +0 -56
  488. package/tools/vds-scripts/confluence_orchestrator/src/confluence_orchestrator/async_client.py +0 -100
  489. package/tools/vds-scripts/confluence_orchestrator/src/confluence_orchestrator/cli.py +0 -3160
  490. package/tools/vds-scripts/confluence_orchestrator/src/confluence_orchestrator/config.py +0 -215
  491. package/tools/vds-scripts/confluence_orchestrator/src/confluence_orchestrator/content.py +0 -368
  492. package/tools/vds-scripts/confluence_orchestrator/src/confluence_orchestrator/content_v2.py +0 -144
  493. package/tools/vds-scripts/confluence_orchestrator/src/confluence_orchestrator/crawl_tree.py +0 -1833
  494. package/tools/vds-scripts/confluence_orchestrator/src/confluence_orchestrator/errors.py +0 -44
  495. package/tools/vds-scripts/confluence_orchestrator/src/confluence_orchestrator/eventing.py +0 -111
  496. package/tools/vds-scripts/confluence_orchestrator/src/confluence_orchestrator/http.py +0 -1850
  497. package/tools/vds-scripts/confluence_orchestrator/src/confluence_orchestrator/orchestration.py +0 -166
  498. package/tools/vds-scripts/confluence_orchestrator/src/confluence_orchestrator/protocols.py +0 -61
  499. package/tools/vds-scripts/confluence_orchestrator/src/confluence_orchestrator/reporting.py +0 -78
  500. package/tools/vds-scripts/confluence_orchestrator/src/confluence_orchestrator/tree.py +0 -122
  501. package/tools/vds-scripts/confluence_orchestrator/src/confluence_orchestrator/tree_copier.py +0 -431
  502. package/tools/vds-scripts/confluence_orchestrator/sync_pdfs_from_markdown.py +0 -203
  503. package/tools/vds-scripts/confluence_orchestrator/sync_pdfs_to_confluence.py +0 -299
  504. package/tools/vds-scripts/confluence_orchestrator/sync_png_attachments.py +0 -299
  505. package/tools/vds-scripts/confluence_orchestrator/tests/conftest.py +0 -46
  506. package/tools/vds-scripts/confluence_orchestrator/tests/test_advanced_content.py +0 -252
  507. package/tools/vds-scripts/confluence_orchestrator/tests/test_advanced_search.py +0 -193
  508. package/tools/vds-scripts/confluence_orchestrator/tests/test_async_client.py +0 -104
  509. package/tools/vds-scripts/confluence_orchestrator/tests/test_cache_management.py +0 -246
  510. package/tools/vds-scripts/confluence_orchestrator/tests/test_cli.py +0 -716
  511. package/tools/vds-scripts/confluence_orchestrator/tests/test_config.py +0 -130
  512. package/tools/vds-scripts/confluence_orchestrator/tests/test_content.py +0 -192
  513. package/tools/vds-scripts/confluence_orchestrator/tests/test_content_flags.py +0 -27
  514. package/tools/vds-scripts/confluence_orchestrator/tests/test_content_labels.py +0 -94
  515. package/tools/vds-scripts/confluence_orchestrator/tests/test_crawl_tree.py +0 -2252
  516. package/tools/vds-scripts/confluence_orchestrator/tests/test_degraded_write_safety.py +0 -176
  517. package/tools/vds-scripts/confluence_orchestrator/tests/test_draft_management.py +0 -225
  518. package/tools/vds-scripts/confluence_orchestrator/tests/test_errors.py +0 -75
  519. package/tools/vds-scripts/confluence_orchestrator/tests/test_eventing.py +0 -73
  520. package/tools/vds-scripts/confluence_orchestrator/tests/test_eventing_chaos.py +0 -37
  521. package/tools/vds-scripts/confluence_orchestrator/tests/test_eventing_rate_limit.py +0 -44
  522. package/tools/vds-scripts/confluence_orchestrator/tests/test_eventing_timeout.py +0 -49
  523. package/tools/vds-scripts/confluence_orchestrator/tests/test_export.py +0 -231
  524. package/tools/vds-scripts/confluence_orchestrator/tests/test_history.py +0 -217
  525. package/tools/vds-scripts/confluence_orchestrator/tests/test_http.py +0 -375
  526. package/tools/vds-scripts/confluence_orchestrator/tests/test_orchestration.py +0 -93
  527. package/tools/vds-scripts/confluence_orchestrator/tests/test_protocols.py +0 -23
  528. package/tools/vds-scripts/confluence_orchestrator/tests/test_reporting.py +0 -24
  529. package/tools/vds-scripts/confluence_orchestrator/tests/test_search_cql.py +0 -36
  530. package/tools/vds-scripts/confluence_orchestrator/tests/test_space_management.py +0 -236
  531. package/tools/vds-scripts/confluence_orchestrator/tests/test_space_permissions.py +0 -384
  532. package/tools/vds-scripts/confluence_orchestrator/tests/test_tree_copier.py +0 -644
  533. package/tools/vds-scripts/confluence_orchestrator/tests/test_tree_copier_remap.py +0 -289
  534. package/tools/vds-scripts/confluence_orchestrator/tests/test_user_group_management.py +0 -387
  535. package/tools/vds-scripts/db_query_orchestrator/Dockerfile +0 -64
  536. package/tools/vds-scripts/db_query_orchestrator/README.md +0 -105
  537. package/tools/vds-scripts/db_query_orchestrator/pyproject.toml +0 -67
  538. package/tools/vds-scripts/db_query_orchestrator/src/vds_db_query_orchestrator/__init__.py +0 -5
  539. package/tools/vds-scripts/db_query_orchestrator/src/vds_db_query_orchestrator/cli.py +0 -545
  540. package/tools/vds-scripts/db_query_orchestrator/tests/__init__.py +0 -0
  541. package/tools/vds-scripts/db_query_orchestrator/tests/test_cli.py +0 -171
  542. package/tools/vds-scripts/docker/.dockerignore +0 -38
  543. package/tools/vds-scripts/docker/ADR.md +0 -392
  544. package/tools/vds-scripts/docker/Dockerfile +0 -68
  545. package/tools/vds-scripts/docker/MIGRATION.md +0 -453
  546. package/tools/vds-scripts/docker/README.md +0 -347
  547. package/tools/vds-scripts/docker/ROLLBACK.md +0 -596
  548. package/tools/vds-scripts/docker/docker-compose.cli.yml +0 -90
  549. package/tools/vds-scripts/docker/docker-compose.infra.yml +0 -276
  550. package/tools/vds-scripts/docker/docker-compose.services.yml +0 -386
  551. package/tools/vds-scripts/docker/infrastructure/init-schemas.sql +0 -143
  552. package/tools/vds-scripts/docker/infrastructure/pgbouncer/pgbouncer.ini +0 -71
  553. package/tools/vds-scripts/docker/infrastructure/pgbouncer/userlist.txt +0 -50
  554. package/tools/vds-scripts/docker/infrastructure/pgbouncer/userlist.txt.template +0 -36
  555. package/tools/vds-scripts/docs/.confluence-evidence/.gitkeep +0 -0
  556. package/tools/vds-scripts/docs/.confluence-evidence/PREFLIGHT.md +0 -132
  557. package/tools/vds-scripts/docs/.confluence-evidence/README.md +0 -84
  558. package/tools/vds-scripts/docs/.confluence.yaml +0 -157
  559. package/tools/vds-scripts/docs/.freshness.yaml +0 -54
  560. package/tools/vds-scripts/docs/README.md +0 -235
  561. package/tools/vds-scripts/docs/agents/README.md +0 -33
  562. package/tools/vds-scripts/docs/agents/explanation/data-flow.md +0 -132
  563. package/tools/vds-scripts/docs/agents/explanation/development-roadmap.md +0 -49
  564. package/tools/vds-scripts/docs/agents/explanation/features-overview.md +0 -62
  565. package/tools/vds-scripts/docs/agents/explanation/index.md +0 -36
  566. package/tools/vds-scripts/docs/agents/explanation/runtime-verification-and-gap-reporting.md +0 -127
  567. package/tools/vds-scripts/docs/agents/explanation/system-architecture.md +0 -139
  568. package/tools/vds-scripts/docs/agents/explanation/whats-new.md +0 -75
  569. package/tools/vds-scripts/docs/agents/explanation/who-ecosystem-introduction.md +0 -65
  570. package/tools/vds-scripts/docs/agents/explanation/who-ecosystem-model.md +0 -41
  571. package/tools/vds-scripts/docs/agents/how-to/02-using-vds-ai-memory.md +0 -98
  572. package/tools/vds-scripts/docs/agents/how-to/03-memory-cross-agent.md +0 -241
  573. package/tools/vds-scripts/docs/agents/how-to/04-using-progress-reports.md +0 -240
  574. package/tools/vds-scripts/docs/agents/how-to/08-semantic-search.md +0 -46
  575. package/tools/vds-scripts/docs/agents/how-to/apply-phase3-migration.md +0 -148
  576. package/tools/vds-scripts/docs/agents/how-to/choose-the-right-command-or-skill.md +0 -34
  577. package/tools/vds-scripts/docs/agents/how-to/contribute-new-orchestrator.md +0 -149
  578. package/tools/vds-scripts/docs/agents/how-to/decision-tree.md +0 -63
  579. package/tools/vds-scripts/docs/agents/how-to/first-audit-run.md +0 -83
  580. package/tools/vds-scripts/docs/agents/how-to/index.md +0 -49
  581. package/tools/vds-scripts/docs/agents/how-to/install-and-bootstrap-who-scripts-and-skills.md +0 -314
  582. package/tools/vds-scripts/docs/agents/how-to/orchestrator-workflows/analytics-pipeline-workflow.md +0 -165
  583. package/tools/vds-scripts/docs/agents/how-to/orchestrator-workflows/code-quality-gate-workflow.md +0 -138
  584. package/tools/vds-scripts/docs/agents/how-to/orchestrator-workflows/confluence-bitbucket-sync-workflow.md +0 -130
  585. package/tools/vds-scripts/docs/agents/how-to/orchestrator-workflows/document-delivery-workflow.md +0 -142
  586. package/tools/vds-scripts/docs/agents/how-to/orchestrator-workflows/memory-progress-workflow.md +0 -140
  587. package/tools/vds-scripts/docs/agents/how-to/orchestrator-workflows/research-spec-audit-workflow.md +0 -135
  588. package/tools/vds-scripts/docs/agents/how-to/phase131-all-project-preparation.md +0 -211
  589. package/tools/vds-scripts/docs/agents/how-to/phase131-bounded-parallel-analysis.md +0 -123
  590. package/tools/vds-scripts/docs/agents/how-to/phase131-confluence-upload-recovery.md +0 -204
  591. package/tools/vds-scripts/docs/agents/how-to/phase132-department-preparation.md +0 -144
  592. package/tools/vds-scripts/docs/agents/how-to/run-ecosystem-daily-report.md +0 -213
  593. package/tools/vds-scripts/docs/agents/how-to/tips-and-tricks.md +0 -138
  594. package/tools/vds-scripts/docs/agents/how-to/troubleshooting-guide.md +0 -221
  595. package/tools/vds-scripts/docs/agents/reference/agent-operational-contract.md +0 -162
  596. package/tools/vds-scripts/docs/agents/reference/alignment-phase179-report.md +0 -144
  597. package/tools/vds-scripts/docs/agents/reference/audit-triage-playbook.md +0 -256
  598. package/tools/vds-scripts/docs/agents/reference/backup-restore.md +0 -132
  599. package/tools/vds-scripts/docs/agents/reference/bitbucket-orchestrator.md +0 -56
  600. package/tools/vds-scripts/docs/agents/reference/brd-orchestrator.md +0 -52
  601. package/tools/vds-scripts/docs/agents/reference/capability-coverage-review.md +0 -51
  602. package/tools/vds-scripts/docs/agents/reference/ci-workflows.md +0 -98
  603. package/tools/vds-scripts/docs/agents/reference/circular-dependency-orchestrator.md +0 -55
  604. package/tools/vds-scripts/docs/agents/reference/cli-commands.md +0 -583
  605. package/tools/vds-scripts/docs/agents/reference/cli-development-standards.md +0 -41
  606. package/tools/vds-scripts/docs/agents/reference/cli-help-matrix.md +0 -84
  607. package/tools/vds-scripts/docs/agents/reference/common-errors.md +0 -126
  608. package/tools/vds-scripts/docs/agents/reference/configuration-reference.md +0 -128
  609. package/tools/vds-scripts/docs/agents/reference/confluence-orchestrator.md +0 -56
  610. package/tools/vds-scripts/docs/agents/reference/confluence-sync-target.md +0 -111
  611. package/tools/vds-scripts/docs/agents/reference/confluence-sync.md +0 -46
  612. package/tools/vds-scripts/docs/agents/reference/db-query-orchestrator.md +0 -93
  613. package/tools/vds-scripts/docs/agents/reference/diagrams-orchestrator.md +0 -52
  614. package/tools/vds-scripts/docs/agents/reference/ecosystem-daily-report.md +0 -229
  615. package/tools/vds-scripts/docs/agents/reference/elastic-orchestrator.md +0 -57
  616. package/tools/vds-scripts/docs/agents/reference/env-git-helper.md +0 -216
  617. package/tools/vds-scripts/docs/agents/reference/evolution-orchestrator.md +0 -113
  618. package/tools/vds-scripts/docs/agents/reference/excel-orchestrator.md +0 -51
  619. package/tools/vds-scripts/docs/agents/reference/git-orchestrator.md +0 -62
  620. package/tools/vds-scripts/docs/agents/reference/google-sheets-orchestrator.md +0 -51
  621. package/tools/vds-scripts/docs/agents/reference/grafana-orchestrator.md +0 -52
  622. package/tools/vds-scripts/docs/agents/reference/hexagonal-orchestrator.md +0 -64
  623. package/tools/vds-scripts/docs/agents/reference/index.md +0 -36
  624. package/tools/vds-scripts/docs/agents/reference/infrastructure-v2.15.md +0 -67
  625. package/tools/vds-scripts/docs/agents/reference/intellij-orchestrator.md +0 -50
  626. package/tools/vds-scripts/docs/agents/reference/jira-orchestrator.md +0 -60
  627. package/tools/vds-scripts/docs/agents/reference/links-orchestrator.md +0 -57
  628. package/tools/vds-scripts/docs/agents/reference/lint-cli.md +0 -99
  629. package/tools/vds-scripts/docs/agents/reference/lsp-orchestrator.md +0 -51
  630. package/tools/vds-scripts/docs/agents/reference/markdown-orchestrator.md +0 -53
  631. package/tools/vds-scripts/docs/agents/reference/mcp-orchestrator.md +0 -88
  632. package/tools/vds-scripts/docs/agents/reference/memory-orchestrator.md +0 -53
  633. package/tools/vds-scripts/docs/agents/reference/metabase-orchestrator.md +0 -51
  634. package/tools/vds-scripts/docs/agents/reference/migration-playbook.md +0 -71
  635. package/tools/vds-scripts/docs/agents/reference/multi-agent-orchestrator.md +0 -52
  636. package/tools/vds-scripts/docs/agents/reference/openapi-orchestrator.md +0 -57
  637. package/tools/vds-scripts/docs/agents/reference/orchestrator-architecture.md +0 -194
  638. package/tools/vds-scripts/docs/agents/reference/orchestrator-comparison-matrix.md +0 -79
  639. package/tools/vds-scripts/docs/agents/reference/orchestrator-index.md +0 -73
  640. package/tools/vds-scripts/docs/agents/reference/pdf-orchestrator.md +0 -57
  641. package/tools/vds-scripts/docs/agents/reference/portable-paths-and-config.md +0 -0
  642. package/tools/vds-scripts/docs/agents/reference/portable-paths-validation-matrix.md +0 -129
  643. package/tools/vds-scripts/docs/agents/reference/progress-orchestrator.md +0 -51
  644. package/tools/vds-scripts/docs/agents/reference/progress-report-cli.md +0 -215
  645. package/tools/vds-scripts/docs/agents/reference/public-interface-orchestrator.md +0 -73
  646. package/tools/vds-scripts/docs/agents/reference/research-orchestrator.md +0 -53
  647. package/tools/vds-scripts/docs/agents/reference/schema-orchestrator.md +0 -57
  648. package/tools/vds-scripts/docs/agents/reference/search-tools.md +0 -34
  649. package/tools/vds-scripts/docs/agents/reference/skills-commands.md +0 -256
  650. package/tools/vds-scripts/docs/agents/reference/skills-reference.md +0 -32
  651. package/tools/vds-scripts/docs/agents/reference/sonarqube-orchestrator.md +0 -62
  652. package/tools/vds-scripts/docs/agents/reference/spec-orchestrator.md +0 -56
  653. package/tools/vds-scripts/docs/agents/reference/structure-orchestrator.md +0 -69
  654. package/tools/vds-scripts/docs/agents/reference/system-requirements.md +0 -76
  655. package/tools/vds-scripts/docs/agents/reference/tasks-orchestrator.md +0 -53
  656. package/tools/vds-scripts/docs/agents/reference/validation-and-sync-notes.md +0 -54
  657. package/tools/vds-scripts/docs/agents/reference/vds-ai-memory-api.md +0 -51
  658. package/tools/vds-scripts/docs/agents/reference/vds-cli-reference.md +0 -34
  659. package/tools/vds-scripts/docs/agents/reference/who-capability-inventory.md +0 -96
  660. package/tools/vds-scripts/docs/agents/reference/who-capability-routing-matrix.md +0 -14
  661. package/tools/vds-scripts/docs/agents/tutorials/feature-progression-guide.md +0 -112
  662. package/tools/vds-scripts/docs/agents/tutorials/index.md +0 -36
  663. package/tools/vds-scripts/docs/agents/tutorials/quick-start.md +0 -50
  664. package/tools/vds-scripts/docs/agents/tutorials/who-skills-and-scripts-onboarding.md +0 -47
  665. package/tools/vds-scripts/docs/agents/tutorials/zero-to-productive-developer.md +0 -339
  666. package/tools/vds-scripts/docs/confluence/IMPLEMENTATION-SUMMARY.md +0 -78
  667. package/tools/vds-scripts/docs/confluence/SYNC-GUIDE.md +0 -47
  668. package/tools/vds-scripts/docs/deployment/offline-docker-image-load.md +0 -59
  669. package/tools/vds-scripts/docs/evolution-auto-run-rollout.md +0 -325
  670. package/tools/vds-scripts/docs/evolution-loop-deep-integration.md +0 -496
  671. package/tools/vds-scripts/docs/evolution-loop-integration-guide.md +0 -359
  672. package/tools/vds-scripts/docs/openspace-schema-snapshot.md +0 -73
  673. package/tools/vds-scripts/docs/operations/sla-mttr-policy.md +0 -44
  674. package/tools/vds-scripts/docs/p0-closure-evidence/SUMMARY.md +0 -58
  675. package/tools/vds-scripts/docs/p4-closure-evidence/.gitkeep +0 -0
  676. package/tools/vds-scripts/docs/p4-closure-evidence/smoke-20260427T024137Z-b95b586b.json +0 -15
  677. package/tools/vds-scripts/docs/p8-preflight-evidence/alembic-and-runtime-advisory-locks.md +0 -45
  678. package/tools/vds-scripts/docs/p8-preflight-evidence/dbos-listen-notify.md +0 -54
  679. package/tools/vds-scripts/docs/p8-preflight-evidence/pgbouncer-search-path-empirical.md +0 -110
  680. package/tools/vds-scripts/docs/p8-preflight-evidence/pgvector-set-local-audit.md +0 -51
  681. package/tools/vds-scripts/docs/p8-preflight-evidence/topology-decision-session-mode.md +0 -57
  682. package/tools/vds-scripts/docs/phases/CHANGELOG.md +0 -103
  683. package/tools/vds-scripts/docs/phases/PHASE_125_COMPLETION_AND_MERGE.md +0 -212
  684. package/tools/vds-scripts/docs/phases/phase125/IMPLEMENTATION_REPORT.md +0 -227
  685. package/tools/vds-scripts/docs/phases/phase125/TSK-125.10-11-implementation-summary.md +0 -196
  686. package/tools/vds-scripts/docs/phases/phase125/profile-patch-ollama-local-anthropic.md +0 -122
  687. package/tools/vds-scripts/docs/phases/phase125_completion_summary.md +0 -369
  688. package/tools/vds-scripts/docs/phases/phase125_llm_analysis_skill.md +0 -164
  689. package/tools/vds-scripts/docs/phases/phase125_merge_complete.md +0 -147
  690. package/tools/vds-scripts/docs/phases/phase125_skill_runtime_closure_20260321.md +0 -91
  691. package/tools/vds-scripts/docs/phases/phase2-portable-paths/closure-handoff-summary-2026-03-23.md +0 -290
  692. package/tools/vds-scripts/docs/phases/phase2-portable-paths/remaining-risk-register-2026-03-25.md +0 -143
  693. package/tools/vds-scripts/docs/phases/phase2-portable-paths/verification-evidence-2026-03-23.md +0 -135
  694. package/tools/vds-scripts/docs/v0-sunset-known-issues.md +0 -88
  695. package/tools/vds-scripts/docs/vi/TRANSLATION-BACKLOG.md +0 -72
  696. package/tools/vds-scripts/docs/vi/agents/README.md +0 -41
  697. package/tools/vds-scripts/docs/vi/agents/explanation/features-overview.md +0 -29
  698. package/tools/vds-scripts/docs/vi/agents/explanation/index.md +0 -14
  699. package/tools/vds-scripts/docs/vi/agents/explanation/runtime-verification-and-gap-reporting.md +0 -129
  700. package/tools/vds-scripts/docs/vi/agents/explanation/whats-new.md +0 -37
  701. package/tools/vds-scripts/docs/vi/agents/explanation/who-ecosystem-introduction.md +0 -21
  702. package/tools/vds-scripts/docs/vi/agents/explanation/who-ecosystem-model.md +0 -36
  703. package/tools/vds-scripts/docs/vi/agents/how-to/02-using-vds-ai-memory.md +0 -100
  704. package/tools/vds-scripts/docs/vi/agents/how-to/03-memory-cross-agent.md +0 -243
  705. package/tools/vds-scripts/docs/vi/agents/how-to/04-using-progress-reports.md +0 -242
  706. package/tools/vds-scripts/docs/vi/agents/how-to/08-semantic-search.md +0 -16
  707. package/tools/vds-scripts/docs/vi/agents/how-to/choose-the-right-command-or-skill.md +0 -36
  708. package/tools/vds-scripts/docs/vi/agents/how-to/decision-tree.md +0 -77
  709. package/tools/vds-scripts/docs/vi/agents/how-to/first-audit-run.md +0 -85
  710. package/tools/vds-scripts/docs/vi/agents/how-to/index.md +0 -21
  711. package/tools/vds-scripts/docs/vi/agents/how-to/install-and-bootstrap-who-scripts-and-skills.md +0 -156
  712. package/tools/vds-scripts/docs/vi/agents/how-to/orchestrator-workflows/analytics-pipeline-workflow.md +0 -174
  713. package/tools/vds-scripts/docs/vi/agents/how-to/orchestrator-workflows/code-quality-gate-workflow.md +0 -147
  714. package/tools/vds-scripts/docs/vi/agents/how-to/orchestrator-workflows/confluence-bitbucket-sync-workflow.md +0 -139
  715. package/tools/vds-scripts/docs/vi/agents/how-to/orchestrator-workflows/document-delivery-workflow.md +0 -151
  716. package/tools/vds-scripts/docs/vi/agents/how-to/orchestrator-workflows/memory-progress-workflow.md +0 -149
  717. package/tools/vds-scripts/docs/vi/agents/how-to/orchestrator-workflows/research-spec-audit-workflow.md +0 -144
  718. package/tools/vds-scripts/docs/vi/agents/how-to/phase131-all-project-preparation.md +0 -213
  719. package/tools/vds-scripts/docs/vi/agents/how-to/phase131-bounded-parallel-analysis.md +0 -125
  720. package/tools/vds-scripts/docs/vi/agents/how-to/phase131-confluence-upload-recovery.md +0 -206
  721. package/tools/vds-scripts/docs/vi/agents/how-to/phase132-department-preparation.md +0 -146
  722. package/tools/vds-scripts/docs/vi/agents/how-to/tips-and-tricks.md +0 -34
  723. package/tools/vds-scripts/docs/vi/agents/how-to/troubleshooting-guide.md +0 -36
  724. package/tools/vds-scripts/docs/vi/agents/reference/agent-operational-contract.md +0 -98
  725. package/tools/vds-scripts/docs/vi/agents/reference/audit-triage-playbook.md +0 -258
  726. package/tools/vds-scripts/docs/vi/agents/reference/bitbucket-orchestrator.md +0 -30
  727. package/tools/vds-scripts/docs/vi/agents/reference/brd-orchestrator.md +0 -29
  728. package/tools/vds-scripts/docs/vi/agents/reference/capability-coverage-review.md +0 -46
  729. package/tools/vds-scripts/docs/vi/agents/reference/circular-dependency-orchestrator.md +0 -29
  730. package/tools/vds-scripts/docs/vi/agents/reference/cli-commands.md +0 -409
  731. package/tools/vds-scripts/docs/vi/agents/reference/cli-development-standards.md +0 -19
  732. package/tools/vds-scripts/docs/vi/agents/reference/cli-help-matrix.md +0 -71
  733. package/tools/vds-scripts/docs/vi/agents/reference/common-errors.md +0 -133
  734. package/tools/vds-scripts/docs/vi/agents/reference/configuration-reference.md +0 -25
  735. package/tools/vds-scripts/docs/vi/agents/reference/confluence-orchestrator.md +0 -30
  736. package/tools/vds-scripts/docs/vi/agents/reference/db-query-orchestrator.md +0 -34
  737. package/tools/vds-scripts/docs/vi/agents/reference/diagrams-orchestrator.md +0 -31
  738. package/tools/vds-scripts/docs/vi/agents/reference/elastic-orchestrator.md +0 -30
  739. package/tools/vds-scripts/docs/vi/agents/reference/evolution-orchestrator.md +0 -31
  740. package/tools/vds-scripts/docs/vi/agents/reference/excel-orchestrator.md +0 -60
  741. package/tools/vds-scripts/docs/vi/agents/reference/git-orchestrator.md +0 -31
  742. package/tools/vds-scripts/docs/vi/agents/reference/google-sheets-orchestrator.md +0 -60
  743. package/tools/vds-scripts/docs/vi/agents/reference/grafana-orchestrator.md +0 -30
  744. package/tools/vds-scripts/docs/vi/agents/reference/hexagonal-orchestrator.md +0 -73
  745. package/tools/vds-scripts/docs/vi/agents/reference/index.md +0 -25
  746. package/tools/vds-scripts/docs/vi/agents/reference/intellij-orchestrator.md +0 -59
  747. package/tools/vds-scripts/docs/vi/agents/reference/jira-orchestrator.md +0 -32
  748. package/tools/vds-scripts/docs/vi/agents/reference/links-orchestrator.md +0 -66
  749. package/tools/vds-scripts/docs/vi/agents/reference/lsp-orchestrator.md +0 -60
  750. package/tools/vds-scripts/docs/vi/agents/reference/markdown-orchestrator.md +0 -62
  751. package/tools/vds-scripts/docs/vi/agents/reference/mcp-orchestrator.md +0 -34
  752. package/tools/vds-scripts/docs/vi/agents/reference/memory-orchestrator.md +0 -45
  753. package/tools/vds-scripts/docs/vi/agents/reference/metabase-orchestrator.md +0 -30
  754. package/tools/vds-scripts/docs/vi/agents/reference/multi-agent-orchestrator.md +0 -61
  755. package/tools/vds-scripts/docs/vi/agents/reference/openapi-orchestrator.md +0 -66
  756. package/tools/vds-scripts/docs/vi/agents/reference/orchestrator-architecture.md +0 -24
  757. package/tools/vds-scripts/docs/vi/agents/reference/orchestrator-index.md +0 -73
  758. package/tools/vds-scripts/docs/vi/agents/reference/pdf-orchestrator.md +0 -30
  759. package/tools/vds-scripts/docs/vi/agents/reference/portable-paths-and-config.md +0 -123
  760. package/tools/vds-scripts/docs/vi/agents/reference/portable-paths-validation-matrix.md +0 -131
  761. package/tools/vds-scripts/docs/vi/agents/reference/progress-orchestrator.md +0 -43
  762. package/tools/vds-scripts/docs/vi/agents/reference/progress-report-cli.md +0 -217
  763. package/tools/vds-scripts/docs/vi/agents/reference/public-interface-orchestrator.md +0 -82
  764. package/tools/vds-scripts/docs/vi/agents/reference/research-orchestrator.md +0 -45
  765. package/tools/vds-scripts/docs/vi/agents/reference/schema-orchestrator.md +0 -66
  766. package/tools/vds-scripts/docs/vi/agents/reference/search-tools.md +0 -19
  767. package/tools/vds-scripts/docs/vi/agents/reference/skills-reference.md +0 -27
  768. package/tools/vds-scripts/docs/vi/agents/reference/sonarqube-orchestrator.md +0 -71
  769. package/tools/vds-scripts/docs/vi/agents/reference/spec-orchestrator.md +0 -56
  770. package/tools/vds-scripts/docs/vi/agents/reference/structure-orchestrator.md +0 -78
  771. package/tools/vds-scripts/docs/vi/agents/reference/system-requirements.md +0 -30
  772. package/tools/vds-scripts/docs/vi/agents/reference/tasks-orchestrator.md +0 -45
  773. package/tools/vds-scripts/docs/vi/agents/reference/validation-and-sync-notes.md +0 -26
  774. package/tools/vds-scripts/docs/vi/agents/reference/vds-ai-memory-api.md +0 -53
  775. package/tools/vds-scripts/docs/vi/agents/reference/vds-cli-reference.md +0 -34
  776. package/tools/vds-scripts/docs/vi/agents/reference/who-capability-inventory.md +0 -98
  777. package/tools/vds-scripts/docs/vi/agents/reference/who-capability-routing-matrix.md +0 -16
  778. package/tools/vds-scripts/docs/vi/agents/tutorials/feature-progression-guide.md +0 -124
  779. package/tools/vds-scripts/docs/vi/agents/tutorials/index.md +0 -13
  780. package/tools/vds-scripts/docs/vi/agents/tutorials/quick-start.md +0 -30
  781. package/tools/vds-scripts/docs/vi/agents/tutorials/who-skills-and-scripts-onboarding.md +0 -42
  782. package/tools/vds-scripts/docs/vi/agents/tutorials/zero-to-productive-developer.md +0 -137
  783. package/tools/vds-scripts/elastic_orchestrator/README.md +0 -450
  784. package/tools/vds-scripts/elastic_orchestrator/pyproject.toml +0 -97
  785. package/tools/vds-scripts/elastic_orchestrator/src/vds_elastic_orchestrator/__init__.py +0 -81
  786. package/tools/vds-scripts/elastic_orchestrator/src/vds_elastic_orchestrator/cli.py +0 -652
  787. package/tools/vds-scripts/elastic_orchestrator/src/vds_elastic_orchestrator/client.py +0 -743
  788. package/tools/vds-scripts/elastic_orchestrator/src/vds_elastic_orchestrator/config.py +0 -208
  789. package/tools/vds-scripts/elastic_orchestrator/src/vds_elastic_orchestrator/errors.py +0 -34
  790. package/tools/vds-scripts/elastic_orchestrator/src/vds_elastic_orchestrator/py.typed +0 -0
  791. package/tools/vds-scripts/elastic_orchestrator/tests/__init__.py +0 -0
  792. package/tools/vds-scripts/elastic_orchestrator/tests/conftest.py +0 -227
  793. package/tools/vds-scripts/elastic_orchestrator/tests/test_client.py +0 -990
  794. package/tools/vds-scripts/elastic_orchestrator/tests/test_config.py +0 -268
  795. package/tools/vds-scripts/elastic_orchestrator/tests/test_e2e_verification.py +0 -272
  796. package/tools/vds-scripts/elastic_orchestrator/tests/test_errors.py +0 -78
  797. package/tools/vds-scripts/git_orchestrator/ENHANCEMENT_SUMMARY.md +0 -119
  798. package/tools/vds-scripts/git_orchestrator/README.md +0 -286
  799. package/tools/vds-scripts/git_orchestrator/VERIFICATION_REPORT.md +0 -152
  800. package/tools/vds-scripts/git_orchestrator/pyproject.toml +0 -37
  801. package/tools/vds-scripts/git_orchestrator/src/vds_git_orchestrator/__init__.py +0 -30
  802. package/tools/vds-scripts/git_orchestrator/src/vds_git_orchestrator/__main__.py +0 -4
  803. package/tools/vds-scripts/git_orchestrator/src/vds_git_orchestrator/branch_probe.py +0 -271
  804. package/tools/vds-scripts/git_orchestrator/src/vds_git_orchestrator/cli.py +0 -892
  805. package/tools/vds-scripts/git_orchestrator/src/vds_git_orchestrator/logging_config.py +0 -63
  806. package/tools/vds-scripts/git_orchestrator/src/vds_git_orchestrator/manifest.py +0 -249
  807. package/tools/vds-scripts/git_orchestrator/src/vds_git_orchestrator/orchestrator.py +0 -1647
  808. package/tools/vds-scripts/git_orchestrator/src/vds_git_orchestrator/protocols.py +0 -35
  809. package/tools/vds-scripts/git_orchestrator/src/vds_git_orchestrator/reporting.py +0 -55
  810. package/tools/vds-scripts/git_orchestrator/tests/__init__.py +0 -0
  811. package/tools/vds-scripts/git_orchestrator/tests/test_cli_settings.py +0 -19
  812. package/tools/vds-scripts/git_orchestrator/tests/test_integration.py +0 -79
  813. package/tools/vds-scripts/git_orchestrator/tests/test_manifest.py +0 -79
  814. package/tools/vds-scripts/git_orchestrator/tests/test_orchestrator.py +0 -207
  815. package/tools/vds-scripts/git_orchestrator/tests/test_public_api.py +0 -235
  816. package/tools/vds-scripts/git_orchestrator/tests/test_resilience.py +0 -343
  817. package/tools/vds-scripts/git_orchestrator/tests/unit/__init__.py +0 -0
  818. package/tools/vds-scripts/git_orchestrator/tests/unit/test_branch_probe.py +0 -327
  819. package/tools/vds-scripts/git_orchestrator/tests/unit/test_protocols.py +0 -132
  820. package/tools/vds-scripts/google_sheets_orchestrator/README.md +0 -241
  821. package/tools/vds-scripts/google_sheets_orchestrator/pyproject.toml +0 -45
  822. package/tools/vds-scripts/google_sheets_orchestrator/src/vds_google_sheets_orchestrator/__init__.py +0 -69
  823. package/tools/vds-scripts/google_sheets_orchestrator/src/vds_google_sheets_orchestrator/cli.py +0 -568
  824. package/tools/vds-scripts/google_sheets_orchestrator/src/vds_google_sheets_orchestrator/client.py +0 -186
  825. package/tools/vds-scripts/google_sheets_orchestrator/src/vds_google_sheets_orchestrator/config.py +0 -46
  826. package/tools/vds-scripts/google_sheets_orchestrator/src/vds_google_sheets_orchestrator/errors.py +0 -41
  827. package/tools/vds-scripts/google_sheets_orchestrator/tests/__init__.py +0 -1
  828. package/tools/vds-scripts/google_sheets_orchestrator/tests/conftest.py +0 -1
  829. package/tools/vds-scripts/google_sheets_orchestrator/tests/unit/__init__.py +0 -1
  830. package/tools/vds-scripts/google_sheets_orchestrator/tests/unit/test_cli.py +0 -212
  831. package/tools/vds-scripts/google_sheets_orchestrator/tests/unit/test_client.py +0 -24
  832. package/tools/vds-scripts/google_sheets_orchestrator/tests/unit/test_config.py +0 -16
  833. package/tools/vds-scripts/grafana_orchestrator/README.md +0 -572
  834. package/tools/vds-scripts/grafana_orchestrator/pyproject.toml +0 -102
  835. package/tools/vds-scripts/grafana_orchestrator/src/vds_grafana_orchestrator/__init__.py +0 -78
  836. package/tools/vds-scripts/grafana_orchestrator/src/vds_grafana_orchestrator/cli.py +0 -455
  837. package/tools/vds-scripts/grafana_orchestrator/src/vds_grafana_orchestrator/client.py +0 -700
  838. package/tools/vds-scripts/grafana_orchestrator/src/vds_grafana_orchestrator/config.py +0 -243
  839. package/tools/vds-scripts/grafana_orchestrator/src/vds_grafana_orchestrator/errors.py +0 -34
  840. package/tools/vds-scripts/grafana_orchestrator/src/vds_grafana_orchestrator/py.typed +0 -1
  841. package/tools/vds-scripts/grafana_orchestrator/tests/__init__.py +0 -1
  842. package/tools/vds-scripts/grafana_orchestrator/tests/conftest.py +0 -308
  843. package/tools/vds-scripts/grafana_orchestrator/tests/test_client.py +0 -458
  844. package/tools/vds-scripts/grafana_orchestrator/tests/test_config.py +0 -203
  845. package/tools/vds-scripts/grafana_orchestrator/tests/test_errors.py +0 -78
  846. package/tools/vds-scripts/jira_orchestrator/README.md +0 -864
  847. package/tools/vds-scripts/jira_orchestrator/pyproject.toml +0 -43
  848. package/tools/vds-scripts/jira_orchestrator/src/vds_jira_orchestrator/__init__.py +0 -65
  849. package/tools/vds-scripts/jira_orchestrator/src/vds_jira_orchestrator/adapter.py +0 -1685
  850. package/tools/vds-scripts/jira_orchestrator/src/vds_jira_orchestrator/cli.py +0 -2806
  851. package/tools/vds-scripts/jira_orchestrator/src/vds_jira_orchestrator/config.py +0 -168
  852. package/tools/vds-scripts/jira_orchestrator/src/vds_jira_orchestrator/errors.py +0 -34
  853. package/tools/vds-scripts/jira_orchestrator/src/vds_jira_orchestrator/reporting.py +0 -66
  854. package/tools/vds-scripts/jira_orchestrator/tests/__init__.py +0 -1
  855. package/tools/vds-scripts/jira_orchestrator/tests/conftest.py +0 -86
  856. package/tools/vds-scripts/jira_orchestrator/tests/test_adapter_agile_list_payloads.py +0 -54
  857. package/tools/vds-scripts/jira_orchestrator/tests/test_adapter_bulk_operations.py +0 -91
  858. package/tools/vds-scripts/jira_orchestrator/tests/test_adapter_components.py +0 -56
  859. package/tools/vds-scripts/jira_orchestrator/tests/test_adapter_createmeta.py +0 -45
  860. package/tools/vds-scripts/jira_orchestrator/tests/test_adapter_dashboard.py +0 -119
  861. package/tools/vds-scripts/jira_orchestrator/tests/test_adapter_issue_properties.py +0 -53
  862. package/tools/vds-scripts/jira_orchestrator/tests/test_adapter_permissions_compat.py +0 -41
  863. package/tools/vds-scripts/jira_orchestrator/tests/test_adapter_reindex.py +0 -42
  864. package/tools/vds-scripts/jira_orchestrator/tests/test_adapter_remote_links.py +0 -75
  865. package/tools/vds-scripts/jira_orchestrator/tests/test_adapter_transitions.py +0 -90
  866. package/tools/vds-scripts/jira_orchestrator/tests/test_adapter_user_management.py +0 -116
  867. package/tools/vds-scripts/jira_orchestrator/tests/test_adapter_version_management.py +0 -181
  868. package/tools/vds-scripts/jira_orchestrator/tests/test_adapter_watchers.py +0 -43
  869. package/tools/vds-scripts/jira_orchestrator/tests/test_advanced_search.py +0 -179
  870. package/tools/vds-scripts/jira_orchestrator/tests/test_agile.py +0 -304
  871. package/tools/vds-scripts/jira_orchestrator/tests/test_application_properties.py +0 -243
  872. package/tools/vds-scripts/jira_orchestrator/tests/test_backlog.py +0 -91
  873. package/tools/vds-scripts/jira_orchestrator/tests/test_bulk_operations.py +0 -403
  874. package/tools/vds-scripts/jira_orchestrator/tests/test_cli.py +0 -108
  875. package/tools/vds-scripts/jira_orchestrator/tests/test_components.py +0 -119
  876. package/tools/vds-scripts/jira_orchestrator/tests/test_config.py +0 -166
  877. package/tools/vds-scripts/jira_orchestrator/tests/test_dashboard.py +0 -122
  878. package/tools/vds-scripts/jira_orchestrator/tests/test_discover_fields.py +0 -207
  879. package/tools/vds-scripts/jira_orchestrator/tests/test_errors.py +0 -72
  880. package/tools/vds-scripts/jira_orchestrator/tests/test_filter_management.py +0 -411
  881. package/tools/vds-scripts/jira_orchestrator/tests/test_issue_archiving.py +0 -179
  882. package/tools/vds-scripts/jira_orchestrator/tests/test_issue_links.py +0 -257
  883. package/tools/vds-scripts/jira_orchestrator/tests/test_issue_properties.py +0 -189
  884. package/tools/vds-scripts/jira_orchestrator/tests/test_link_types.py +0 -407
  885. package/tools/vds-scripts/jira_orchestrator/tests/test_parse_set.py +0 -37
  886. package/tools/vds-scripts/jira_orchestrator/tests/test_permissions.py +0 -343
  887. package/tools/vds-scripts/jira_orchestrator/tests/test_reindex.py +0 -81
  888. package/tools/vds-scripts/jira_orchestrator/tests/test_remote_links.py +0 -269
  889. package/tools/vds-scripts/jira_orchestrator/tests/test_security_schemes.py +0 -202
  890. package/tools/vds-scripts/jira_orchestrator/tests/test_transitions_changelog.py +0 -109
  891. package/tools/vds-scripts/jira_orchestrator/tests/test_user_management.py +0 -246
  892. package/tools/vds-scripts/jira_orchestrator/tests/test_version_management.py +0 -503
  893. package/tools/vds-scripts/jira_orchestrator/tests/test_watchers.py +0 -116
  894. package/tools/vds-scripts/jira_orchestrator/tests/test_worklog.py +0 -243
  895. package/tools/vds-scripts/jira_viettelmoney_orchestrator/README.md +0 -864
  896. package/tools/vds-scripts/jira_viettelmoney_orchestrator/pyproject.toml +0 -43
  897. package/tools/vds-scripts/jira_viettelmoney_orchestrator/src/vds_jira_viettelmoney_orchestrator/__init__.py +0 -65
  898. package/tools/vds-scripts/jira_viettelmoney_orchestrator/src/vds_jira_viettelmoney_orchestrator/adapter.py +0 -1689
  899. package/tools/vds-scripts/jira_viettelmoney_orchestrator/src/vds_jira_viettelmoney_orchestrator/cli.py +0 -2799
  900. package/tools/vds-scripts/jira_viettelmoney_orchestrator/src/vds_jira_viettelmoney_orchestrator/config.py +0 -137
  901. package/tools/vds-scripts/jira_viettelmoney_orchestrator/src/vds_jira_viettelmoney_orchestrator/errors.py +0 -34
  902. package/tools/vds-scripts/jira_viettelmoney_orchestrator/src/vds_jira_viettelmoney_orchestrator/reporting.py +0 -65
  903. package/tools/vds-scripts/jira_viettelmoney_orchestrator/tests/__init__.py +0 -1
  904. package/tools/vds-scripts/jira_viettelmoney_orchestrator/tests/conftest.py +0 -86
  905. package/tools/vds-scripts/jira_viettelmoney_orchestrator/tests/test_adapter_agile_list_payloads.py +0 -54
  906. package/tools/vds-scripts/jira_viettelmoney_orchestrator/tests/test_adapter_bulk_operations.py +0 -101
  907. package/tools/vds-scripts/jira_viettelmoney_orchestrator/tests/test_adapter_components.py +0 -64
  908. package/tools/vds-scripts/jira_viettelmoney_orchestrator/tests/test_adapter_createmeta.py +0 -45
  909. package/tools/vds-scripts/jira_viettelmoney_orchestrator/tests/test_adapter_dashboard.py +0 -135
  910. package/tools/vds-scripts/jira_viettelmoney_orchestrator/tests/test_adapter_issue_properties.py +0 -63
  911. package/tools/vds-scripts/jira_viettelmoney_orchestrator/tests/test_adapter_permissions_compat.py +0 -42
  912. package/tools/vds-scripts/jira_viettelmoney_orchestrator/tests/test_adapter_reindex.py +0 -42
  913. package/tools/vds-scripts/jira_viettelmoney_orchestrator/tests/test_adapter_remote_links.py +0 -89
  914. package/tools/vds-scripts/jira_viettelmoney_orchestrator/tests/test_adapter_transitions.py +0 -91
  915. package/tools/vds-scripts/jira_viettelmoney_orchestrator/tests/test_adapter_user_management.py +0 -130
  916. package/tools/vds-scripts/jira_viettelmoney_orchestrator/tests/test_adapter_version_management.py +0 -189
  917. package/tools/vds-scripts/jira_viettelmoney_orchestrator/tests/test_adapter_watchers.py +0 -49
  918. package/tools/vds-scripts/jira_viettelmoney_orchestrator/tests/test_advanced_search.py +0 -213
  919. package/tools/vds-scripts/jira_viettelmoney_orchestrator/tests/test_agile.py +0 -334
  920. package/tools/vds-scripts/jira_viettelmoney_orchestrator/tests/test_application_properties.py +0 -261
  921. package/tools/vds-scripts/jira_viettelmoney_orchestrator/tests/test_backlog.py +0 -91
  922. package/tools/vds-scripts/jira_viettelmoney_orchestrator/tests/test_bulk_operations.py +0 -443
  923. package/tools/vds-scripts/jira_viettelmoney_orchestrator/tests/test_cli.py +0 -106
  924. package/tools/vds-scripts/jira_viettelmoney_orchestrator/tests/test_components.py +0 -133
  925. package/tools/vds-scripts/jira_viettelmoney_orchestrator/tests/test_config.py +0 -166
  926. package/tools/vds-scripts/jira_viettelmoney_orchestrator/tests/test_dashboard.py +0 -130
  927. package/tools/vds-scripts/jira_viettelmoney_orchestrator/tests/test_discover_fields.py +0 -207
  928. package/tools/vds-scripts/jira_viettelmoney_orchestrator/tests/test_errors.py +0 -61
  929. package/tools/vds-scripts/jira_viettelmoney_orchestrator/tests/test_filter_management.py +0 -478
  930. package/tools/vds-scripts/jira_viettelmoney_orchestrator/tests/test_issue_archiving.py +0 -181
  931. package/tools/vds-scripts/jira_viettelmoney_orchestrator/tests/test_issue_links.py +0 -257
  932. package/tools/vds-scripts/jira_viettelmoney_orchestrator/tests/test_issue_properties.py +0 -203
  933. package/tools/vds-scripts/jira_viettelmoney_orchestrator/tests/test_link_types.py +0 -426
  934. package/tools/vds-scripts/jira_viettelmoney_orchestrator/tests/test_parse_set.py +0 -37
  935. package/tools/vds-scripts/jira_viettelmoney_orchestrator/tests/test_permissions.py +0 -358
  936. package/tools/vds-scripts/jira_viettelmoney_orchestrator/tests/test_reindex.py +0 -81
  937. package/tools/vds-scripts/jira_viettelmoney_orchestrator/tests/test_remote_links.py +0 -292
  938. package/tools/vds-scripts/jira_viettelmoney_orchestrator/tests/test_security_schemes.py +0 -218
  939. package/tools/vds-scripts/jira_viettelmoney_orchestrator/tests/test_transitions_changelog.py +0 -121
  940. package/tools/vds-scripts/jira_viettelmoney_orchestrator/tests/test_user_management.py +0 -283
  941. package/tools/vds-scripts/jira_viettelmoney_orchestrator/tests/test_version_management.py +0 -561
  942. package/tools/vds-scripts/jira_viettelmoney_orchestrator/tests/test_watchers.py +0 -128
  943. package/tools/vds-scripts/jira_viettelmoney_orchestrator/tests/test_worklog.py +0 -265
  944. package/tools/vds-scripts/llms.txt +0 -159
  945. package/tools/vds-scripts/mcp_server/Dockerfile +0 -63
  946. package/tools/vds-scripts/mcp_server/README.md +0 -140
  947. package/tools/vds-scripts/mcp_server/pyproject.toml +0 -41
  948. package/tools/vds-scripts/mcp_server/src/vds_mcp_server/__init__.py +0 -3
  949. package/tools/vds-scripts/mcp_server/src/vds_mcp_server/config.py +0 -36
  950. package/tools/vds-scripts/mcp_server/src/vds_mcp_server/server.py +0 -111
  951. package/tools/vds-scripts/mcp_server/src/vds_mcp_server/tools/__init__.py +0 -15
  952. package/tools/vds-scripts/mcp_server/src/vds_mcp_server/tools/bitbucket_tools.py +0 -47
  953. package/tools/vds-scripts/mcp_server/src/vds_mcp_server/tools/confluence_tools.py +0 -53
  954. package/tools/vds-scripts/mcp_server/src/vds_mcp_server/tools/git_tools.py +0 -71
  955. package/tools/vds-scripts/mcp_server/src/vds_mcp_server/tools/jira_tools.py +0 -63
  956. package/tools/vds-scripts/mcp_server/src/vds_mcp_server/tools/vidp_tools.py +0 -64
  957. package/tools/vds-scripts/mcp_server/tests/__init__.py +0 -1
  958. package/tools/vds-scripts/mcp_server/tests/conftest.py +0 -31
  959. package/tools/vds-scripts/mcp_server/tests/unit/__init__.py +0 -1
  960. package/tools/vds-scripts/mcp_server/tests/unit/test_bitbucket_tools.py +0 -28
  961. package/tools/vds-scripts/mcp_server/tests/unit/test_confluence_tools.py +0 -28
  962. package/tools/vds-scripts/mcp_server/tests/unit/test_git_tools.py +0 -35
  963. package/tools/vds-scripts/mcp_server/tests/unit/test_jira_tools.py +0 -35
  964. package/tools/vds-scripts/mcp_server/tests/verification/__init__.py +0 -6
  965. package/tools/vds-scripts/mcp_server/tests/verification/conftest.py +0 -51
  966. package/tools/vds-scripts/mcp_server/tests/verification/test_mcp_confluence_tools.py +0 -40
  967. package/tools/vds-scripts/mcp_server/tests/verification/test_mcp_jira_tools.py +0 -39
  968. package/tools/vds-scripts/mcp_server/tests/verification/test_mcp_tool_registration.py +0 -50
  969. package/tools/vds-scripts/memory_orchestrator/.env.example +0 -109
  970. package/tools/vds-scripts/memory_orchestrator/Dockerfile +0 -103
  971. package/tools/vds-scripts/memory_orchestrator/README.md +0 -203
  972. package/tools/vds-scripts/memory_orchestrator/alembic/env.py +0 -35
  973. package/tools/vds-scripts/memory_orchestrator/alembic/script.py.mako +0 -28
  974. package/tools/vds-scripts/memory_orchestrator/alembic/versions/0001_add_team_id_to_vector_search_history.py +0 -57
  975. package/tools/vds-scripts/memory_orchestrator/alembic/versions/0002_nullable_query_text_vector_search_history.py +0 -47
  976. package/tools/vds-scripts/memory_orchestrator/alembic/versions/0003_create_memory_vectors_if_missing.py +0 -49
  977. package/tools/vds-scripts/memory_orchestrator/alembic/versions/0004_create_memory_duplicate_groups_and_members.py +0 -61
  978. package/tools/vds-scripts/memory_orchestrator/alembic/versions/0005_create_search_queries_if_missing.py +0 -57
  979. package/tools/vds-scripts/memory_orchestrator/alembic/versions/0006_create_export_import_jobs_if_missing.py +0 -52
  980. package/tools/vds-scripts/memory_orchestrator/alembic/versions/0007_create_remaining_orm_tables.py +0 -145
  981. package/tools/vds-scripts/memory_orchestrator/alembic/versions/0008_alter_export_import_jobs_user_id_to_varchar.py +0 -55
  982. package/tools/vds-scripts/memory_orchestrator/alembic/versions/0009_create_core_tables_if_missing.py +0 -197
  983. package/tools/vds-scripts/memory_orchestrator/alembic/versions/0010_create_service_accounts.py +0 -75
  984. package/tools/vds-scripts/memory_orchestrator/alembic/versions/0011_create_users_table.py +0 -106
  985. package/tools/vds-scripts/memory_orchestrator/alembic/versions/0012_audit_log_v3.py +0 -107
  986. package/tools/vds-scripts/memory_orchestrator/alembic/versions/0042_memory_dedup_resolutions.py +0 -67
  987. package/tools/vds-scripts/memory_orchestrator/alembic/versions/0043_memory_records_tombstones.py +0 -68
  988. package/tools/vds-scripts/memory_orchestrator/alembic/versions/0044_memory_evolution_shadow_soak_state.py +0 -69
  989. package/tools/vds-scripts/memory_orchestrator/alembic.ini +0 -65
  990. package/tools/vds-scripts/memory_orchestrator/conftest.py +0 -42
  991. package/tools/vds-scripts/memory_orchestrator/create_analytics_tables.sql +0 -289
  992. package/tools/vds-scripts/memory_orchestrator/create_memory_evolution_tables.sql +0 -104
  993. package/tools/vds-scripts/memory_orchestrator/create_memory_vectors_table.sql +0 -26
  994. package/tools/vds-scripts/memory_orchestrator/init-db-simple.sql +0 -16
  995. package/tools/vds-scripts/memory_orchestrator/pyproject.toml +0 -169
  996. package/tools/vds-scripts/memory_orchestrator/scripts/__init__.py +0 -0
  997. package/tools/vds-scripts/memory_orchestrator/scripts/deploy.sh +0 -112
  998. package/tools/vds-scripts/memory_orchestrator/scripts/entrypoint.sh +0 -130
  999. package/tools/vds-scripts/memory_orchestrator/scripts/mint_memory_client_service_token.py +0 -179
  1000. package/tools/vds-scripts/memory_orchestrator/scripts/recover_with_infer_false.py +0 -224
  1001. package/tools/vds-scripts/memory_orchestrator/scripts/soak-stalled-rate.sh +0 -95
  1002. package/tools/vds-scripts/memory_orchestrator/scripts/verify-track-alpha.sh +0 -110
  1003. package/tools/vds-scripts/memory_orchestrator/src/vds_memory_orchestrator/__init__.py +0 -5
  1004. package/tools/vds-scripts/memory_orchestrator/src/vds_memory_orchestrator/agents/__init__.py +0 -15
  1005. package/tools/vds-scripts/memory_orchestrator/src/vds_memory_orchestrator/agents/_model_factory.py +0 -37
  1006. package/tools/vds-scripts/memory_orchestrator/src/vds_memory_orchestrator/agents/consolidation.py +0 -49
  1007. package/tools/vds-scripts/memory_orchestrator/src/vds_memory_orchestrator/agents/extraction.py +0 -56
  1008. package/tools/vds-scripts/memory_orchestrator/src/vds_memory_orchestrator/agents/intent.py +0 -40
  1009. package/tools/vds-scripts/memory_orchestrator/src/vds_memory_orchestrator/cli.py +0 -1457
  1010. package/tools/vds-scripts/memory_orchestrator/src/vds_memory_orchestrator/client.py +0 -204
  1011. package/tools/vds-scripts/memory_orchestrator/src/vds_memory_orchestrator/config/__init__.py +0 -0
  1012. package/tools/vds-scripts/memory_orchestrator/src/vds_memory_orchestrator/config/memory_evolution.toml +0 -20
  1013. package/tools/vds-scripts/memory_orchestrator/src/vds_memory_orchestrator/config/rules/__init__.py +0 -0
  1014. package/tools/vds-scripts/memory_orchestrator/src/vds_memory_orchestrator/config/rules/storage_rules.yaml +0 -281
  1015. package/tools/vds-scripts/memory_orchestrator/src/vds_memory_orchestrator/config/session_templates.json +0 -63
  1016. package/tools/vds-scripts/memory_orchestrator/src/vds_memory_orchestrator/db/__init__.py +0 -10
  1017. package/tools/vds-scripts/memory_orchestrator/src/vds_memory_orchestrator/db/alembic_filters.py +0 -66
  1018. package/tools/vds-scripts/memory_orchestrator/src/vds_memory_orchestrator/formatters.py +0 -82
  1019. package/tools/vds-scripts/memory_orchestrator/src/vds_memory_orchestrator/service/__init__.py +0 -25
  1020. package/tools/vds-scripts/memory_orchestrator/src/vds_memory_orchestrator/service/api/__init__.py +0 -0
  1021. package/tools/vds-scripts/memory_orchestrator/src/vds_memory_orchestrator/service/api/ai_memory_api.py +0 -1172
  1022. package/tools/vds-scripts/memory_orchestrator/src/vds_memory_orchestrator/service/api/mcp_api.py +0 -854
  1023. package/tools/vds-scripts/memory_orchestrator/src/vds_memory_orchestrator/service/api/openapi_config.py +0 -426
  1024. package/tools/vds-scripts/memory_orchestrator/src/vds_memory_orchestrator/service/api/status_mapping.py +0 -91
  1025. package/tools/vds-scripts/memory_orchestrator/src/vds_memory_orchestrator/service/api/v1/__init__.py +0 -0
  1026. package/tools/vds-scripts/memory_orchestrator/src/vds_memory_orchestrator/service/api/v1/analytics.py +0 -1406
  1027. package/tools/vds-scripts/memory_orchestrator/src/vds_memory_orchestrator/service/api/v1/auth.py +0 -409
  1028. package/tools/vds-scripts/memory_orchestrator/src/vds_memory_orchestrator/service/api/v1/authorization.py +0 -474
  1029. package/tools/vds-scripts/memory_orchestrator/src/vds_memory_orchestrator/service/api/v1/cache.py +0 -51
  1030. package/tools/vds-scripts/memory_orchestrator/src/vds_memory_orchestrator/service/api/v1/cleanup.py +0 -286
  1031. package/tools/vds-scripts/memory_orchestrator/src/vds_memory_orchestrator/service/api/v1/deduplication.py +0 -546
  1032. package/tools/vds-scripts/memory_orchestrator/src/vds_memory_orchestrator/service/api/v1/dependencies.py +0 -349
  1033. package/tools/vds-scripts/memory_orchestrator/src/vds_memory_orchestrator/service/api/v1/embedding.py +0 -190
  1034. package/tools/vds-scripts/memory_orchestrator/src/vds_memory_orchestrator/service/api/v1/export_import.py +0 -596
  1035. package/tools/vds-scripts/memory_orchestrator/src/vds_memory_orchestrator/service/api/v1/health.py +0 -35
  1036. package/tools/vds-scripts/memory_orchestrator/src/vds_memory_orchestrator/service/api/v1/hooks.py +0 -145
  1037. package/tools/vds-scripts/memory_orchestrator/src/vds_memory_orchestrator/service/api/v1/maintenance.py +0 -653
  1038. package/tools/vds-scripts/memory_orchestrator/src/vds_memory_orchestrator/service/api/v1/promotion.py +0 -68
  1039. package/tools/vds-scripts/memory_orchestrator/src/vds_memory_orchestrator/service/api/v1/reconciliation.py +0 -102
  1040. package/tools/vds-scripts/memory_orchestrator/src/vds_memory_orchestrator/service/api/v1/sharing.py +0 -674
  1041. package/tools/vds-scripts/memory_orchestrator/src/vds_memory_orchestrator/service/api/v1/tasks.py +0 -72
  1042. package/tools/vds-scripts/memory_orchestrator/src/vds_memory_orchestrator/service/api/v1/versioning.py +0 -483
  1043. package/tools/vds-scripts/memory_orchestrator/src/vds_memory_orchestrator/service/brain/__init__.py +0 -0
  1044. package/tools/vds-scripts/memory_orchestrator/src/vds_memory_orchestrator/service/brain/memory_manager.py +0 -914
  1045. package/tools/vds-scripts/memory_orchestrator/src/vds_memory_orchestrator/service/brain/research_analyzer.py +0 -839
  1046. package/tools/vds-scripts/memory_orchestrator/src/vds_memory_orchestrator/service/brain/vds_brain_agent.py +0 -1120
  1047. package/tools/vds-scripts/memory_orchestrator/src/vds_memory_orchestrator/service/config/memory_dedup.toml +0 -15
  1048. package/tools/vds-scripts/memory_orchestrator/src/vds_memory_orchestrator/service/core/__init__.py +0 -0
  1049. package/tools/vds-scripts/memory_orchestrator/src/vds_memory_orchestrator/service/core/ai_memory_exceptions.py +0 -225
  1050. package/tools/vds-scripts/memory_orchestrator/src/vds_memory_orchestrator/service/core/audit_log_writer.py +0 -59
  1051. package/tools/vds-scripts/memory_orchestrator/src/vds_memory_orchestrator/service/core/auth.py +0 -350
  1052. package/tools/vds-scripts/memory_orchestrator/src/vds_memory_orchestrator/service/core/config.py +0 -836
  1053. package/tools/vds-scripts/memory_orchestrator/src/vds_memory_orchestrator/service/core/exceptions.py +0 -203
  1054. package/tools/vds-scripts/memory_orchestrator/src/vds_memory_orchestrator/service/core/identity.py +0 -175
  1055. package/tools/vds-scripts/memory_orchestrator/src/vds_memory_orchestrator/service/core/input_validation.py +0 -785
  1056. package/tools/vds-scripts/memory_orchestrator/src/vds_memory_orchestrator/service/core/legacy_claim_normalizer.py +0 -142
  1057. package/tools/vds-scripts/memory_orchestrator/src/vds_memory_orchestrator/service/core/rate_limit.py +0 -587
  1058. package/tools/vds-scripts/memory_orchestrator/src/vds_memory_orchestrator/service/core/rbac_decorators.py +0 -531
  1059. package/tools/vds-scripts/memory_orchestrator/src/vds_memory_orchestrator/service/core/redis.py +0 -446
  1060. package/tools/vds-scripts/memory_orchestrator/src/vds_memory_orchestrator/service/core/scope_validator.py +0 -125
  1061. package/tools/vds-scripts/memory_orchestrator/src/vds_memory_orchestrator/service/core/security.py +0 -109
  1062. package/tools/vds-scripts/memory_orchestrator/src/vds_memory_orchestrator/service/core/security_middleware.py +0 -535
  1063. package/tools/vds-scripts/memory_orchestrator/src/vds_memory_orchestrator/service/core/tests/__init__.py +0 -0
  1064. package/tools/vds-scripts/memory_orchestrator/src/vds_memory_orchestrator/service/core/tests/test_input_validation.py +0 -68
  1065. package/tools/vds-scripts/memory_orchestrator/src/vds_memory_orchestrator/service/database/__init__.py +0 -0
  1066. package/tools/vds-scripts/memory_orchestrator/src/vds_memory_orchestrator/service/database/analytics_repository.py +0 -38
  1067. package/tools/vds-scripts/memory_orchestrator/src/vds_memory_orchestrator/service/database/postgres_manager.py +0 -1897
  1068. package/tools/vds-scripts/memory_orchestrator/src/vds_memory_orchestrator/service/database/rbac_migration.py +0 -57
  1069. package/tools/vds-scripts/memory_orchestrator/src/vds_memory_orchestrator/service/database/redis_manager.py +0 -617
  1070. package/tools/vds-scripts/memory_orchestrator/src/vds_memory_orchestrator/service/domain/__init__.py +0 -1
  1071. package/tools/vds-scripts/memory_orchestrator/src/vds_memory_orchestrator/service/domain/entities/__init__.py +0 -1
  1072. package/tools/vds-scripts/memory_orchestrator/src/vds_memory_orchestrator/service/domain/entities/user.py +0 -96
  1073. package/tools/vds-scripts/memory_orchestrator/src/vds_memory_orchestrator/service/hooks/__init__.py +0 -0
  1074. package/tools/vds-scripts/memory_orchestrator/src/vds_memory_orchestrator/service/hooks/storage_strategy_hook.py +0 -465
  1075. package/tools/vds-scripts/memory_orchestrator/src/vds_memory_orchestrator/service/integrations/__init__.py +0 -0
  1076. package/tools/vds-scripts/memory_orchestrator/src/vds_memory_orchestrator/service/integrations/memory_transformer.py +0 -827
  1077. package/tools/vds-scripts/memory_orchestrator/src/vds_memory_orchestrator/service/main.py +0 -491
  1078. package/tools/vds-scripts/memory_orchestrator/src/vds_memory_orchestrator/service/mcp/__init__.py +0 -20
  1079. package/tools/vds-scripts/memory_orchestrator/src/vds_memory_orchestrator/service/mcp/env_config_parser.py +0 -188
  1080. package/tools/vds-scripts/memory_orchestrator/src/vds_memory_orchestrator/service/mcp/official_mcp_client.py +0 -1574
  1081. package/tools/vds-scripts/memory_orchestrator/src/vds_memory_orchestrator/service/mcp/working_mcp_interface.py +0 -340
  1082. package/tools/vds-scripts/memory_orchestrator/src/vds_memory_orchestrator/service/models/__init__.py +0 -125
  1083. package/tools/vds-scripts/memory_orchestrator/src/vds_memory_orchestrator/service/models/ai_memory_models.py +0 -1587
  1084. package/tools/vds-scripts/memory_orchestrator/src/vds_memory_orchestrator/service/models/analytics_models.py +0 -766
  1085. package/tools/vds-scripts/memory_orchestrator/src/vds_memory_orchestrator/service/models/auth_models.py +0 -460
  1086. package/tools/vds-scripts/memory_orchestrator/src/vds_memory_orchestrator/service/models/database.py +0 -841
  1087. package/tools/vds-scripts/memory_orchestrator/src/vds_memory_orchestrator/service/models/deduplication_models.py +0 -354
  1088. package/tools/vds-scripts/memory_orchestrator/src/vds_memory_orchestrator/service/models/export_import_models.py +0 -353
  1089. package/tools/vds-scripts/memory_orchestrator/src/vds_memory_orchestrator/service/models/rbac.py +0 -9
  1090. package/tools/vds-scripts/memory_orchestrator/src/vds_memory_orchestrator/service/models/resource_ownership.py +0 -282
  1091. package/tools/vds-scripts/memory_orchestrator/src/vds_memory_orchestrator/service/models/search_models.py +0 -427
  1092. package/tools/vds-scripts/memory_orchestrator/src/vds_memory_orchestrator/service/models/search_models_additional.py +0 -322
  1093. package/tools/vds-scripts/memory_orchestrator/src/vds_memory_orchestrator/service/models/sharing_models.py +0 -366
  1094. package/tools/vds-scripts/memory_orchestrator/src/vds_memory_orchestrator/service/perf/__init__.py +0 -0
  1095. package/tools/vds-scripts/memory_orchestrator/src/vds_memory_orchestrator/service/repositories/__init__.py +0 -1
  1096. package/tools/vds-scripts/memory_orchestrator/src/vds_memory_orchestrator/service/repositories/dev_mode_user_repository.py +0 -194
  1097. package/tools/vds-scripts/memory_orchestrator/src/vds_memory_orchestrator/service/repositories/postgres_user_repository.py +0 -280
  1098. package/tools/vds-scripts/memory_orchestrator/src/vds_memory_orchestrator/service/repositories/service_account_repository.py +0 -330
  1099. package/tools/vds-scripts/memory_orchestrator/src/vds_memory_orchestrator/service/repositories/user_repository.py +0 -77
  1100. package/tools/vds-scripts/memory_orchestrator/src/vds_memory_orchestrator/service/services/__init__.py +0 -0
  1101. package/tools/vds-scripts/memory_orchestrator/src/vds_memory_orchestrator/service/services/ai_memory_service.py +0 -2754
  1102. package/tools/vds-scripts/memory_orchestrator/src/vds_memory_orchestrator/service/services/analytics_events.py +0 -104
  1103. package/tools/vds-scripts/memory_orchestrator/src/vds_memory_orchestrator/service/services/analytics_service.py +0 -2825
  1104. package/tools/vds-scripts/memory_orchestrator/src/vds_memory_orchestrator/service/services/auth.py +0 -207
  1105. package/tools/vds-scripts/memory_orchestrator/src/vds_memory_orchestrator/service/services/embedding_service.py +0 -51
  1106. package/tools/vds-scripts/memory_orchestrator/src/vds_memory_orchestrator/service/services/entity_backfill_service.py +0 -343
  1107. package/tools/vds-scripts/memory_orchestrator/src/vds_memory_orchestrator/service/services/fallback_search_service.py +0 -327
  1108. package/tools/vds-scripts/memory_orchestrator/src/vds_memory_orchestrator/service/services/health_check.py +0 -1556
  1109. package/tools/vds-scripts/memory_orchestrator/src/vds_memory_orchestrator/service/services/mcp_integration_service.py +0 -224
  1110. package/tools/vds-scripts/memory_orchestrator/src/vds_memory_orchestrator/service/services/mem0_adapter.py +0 -796
  1111. package/tools/vds-scripts/memory_orchestrator/src/vds_memory_orchestrator/service/services/mem0_client.py +0 -48
  1112. package/tools/vds-scripts/memory_orchestrator/src/vds_memory_orchestrator/service/services/mem0_sync_service.py +0 -484
  1113. package/tools/vds-scripts/memory_orchestrator/src/vds_memory_orchestrator/service/services/memory_admin_service.py +0 -1011
  1114. package/tools/vds-scripts/memory_orchestrator/src/vds_memory_orchestrator/service/services/memory_crud_service.py +0 -1469
  1115. package/tools/vds-scripts/memory_orchestrator/src/vds_memory_orchestrator/service/services/memory_deduplication.py +0 -1761
  1116. package/tools/vds-scripts/memory_orchestrator/src/vds_memory_orchestrator/service/services/memory_evolution/__init__.py +0 -17
  1117. package/tools/vds-scripts/memory_orchestrator/src/vds_memory_orchestrator/service/services/memory_evolution/celery_app.py +0 -70
  1118. package/tools/vds-scripts/memory_orchestrator/src/vds_memory_orchestrator/service/services/memory_evolution/celery_entrypoint.py +0 -15
  1119. package/tools/vds-scripts/memory_orchestrator/src/vds_memory_orchestrator/service/services/memory_evolution/config_loader.py +0 -275
  1120. package/tools/vds-scripts/memory_orchestrator/src/vds_memory_orchestrator/service/services/memory_evolution/consolidation_executor.py +0 -309
  1121. package/tools/vds-scripts/memory_orchestrator/src/vds_memory_orchestrator/service/services/memory_evolution/processor.py +0 -574
  1122. package/tools/vds-scripts/memory_orchestrator/src/vds_memory_orchestrator/service/services/memory_evolution/rules.py +0 -136
  1123. package/tools/vds-scripts/memory_orchestrator/src/vds_memory_orchestrator/service/services/memory_evolution/shadow_soak.py +0 -161
  1124. package/tools/vds-scripts/memory_orchestrator/src/vds_memory_orchestrator/service/services/memory_evolution/sweeper.py +0 -216
  1125. package/tools/vds-scripts/memory_orchestrator/src/vds_memory_orchestrator/service/services/memory_evolution/tracker.py +0 -265
  1126. package/tools/vds-scripts/memory_orchestrator/src/vds_memory_orchestrator/service/services/memory_evolution/worker.py +0 -780
  1127. package/tools/vds-scripts/memory_orchestrator/src/vds_memory_orchestrator/service/services/memory_export_import.py +0 -1403
  1128. package/tools/vds-scripts/memory_orchestrator/src/vds_memory_orchestrator/service/services/memory_search_service.py +0 -1164
  1129. package/tools/vds-scripts/memory_orchestrator/src/vds_memory_orchestrator/service/services/memory_sharing.py +0 -741
  1130. package/tools/vds-scripts/memory_orchestrator/src/vds_memory_orchestrator/service/services/memory_versioning.py +0 -592
  1131. package/tools/vds-scripts/memory_orchestrator/src/vds_memory_orchestrator/service/services/ownership_service.py +0 -798
  1132. package/tools/vds-scripts/memory_orchestrator/src/vds_memory_orchestrator/service/services/promotion_service.py +0 -187
  1133. package/tools/vds-scripts/memory_orchestrator/src/vds_memory_orchestrator/service/services/query_router_service.py +0 -523
  1134. package/tools/vds-scripts/memory_orchestrator/src/vds_memory_orchestrator/service/services/rbac_service.py +0 -711
  1135. package/tools/vds-scripts/memory_orchestrator/src/vds_memory_orchestrator/service/services/semantic_cache_service.py +0 -605
  1136. package/tools/vds-scripts/memory_orchestrator/src/vds_memory_orchestrator/service/services/session_template_service.py +0 -76
  1137. package/tools/vds-scripts/memory_orchestrator/src/vds_memory_orchestrator/service/services/storage_strategy/__init__.py +0 -35
  1138. package/tools/vds-scripts/memory_orchestrator/src/vds_memory_orchestrator/service/services/storage_strategy/consolidation_worker.py +0 -384
  1139. package/tools/vds-scripts/memory_orchestrator/src/vds_memory_orchestrator/service/services/storage_strategy/content_analyzer.py +0 -482
  1140. package/tools/vds-scripts/memory_orchestrator/src/vds_memory_orchestrator/service/services/storage_strategy/pattern_matcher.py +0 -363
  1141. package/tools/vds-scripts/memory_orchestrator/src/vds_memory_orchestrator/service/services/storage_strategy/rule_engine.py +0 -447
  1142. package/tools/vds-scripts/memory_orchestrator/src/vds_memory_orchestrator/service/services/storage_strategy/storage_engine.py +0 -299
  1143. package/tools/vds-scripts/memory_orchestrator/src/vds_memory_orchestrator/service/services/tool_registry_service.py +0 -544
  1144. package/tools/vds-scripts/memory_orchestrator/src/vds_memory_orchestrator/service/services/triage_service.py +0 -250
  1145. package/tools/vds-scripts/memory_orchestrator/src/vds_memory_orchestrator/service/services/vector_search_service.py +0 -497
  1146. package/tools/vds-scripts/memory_orchestrator/src/vds_memory_orchestrator/service/use_cases/__init__.py +0 -1
  1147. package/tools/vds-scripts/memory_orchestrator/src/vds_memory_orchestrator/service/use_cases/auth/__init__.py +0 -1
  1148. package/tools/vds-scripts/memory_orchestrator/src/vds_memory_orchestrator/service/use_cases/auth/create_user_use_case.py +0 -96
  1149. package/tools/vds-scripts/memory_orchestrator/src/vds_memory_orchestrator/service/use_cases/auth/exceptions.py +0 -94
  1150. package/tools/vds-scripts/memory_orchestrator/src/vds_memory_orchestrator/service/use_cases/auth/login_use_case.py +0 -217
  1151. package/tools/vds-scripts/memory_orchestrator/src/vds_memory_orchestrator/service/use_cases/auth/policies.py +0 -102
  1152. package/tools/vds-scripts/memory_orchestrator/src/vds_memory_orchestrator/service/use_cases/auth/refresh_token_use_case.py +0 -86
  1153. package/tools/vds-scripts/memory_orchestrator/src/vds_memory_orchestrator/service/utils/__init__.py +0 -0
  1154. package/tools/vds-scripts/memory_orchestrator/src/vds_memory_orchestrator/service/utils/data_transformer.py +0 -28
  1155. package/tools/vds-scripts/memory_orchestrator/tests/__init__.py +0 -0
  1156. package/tools/vds-scripts/memory_orchestrator/tests/auth/__init__.py +0 -6
  1157. package/tools/vds-scripts/memory_orchestrator/tests/auth/conftest.py +0 -124
  1158. package/tools/vds-scripts/memory_orchestrator/tests/auth/test_acquire_jwt_token_deprecation.py +0 -176
  1159. package/tools/vds-scripts/memory_orchestrator/tests/auth/test_alembic_0010_migration.py +0 -193
  1160. package/tools/vds-scripts/memory_orchestrator/tests/auth/test_alembic_0011_users_migration.py +0 -234
  1161. package/tools/vds-scripts/memory_orchestrator/tests/auth/test_alembic_0012_audit_log_v3_migration.py +0 -184
  1162. package/tools/vds-scripts/memory_orchestrator/tests/auth/test_analytics_stream_machine_hint.py +0 -149
  1163. package/tools/vds-scripts/memory_orchestrator/tests/auth/test_audit_log_identity_fields.py +0 -369
  1164. package/tools/vds-scripts/memory_orchestrator/tests/auth/test_audit_log_v3_schema.py +0 -186
  1165. package/tools/vds-scripts/memory_orchestrator/tests/auth/test_auth_api_endpoints.py +0 -264
  1166. package/tools/vds-scripts/memory_orchestrator/tests/auth/test_authenticators.py +0 -343
  1167. package/tools/vds-scripts/memory_orchestrator/tests/auth/test_conftest_factory.py +0 -108
  1168. package/tools/vds-scripts/memory_orchestrator/tests/auth/test_create_user_use_case.py +0 -246
  1169. package/tools/vds-scripts/memory_orchestrator/tests/auth/test_dependencies.py +0 -232
  1170. package/tools/vds-scripts/memory_orchestrator/tests/auth/test_dev_mode_claim_fidelity.py +0 -87
  1171. package/tools/vds-scripts/memory_orchestrator/tests/auth/test_dev_mode_parity.py +0 -187
  1172. package/tools/vds-scripts/memory_orchestrator/tests/auth/test_dev_mode_user_repository.py +0 -271
  1173. package/tools/vds-scripts/memory_orchestrator/tests/auth/test_get_current_identity.py +0 -403
  1174. package/tools/vds-scripts/memory_orchestrator/tests/auth/test_identity.py +0 -272
  1175. package/tools/vds-scripts/memory_orchestrator/tests/auth/test_jwt_auth.py +0 -658
  1176. package/tools/vds-scripts/memory_orchestrator/tests/auth/test_legacy_callers_smoke.py +0 -141
  1177. package/tools/vds-scripts/memory_orchestrator/tests/auth/test_legacy_claim_compat.py +0 -234
  1178. package/tools/vds-scripts/memory_orchestrator/tests/auth/test_legacy_claim_normalizer.py +0 -315
  1179. package/tools/vds-scripts/memory_orchestrator/tests/auth/test_lockout_policy.py +0 -124
  1180. package/tools/vds-scripts/memory_orchestrator/tests/auth/test_login_use_case.py +0 -455
  1181. package/tools/vds-scripts/memory_orchestrator/tests/auth/test_lsp_regression_contracts.py +0 -259
  1182. package/tools/vds-scripts/memory_orchestrator/tests/auth/test_machine_context_detection.py +0 -160
  1183. package/tools/vds-scripts/memory_orchestrator/tests/auth/test_me_endpoint_no_deprecation.py +0 -199
  1184. package/tools/vds-scripts/memory_orchestrator/tests/auth/test_mint_service_token.py +0 -244
  1185. package/tools/vds-scripts/memory_orchestrator/tests/auth/test_postgres_service_account_repository.py +0 -222
  1186. package/tools/vds-scripts/memory_orchestrator/tests/auth/test_postgres_user_repository.py +0 -302
  1187. package/tools/vds-scripts/memory_orchestrator/tests/auth/test_refresh_token_use_case.py +0 -187
  1188. package/tools/vds-scripts/memory_orchestrator/tests/auth/test_scope_validator.py +0 -249
  1189. package/tools/vds-scripts/memory_orchestrator/tests/auth/test_security.py +0 -158
  1190. package/tools/vds-scripts/memory_orchestrator/tests/auth/test_service_account_entity.py +0 -146
  1191. package/tools/vds-scripts/memory_orchestrator/tests/auth/test_service_account_repository_protocol.py +0 -60
  1192. package/tools/vds-scripts/memory_orchestrator/tests/auth/test_token_precedence.py +0 -205
  1193. package/tools/vds-scripts/memory_orchestrator/tests/auth/test_user_entity.py +0 -217
  1194. package/tools/vds-scripts/memory_orchestrator/tests/auth/test_user_repository_protocol.py +0 -141
  1195. package/tools/vds-scripts/memory_orchestrator/tests/cli/__init__.py +0 -1
  1196. package/tools/vds-scripts/memory_orchestrator/tests/cli/test_memory_create_user.py +0 -208
  1197. package/tools/vds-scripts/memory_orchestrator/tests/conftest.py +0 -184
  1198. package/tools/vds-scripts/memory_orchestrator/tests/integration/__init__.py +0 -0
  1199. package/tools/vds-scripts/memory_orchestrator/tests/integration/api/__init__.py +0 -0
  1200. package/tools/vds-scripts/memory_orchestrator/tests/integration/api/test_auth_login_e2e.py +0 -425
  1201. package/tools/vds-scripts/memory_orchestrator/tests/integration/api/test_health_strict_json.py +0 -197
  1202. package/tools/vds-scripts/memory_orchestrator/tests/integration/test_async_mode_status.py +0 -192
  1203. package/tools/vds-scripts/memory_orchestrator/tests/integration/test_vami020_dual_correctness.py +0 -218
  1204. package/tools/vds-scripts/memory_orchestrator/tests/integration/test_worktree_compose.py +0 -257
  1205. package/tools/vds-scripts/memory_orchestrator/tests/service/TEST_DOCUMENTATION.md +0 -467
  1206. package/tools/vds-scripts/memory_orchestrator/tests/service/__init__.py +0 -0
  1207. package/tools/vds-scripts/memory_orchestrator/tests/service/conftest.py +0 -1040
  1208. package/tools/vds-scripts/memory_orchestrator/tests/service/conftest_root.py +0 -63
  1209. package/tools/vds-scripts/memory_orchestrator/tests/service/postman/Local Environment.postman_environment.json +0 -46
  1210. package/tools/vds-scripts/memory_orchestrator/tests/service/postman/README.md +0 -302
  1211. package/tools/vds-scripts/memory_orchestrator/tests/service/postman/VDS Analytics API.postman_collection.json +0 -562
  1212. package/tools/vds-scripts/memory_orchestrator/tests/service/pytest.integration.ini +0 -21
  1213. package/tools/vds-scripts/memory_orchestrator/tests/service/pytest.unit.ini +0 -21
  1214. package/tools/vds-scripts/memory_orchestrator/tests/service/services/__init__.py +0 -0
  1215. package/tools/vds-scripts/memory_orchestrator/tests/service/services/test_health_aggregation.py +0 -370
  1216. package/tools/vds-scripts/memory_orchestrator/tests/service/test_ai_memory_api.py +0 -797
  1217. package/tools/vds-scripts/memory_orchestrator/tests/service/test_ai_memory_service.py +0 -1661
  1218. package/tools/vds-scripts/memory_orchestrator/tests/service/test_ai_memory_service_routing.py +0 -165
  1219. package/tools/vds-scripts/memory_orchestrator/tests/service/test_analytics_alerts.py +0 -89
  1220. package/tools/vds-scripts/memory_orchestrator/tests/service/test_analytics_api_integration.py +0 -604
  1221. package/tools/vds-scripts/memory_orchestrator/tests/service/test_analytics_bi.py +0 -49
  1222. package/tools/vds-scripts/memory_orchestrator/tests/service/test_analytics_dashboard_e2e.py +0 -106
  1223. package/tools/vds-scripts/memory_orchestrator/tests/service/test_analytics_dashboards.py +0 -127
  1224. package/tools/vds-scripts/memory_orchestrator/tests/service/test_analytics_enhanced.py +0 -575
  1225. package/tools/vds-scripts/memory_orchestrator/tests/service/test_analytics_external.py +0 -44
  1226. package/tools/vds-scripts/memory_orchestrator/tests/service/test_analytics_performance_metrics.py +0 -60
  1227. package/tools/vds-scripts/memory_orchestrator/tests/service/test_analytics_realtime.py +0 -63
  1228. package/tools/vds-scripts/memory_orchestrator/tests/service/test_analytics_reports.py +0 -138
  1229. package/tools/vds-scripts/memory_orchestrator/tests/service/test_analytics_service.py +0 -59
  1230. package/tools/vds-scripts/memory_orchestrator/tests/service/test_analytics_stream_cli.py +0 -305
  1231. package/tools/vds-scripts/memory_orchestrator/tests/service/test_analytics_websocket.py +0 -145
  1232. package/tools/vds-scripts/memory_orchestrator/tests/service/test_basic.py +0 -29
  1233. package/tools/vds-scripts/memory_orchestrator/tests/service/test_cache_warm_endpoint.py +0 -38
  1234. package/tools/vds-scripts/memory_orchestrator/tests/service/test_cache_warming_simple.py +0 -197
  1235. package/tools/vds-scripts/memory_orchestrator/tests/service/test_cache_warming_validation.py +0 -378
  1236. package/tools/vds-scripts/memory_orchestrator/tests/service/test_circuit_breaker_integration.py +0 -336
  1237. package/tools/vds-scripts/memory_orchestrator/tests/service/test_cleanup_endpoint.py +0 -126
  1238. package/tools/vds-scripts/memory_orchestrator/tests/service/test_concurrent_load.py +0 -603
  1239. package/tools/vds-scripts/memory_orchestrator/tests/service/test_cors_origins_validator.py +0 -48
  1240. package/tools/vds-scripts/memory_orchestrator/tests/service/test_drain_evolution.py +0 -130
  1241. package/tools/vds-scripts/memory_orchestrator/tests/service/test_embedding_lifecycle.py +0 -34
  1242. package/tools/vds-scripts/memory_orchestrator/tests/service/test_embedding_migration.py +0 -167
  1243. package/tools/vds-scripts/memory_orchestrator/tests/service/test_embedding_protocol_shape.py +0 -84
  1244. package/tools/vds-scripts/memory_orchestrator/tests/service/test_embedding_routes_w9.py +0 -340
  1245. package/tools/vds-scripts/memory_orchestrator/tests/service/test_embedding_service.py +0 -291
  1246. package/tools/vds-scripts/memory_orchestrator/tests/service/test_entity_backfill.py +0 -248
  1247. package/tools/vds-scripts/memory_orchestrator/tests/service/test_fallback_metrics.py +0 -582
  1248. package/tools/vds-scripts/memory_orchestrator/tests/service/test_fallback_search.py +0 -397
  1249. package/tools/vds-scripts/memory_orchestrator/tests/service/test_hooks.py +0 -149
  1250. package/tools/vds-scripts/memory_orchestrator/tests/service/test_include_internal_filter.py +0 -301
  1251. package/tools/vds-scripts/memory_orchestrator/tests/service/test_input_validation.py +0 -713
  1252. package/tools/vds-scripts/memory_orchestrator/tests/service/test_load_batch_endpoint.py +0 -300
  1253. package/tools/vds-scripts/memory_orchestrator/tests/service/test_maintenance_endpoints.py +0 -576
  1254. package/tools/vds-scripts/memory_orchestrator/tests/service/test_mcp_integration_service.py +0 -99
  1255. package/tools/vds-scripts/memory_orchestrator/tests/service/test_mem0_adapter_cloud.py +0 -111
  1256. package/tools/vds-scripts/memory_orchestrator/tests/service/test_mem0_adapter_dual_mode.py +0 -112
  1257. package/tools/vds-scripts/memory_orchestrator/tests/service/test_mem0_adapter_hybrid.py +0 -187
  1258. package/tools/vds-scripts/memory_orchestrator/tests/service/test_mem0_adapter_return_shape.py +0 -188
  1259. package/tools/vds-scripts/memory_orchestrator/tests/service/test_mem0_crud_integration.py +0 -190
  1260. package/tools/vds-scripts/memory_orchestrator/tests/service/test_mem0_sync_fix.py +0 -349
  1261. package/tools/vds-scripts/memory_orchestrator/tests/service/test_mem0_sync_service_resolver.py +0 -106
  1262. package/tools/vds-scripts/memory_orchestrator/tests/service/test_memory_client_maintenance.py +0 -121
  1263. package/tools/vds-scripts/memory_orchestrator/tests/service/test_memory_consolidation_executor.py +0 -47
  1264. package/tools/vds-scripts/memory_orchestrator/tests/service/test_memory_deduplication_service.py +0 -1275
  1265. package/tools/vds-scripts/memory_orchestrator/tests/service/test_memory_evolution_phase232.py +0 -427
  1266. package/tools/vds-scripts/memory_orchestrator/tests/service/test_memory_evolution_processor.py +0 -110
  1267. package/tools/vds-scripts/memory_orchestrator/tests/service/test_memory_evolution_rules.py +0 -29
  1268. package/tools/vds-scripts/memory_orchestrator/tests/service/test_memory_evolution_sweeper.py +0 -17
  1269. package/tools/vds-scripts/memory_orchestrator/tests/service/test_memory_evolution_tracker.py +0 -190
  1270. package/tools/vds-scripts/memory_orchestrator/tests/service/test_memory_export_import.py +0 -79
  1271. package/tools/vds-scripts/memory_orchestrator/tests/service/test_memory_sharing_service.py +0 -121
  1272. package/tools/vds-scripts/memory_orchestrator/tests/service/test_memory_versioning.py +0 -155
  1273. package/tools/vds-scripts/memory_orchestrator/tests/service/test_ollama_gating.py +0 -58
  1274. package/tools/vds-scripts/memory_orchestrator/tests/service/test_ownership_integration.py +0 -678
  1275. package/tools/vds-scripts/memory_orchestrator/tests/service/test_phase175_health_probe_and_get_event_guard.py +0 -131
  1276. package/tools/vds-scripts/memory_orchestrator/tests/service/test_postgres_pool_settings.py +0 -38
  1277. package/tools/vds-scripts/memory_orchestrator/tests/service/test_postgres_query_metrics.py +0 -28
  1278. package/tools/vds-scripts/memory_orchestrator/tests/service/test_postgres_update_cas.py +0 -86
  1279. package/tools/vds-scripts/memory_orchestrator/tests/service/test_rate_limit.py +0 -551
  1280. package/tools/vds-scripts/memory_orchestrator/tests/service/test_rbac.py +0 -661
  1281. package/tools/vds-scripts/memory_orchestrator/tests/service/test_recover_with_infer_false.py +0 -210
  1282. package/tools/vds-scripts/memory_orchestrator/tests/service/test_remote_endpoints.py +0 -59
  1283. package/tools/vds-scripts/memory_orchestrator/tests/service/test_schema_migration.py +0 -267
  1284. package/tools/vds-scripts/memory_orchestrator/tests/service/test_search_service_unwrap.py +0 -38
  1285. package/tools/vds-scripts/memory_orchestrator/tests/service/test_security_integration.py +0 -699
  1286. package/tools/vds-scripts/memory_orchestrator/tests/service/test_security_middleware.py +0 -532
  1287. package/tools/vds-scripts/memory_orchestrator/tests/service/test_semantic_cache_telemetry.py +0 -300
  1288. package/tools/vds-scripts/memory_orchestrator/tests/service/test_session_template_endpoints.py +0 -99
  1289. package/tools/vds-scripts/memory_orchestrator/tests/service/test_session_template_service.py +0 -77
  1290. package/tools/vds-scripts/memory_orchestrator/tests/service/test_sharing_api.py +0 -202
  1291. package/tools/vds-scripts/memory_orchestrator/tests/service/test_storage_strategy.py +0 -46
  1292. package/tools/vds-scripts/memory_orchestrator/tests/service/test_tasks_endpoint.py +0 -80
  1293. package/tools/vds-scripts/memory_orchestrator/tests/service/test_temporal_filters.py +0 -653
  1294. package/tools/vds-scripts/memory_orchestrator/tests/service/test_topic_clustering_benchmark.py +0 -657
  1295. package/tools/vds-scripts/memory_orchestrator/tests/service/test_triage.py +0 -346
  1296. package/tools/vds-scripts/memory_orchestrator/tests/service/test_unit_comprehensive.py +0 -1054
  1297. package/tools/vds-scripts/memory_orchestrator/tests/service/test_versioning_api.py +0 -81
  1298. package/tools/vds-scripts/memory_orchestrator/tests/service/test_wave2a_reconciliation.py +0 -422
  1299. package/tools/vds-scripts/memory_orchestrator/tests/service/test_wave3_stall_metrics.py +0 -578
  1300. package/tools/vds-scripts/memory_orchestrator/tests/service/test_websocket_auth.py +0 -227
  1301. package/tools/vds-scripts/memory_orchestrator/tests/service/test_writeback_classification.py +0 -55
  1302. package/tools/vds-scripts/memory_orchestrator/tests/test_agents/__init__.py +0 -0
  1303. package/tools/vds-scripts/memory_orchestrator/tests/test_agents/test_consolidation_agent.py +0 -128
  1304. package/tools/vds-scripts/memory_orchestrator/tests/test_agents/test_extraction_agent.py +0 -140
  1305. package/tools/vds-scripts/memory_orchestrator/tests/test_agents/test_intent_agent.py +0 -120
  1306. package/tools/vds-scripts/memory_orchestrator/tests/test_agents/test_model_factory.py +0 -85
  1307. package/tools/vds-scripts/memory_orchestrator/tests/test_agents/test_wiring.py +0 -267
  1308. package/tools/vds-scripts/memory_orchestrator/tests/test_alembic_migrations_phase229.py +0 -433
  1309. package/tools/vds-scripts/memory_orchestrator/tests/test_async_compat_lint.py +0 -178
  1310. package/tools/vds-scripts/memory_orchestrator/tests/test_cache_metrics_status.py +0 -124
  1311. package/tools/vds-scripts/memory_orchestrator/tests/test_cli.py +0 -517
  1312. package/tools/vds-scripts/memory_orchestrator/tests/test_cli_health.py +0 -68
  1313. package/tools/vds-scripts/memory_orchestrator/tests/test_client.py +0 -434
  1314. package/tools/vds-scripts/memory_orchestrator/tests/test_config_lazy_validation.py +0 -96
  1315. package/tools/vds-scripts/memory_orchestrator/tests/test_log_hygiene.py +0 -148
  1316. package/tools/vds-scripts/memory_orchestrator/tests/test_mem0_adapter.py +0 -810
  1317. package/tools/vds-scripts/memory_orchestrator/tests/test_mem0_adapter_dual_inversion.py +0 -185
  1318. package/tools/vds-scripts/memory_orchestrator/tests/test_mem0_event_resolver.py +0 -158
  1319. package/tools/vds-scripts/memory_orchestrator/tests/test_mem0_synced_subscriber.py +0 -294
  1320. package/tools/vds-scripts/memory_orchestrator/tests/test_postgres_vector_search_warning.py +0 -176
  1321. package/tools/vds-scripts/memory_orchestrator/tests/test_processor_adapter_diagnostic_phase216.py +0 -71
  1322. package/tools/vds-scripts/memory_orchestrator/tests/test_promotion_cli.py +0 -218
  1323. package/tools/vds-scripts/memory_orchestrator/tests/test_promotion_service.py +0 -322
  1324. package/tools/vds-scripts/memory_orchestrator/tests/test_status_endpoint.py +0 -193
  1325. package/tools/vds-scripts/memory_orchestrator/tests/test_worker_status_emission.py +0 -150
  1326. package/tools/vds-scripts/memory_orchestrator/tests/verification/__init__.py +0 -0
  1327. package/tools/vds-scripts/memory_orchestrator/tests/verification/conftest.py +0 -33
  1328. package/tools/vds-scripts/memory_orchestrator/tests/verification/test_live_api.py +0 -98
  1329. package/tools/vds-scripts/memory_orchestrator/uv.lock +0 -8875
  1330. package/tools/vds-scripts/metabase_orchestrator/pyproject.toml +0 -40
  1331. package/tools/vds-scripts/metabase_orchestrator/src/vds_metabase_orchestrator/__init__.py +0 -3
  1332. package/tools/vds-scripts/metabase_orchestrator/src/vds_metabase_orchestrator/cli.py +0 -519
  1333. package/tools/vds-scripts/metabase_orchestrator/src/vds_metabase_orchestrator/client.py +0 -417
  1334. package/tools/vds-scripts/metabase_orchestrator/src/vds_metabase_orchestrator/config.py +0 -172
  1335. package/tools/vds-scripts/metabase_orchestrator/tests/__init__.py +0 -1
  1336. package/tools/vds-scripts/platform_core/pyproject.toml +0 -49
  1337. package/tools/vds-scripts/platform_core/src/vds_platform_core/__init__.py +0 -16
  1338. package/tools/vds-scripts/platform_core/src/vds_platform_core/alembic/__init__.py +0 -18
  1339. package/tools/vds-scripts/platform_core/src/vds_platform_core/alembic/runtime.py +0 -139
  1340. package/tools/vds-scripts/platform_core/src/vds_platform_core/config.py +0 -88
  1341. package/tools/vds-scripts/platform_core/src/vds_platform_core/credentials.py +0 -40
  1342. package/tools/vds-scripts/platform_core/src/vds_platform_core/env.py +0 -24
  1343. package/tools/vds-scripts/platform_core/src/vds_platform_core/errors.py +0 -127
  1344. package/tools/vds-scripts/platform_core/src/vds_platform_core/http/__init__.py +0 -18
  1345. package/tools/vds-scripts/platform_core/src/vds_platform_core/http/auth.py +0 -32
  1346. package/tools/vds-scripts/platform_core/src/vds_platform_core/http/errors.py +0 -47
  1347. package/tools/vds-scripts/platform_core/src/vds_platform_core/http/pagination.py +0 -65
  1348. package/tools/vds-scripts/platform_core/src/vds_platform_core/http/retry.py +0 -62
  1349. package/tools/vds-scripts/platform_core/src/vds_platform_core/http/stack.py +0 -61
  1350. package/tools/vds-scripts/platform_core/src/vds_platform_core/logging.py +0 -132
  1351. package/tools/vds-scripts/platform_core/src/vds_platform_core/protocols.py +0 -77
  1352. package/tools/vds-scripts/platform_core/src/vds_platform_core/serialization.py +0 -80
  1353. package/tools/vds-scripts/platform_core/src/vds_platform_core/severity.py +0 -175
  1354. package/tools/vds-scripts/platform_core/tests/__init__.py +0 -0
  1355. package/tools/vds-scripts/platform_core/tests/conftest.py +0 -1
  1356. package/tools/vds-scripts/platform_core/tests/test_alembic_runtime.py +0 -300
  1357. package/tools/vds-scripts/platform_core/tests/test_auth.py +0 -84
  1358. package/tools/vds-scripts/platform_core/tests/test_config.py +0 -83
  1359. package/tools/vds-scripts/platform_core/tests/test_credentials.py +0 -73
  1360. package/tools/vds-scripts/platform_core/tests/test_env.py +0 -56
  1361. package/tools/vds-scripts/platform_core/tests/test_errors.py +0 -201
  1362. package/tools/vds-scripts/platform_core/tests/test_errors_http.py +0 -74
  1363. package/tools/vds-scripts/platform_core/tests/test_http_settings.py +0 -116
  1364. package/tools/vds-scripts/platform_core/tests/test_logging.py +0 -148
  1365. package/tools/vds-scripts/platform_core/tests/test_pagination.py +0 -153
  1366. package/tools/vds-scripts/platform_core/tests/test_protocols.py +0 -132
  1367. package/tools/vds-scripts/platform_core/tests/test_retry.py +0 -151
  1368. package/tools/vds-scripts/platform_core/tests/test_serialization.py +0 -92
  1369. package/tools/vds-scripts/platform_core/tests/test_severity.py +0 -178
  1370. package/tools/vds-scripts/platform_core/tests/test_stack.py +0 -130
  1371. package/tools/vds-scripts/platform_core/uv.lock +0 -341
  1372. package/tools/vds-scripts/pyproject.toml +0 -153
  1373. package/tools/vds-scripts/pyrightconfig.json +0 -82
  1374. package/tools/vds-scripts/repo-manifest.yaml +0 -380
  1375. package/tools/vds-scripts/repo-manifest.yaml.example +0 -25
  1376. package/tools/vds-scripts/ruff.toml +0 -103
  1377. package/tools/vds-scripts/scheduler_orchestrator/CLOSURE-v2.0.18.md +0 -99
  1378. package/tools/vds-scripts/scheduler_orchestrator/DEPLOYMENT-RUNBOOK.md +0 -655
  1379. package/tools/vds-scripts/scheduler_orchestrator/Dockerfile +0 -110
  1380. package/tools/vds-scripts/scheduler_orchestrator/GV-VERIFICATION.md +0 -81
  1381. package/tools/vds-scripts/scheduler_orchestrator/README.md +0 -96
  1382. package/tools/vds-scripts/scheduler_orchestrator/WAVE-2-GUARDRAILS.md +0 -89
  1383. package/tools/vds-scripts/scheduler_orchestrator/alembic/env.py +0 -41
  1384. package/tools/vds-scripts/scheduler_orchestrator/alembic/script.py.mako +0 -28
  1385. package/tools/vds-scripts/scheduler_orchestrator/alembic/versions/0001_create_sched_schema.py +0 -57
  1386. package/tools/vds-scripts/scheduler_orchestrator/alembic/versions/20260424_04f7169497f6_create_domain_tables.py +0 -166
  1387. package/tools/vds-scripts/scheduler_orchestrator/alembic/versions/20260424_a1b2c3d4e5f6_add_overlap_policy_to_schedules.py +0 -57
  1388. package/tools/vds-scripts/scheduler_orchestrator/alembic/versions/20260424_b2c3d4e5f6a7_add_dispatcher_state_machine.py +0 -100
  1389. package/tools/vds-scripts/scheduler_orchestrator/alembic/versions/20260424_c3d4e5f6a7b8_add_audit_log.py +0 -141
  1390. package/tools/vds-scripts/scheduler_orchestrator/alembic/versions/20260424_d4e5f6a7b8c9_celery_retirement.py +0 -161
  1391. package/tools/vds-scripts/scheduler_orchestrator/alembic/versions/20260424_e5f6a7b8c9d0_add_udf_enqueue.py +0 -154
  1392. package/tools/vds-scripts/scheduler_orchestrator/alembic/versions/20260426_f6a7b8c9d0e1_add_owner_orchestrator_to_chain_definitions.py +0 -62
  1393. package/tools/vds-scripts/scheduler_orchestrator/alembic/versions/20260427_a1b2c3d4e5f7_ecosystem_report_runs.py +0 -57
  1394. package/tools/vds-scripts/scheduler_orchestrator/alembic/versions/20260428_a1b2c3d4e5f8_add_phase2_report_columns.py +0 -95
  1395. package/tools/vds-scripts/scheduler_orchestrator/alembic/versions/20260430_b2c3d4e5f8a9_add_phase3_report_columns.py +0 -199
  1396. package/tools/vds-scripts/scheduler_orchestrator/alembic.ini +0 -70
  1397. package/tools/vds-scripts/scheduler_orchestrator/config/llm_pricing.yaml +0 -51
  1398. package/tools/vds-scripts/scheduler_orchestrator/config/prometheus-alerts.yaml +0 -277
  1399. package/tools/vds-scripts/scheduler_orchestrator/dashboards/slo-dashboard.json +0 -665
  1400. package/tools/vds-scripts/scheduler_orchestrator/design-notes/dedupe-design.md +0 -324
  1401. package/tools/vds-scripts/scheduler_orchestrator/docs/Q3-2026-GAME-DAY-PREFLIGHT.md +0 -217
  1402. package/tools/vds-scripts/scheduler_orchestrator/docs/authoring-workflows.md +0 -302
  1403. package/tools/vds-scripts/scheduler_orchestrator/docs/autoscaling-k8s-hpa.yaml +0 -193
  1404. package/tools/vds-scripts/scheduler_orchestrator/docs/capability-red-team.md +0 -153
  1405. package/tools/vds-scripts/scheduler_orchestrator/docs/celery-migration-procedure.md +0 -151
  1406. package/tools/vds-scripts/scheduler_orchestrator/docs/celery-retirement-checklist.md +0 -144
  1407. package/tools/vds-scripts/scheduler_orchestrator/docs/chaos-runbook.md +0 -395
  1408. package/tools/vds-scripts/scheduler_orchestrator/docs/conductor-decision.md +0 -232
  1409. package/tools/vds-scripts/scheduler_orchestrator/docs/cross-orchestrator-rollout-checklist.md +0 -223
  1410. package/tools/vds-scripts/scheduler_orchestrator/docs/dr-drill-report.md +0 -173
  1411. package/tools/vds-scripts/scheduler_orchestrator/docs/ecosystem-daily-report-runbook.md +0 -344
  1412. package/tools/vds-scripts/scheduler_orchestrator/docs/error-budget-policy.md +0 -228
  1413. package/tools/vds-scripts/scheduler_orchestrator/docs/evolution-daemon-retirement.md +0 -214
  1414. package/tools/vds-scripts/scheduler_orchestrator/docs/evolution-retirement-files.md +0 -171
  1415. package/tools/vds-scripts/scheduler_orchestrator/docs/game-day-phase2.md +0 -243
  1416. package/tools/vds-scripts/scheduler_orchestrator/docs/mcp-governance-review.md +0 -250
  1417. package/tools/vds-scripts/scheduler_orchestrator/docs/mcp-scheduler-surface.md +0 -317
  1418. package/tools/vds-scripts/scheduler_orchestrator/docs/performance-baseline.md +0 -343
  1419. package/tools/vds-scripts/scheduler_orchestrator/docs/pitr-drill-protocol.md +0 -162
  1420. package/tools/vds-scripts/scheduler_orchestrator/docs/quarterly-game-day.md +0 -206
  1421. package/tools/vds-scripts/scheduler_orchestrator/docs/runbooks/dr-postgres-restore.md +0 -268
  1422. package/tools/vds-scripts/scheduler_orchestrator/docs/runbooks/evolution-auto-promote-runbook.md +0 -194
  1423. package/tools/vds-scripts/scheduler_orchestrator/docs/runbooks/incident-dispatcher-stalled.md +0 -188
  1424. package/tools/vds-scripts/scheduler_orchestrator/docs/runbooks/incident-postgres-unavailable.md +0 -206
  1425. package/tools/vds-scripts/scheduler_orchestrator/docs/runbooks/incident-secret-leaked-in-event.md +0 -170
  1426. package/tools/vds-scripts/scheduler_orchestrator/docs/runbooks/incident-workflow-backlog.md +0 -201
  1427. package/tools/vds-scripts/scheduler_orchestrator/docs/runbooks/orphan-reconciliation-alert.md +0 -140
  1428. package/tools/vds-scripts/scheduler_orchestrator/docs/runbooks/postmortem-template.md +0 -156
  1429. package/tools/vds-scripts/scheduler_orchestrator/docs/runbooks/rollback-deploy.md +0 -209
  1430. package/tools/vds-scripts/scheduler_orchestrator/docs/scaling-decision-phase4.md +0 -176
  1431. package/tools/vds-scripts/scheduler_orchestrator/docs/secret-rotation-drill.md +0 -202
  1432. package/tools/vds-scripts/scheduler_orchestrator/docs/sharding-decision.md +0 -111
  1433. package/tools/vds-scripts/scheduler_orchestrator/docs/sharding-implementation-plan.md +0 -189
  1434. package/tools/vds-scripts/scheduler_orchestrator/docs/udf-enqueue-benchmark.md +0 -209
  1435. package/tools/vds-scripts/scheduler_orchestrator/docs/udf-trigger-demo-plan.md +0 -273
  1436. package/tools/vds-scripts/scheduler_orchestrator/pyproject.toml +0 -129
  1437. package/tools/vds-scripts/scheduler_orchestrator/scripts/autoscale/scale-compose.sh +0 -125
  1438. package/tools/vds-scripts/scheduler_orchestrator/scripts/backfill_last_run_at_from_dbos.py +0 -105
  1439. package/tools/vds-scripts/scheduler_orchestrator/scripts/benchmarks/phase4-sharding-remeasure.sh +0 -244
  1440. package/tools/vds-scripts/scheduler_orchestrator/scripts/benchmarks/udf-vs-dispatcher.sh +0 -157
  1441. package/tools/vds-scripts/scheduler_orchestrator/scripts/chaos/c1-api-kill.sh +0 -226
  1442. package/tools/vds-scripts/scheduler_orchestrator/scripts/chaos/c2-executor-kill.sh +0 -243
  1443. package/tools/vds-scripts/scheduler_orchestrator/scripts/chaos/c3-dispatcher-kill.sh +0 -314
  1444. package/tools/vds-scripts/scheduler_orchestrator/scripts/chaos/c4-postgres-failover.sh +0 -288
  1445. package/tools/vds-scripts/scheduler_orchestrator/scripts/chaos/c5-network-partition.sh +0 -351
  1446. package/tools/vds-scripts/scheduler_orchestrator/scripts/chaos/c6-outbox-storm.sh +0 -403
  1447. package/tools/vds-scripts/scheduler_orchestrator/scripts/collector-diagnostics.py +0 -125
  1448. package/tools/vds-scripts/scheduler_orchestrator/scripts/dr/pitr-drill.sh +0 -363
  1449. package/tools/vds-scripts/scheduler_orchestrator/scripts/entrypoint.sh +0 -100
  1450. package/tools/vds-scripts/scheduler_orchestrator/scripts/generate-report.py +0 -96
  1451. package/tools/vds-scripts/scheduler_orchestrator/scripts/mint_scheduler_service_token.py +0 -76
  1452. package/tools/vds-scripts/scheduler_orchestrator/scripts/verify-phase3-live.py +0 -158
  1453. package/tools/vds-scripts/scheduler_orchestrator/src/vds_scheduler_orchestrator/__init__.py +0 -21
  1454. package/tools/vds-scripts/scheduler_orchestrator/src/vds_scheduler_orchestrator/api/__init__.py +0 -1
  1455. package/tools/vds-scripts/scheduler_orchestrator/src/vds_scheduler_orchestrator/api/v1/__init__.py +0 -5
  1456. package/tools/vds-scripts/scheduler_orchestrator/src/vds_scheduler_orchestrator/api/v1/chains.py +0 -131
  1457. package/tools/vds-scripts/scheduler_orchestrator/src/vds_scheduler_orchestrator/api/v1/events.py +0 -106
  1458. package/tools/vds-scripts/scheduler_orchestrator/src/vds_scheduler_orchestrator/api/v1/health.py +0 -101
  1459. package/tools/vds-scripts/scheduler_orchestrator/src/vds_scheduler_orchestrator/api/v1/router.py +0 -34
  1460. package/tools/vds-scripts/scheduler_orchestrator/src/vds_scheduler_orchestrator/api/v1/schedules.py +0 -241
  1461. package/tools/vds-scripts/scheduler_orchestrator/src/vds_scheduler_orchestrator/api/v1/workflows.py +0 -189
  1462. package/tools/vds-scripts/scheduler_orchestrator/src/vds_scheduler_orchestrator/app.py +0 -429
  1463. package/tools/vds-scripts/scheduler_orchestrator/src/vds_scheduler_orchestrator/chains/__init__.py +0 -1
  1464. package/tools/vds-scripts/scheduler_orchestrator/src/vds_scheduler_orchestrator/chains/registry.py +0 -397
  1465. package/tools/vds-scripts/scheduler_orchestrator/src/vds_scheduler_orchestrator/chains/resolver.py +0 -144
  1466. package/tools/vds-scripts/scheduler_orchestrator/src/vds_scheduler_orchestrator/chains/triggers.py +0 -626
  1467. package/tools/vds-scripts/scheduler_orchestrator/src/vds_scheduler_orchestrator/cli.py +0 -1112
  1468. package/tools/vds-scripts/scheduler_orchestrator/src/vds_scheduler_orchestrator/config.py +0 -394
  1469. package/tools/vds-scripts/scheduler_orchestrator/src/vds_scheduler_orchestrator/dashboards/__init__.py +0 -1
  1470. package/tools/vds-scripts/scheduler_orchestrator/src/vds_scheduler_orchestrator/dashboards/ecosystem-scheduler.json +0 -550
  1471. package/tools/vds-scripts/scheduler_orchestrator/src/vds_scheduler_orchestrator/db/__init__.py +0 -1
  1472. package/tools/vds-scripts/scheduler_orchestrator/src/vds_scheduler_orchestrator/db/alembic_filters.py +0 -52
  1473. package/tools/vds-scripts/scheduler_orchestrator/src/vds_scheduler_orchestrator/db/models.py +0 -428
  1474. package/tools/vds-scripts/scheduler_orchestrator/src/vds_scheduler_orchestrator/events/__init__.py +0 -10
  1475. package/tools/vds-scripts/scheduler_orchestrator/src/vds_scheduler_orchestrator/events/bus.py +0 -161
  1476. package/tools/vds-scripts/scheduler_orchestrator/src/vds_scheduler_orchestrator/events/dispatcher.py +0 -501
  1477. package/tools/vds-scripts/scheduler_orchestrator/src/vds_scheduler_orchestrator/events/outbox.py +0 -213
  1478. package/tools/vds-scripts/scheduler_orchestrator/src/vds_scheduler_orchestrator/events/retention.py +0 -224
  1479. package/tools/vds-scripts/scheduler_orchestrator/src/vds_scheduler_orchestrator/events/schema.py +0 -226
  1480. package/tools/vds-scripts/scheduler_orchestrator/src/vds_scheduler_orchestrator/events/ws_server.py +0 -328
  1481. package/tools/vds-scripts/scheduler_orchestrator/src/vds_scheduler_orchestrator/mcp/__init__.py +0 -26
  1482. package/tools/vds-scripts/scheduler_orchestrator/src/vds_scheduler_orchestrator/mcp/auth.py +0 -184
  1483. package/tools/vds-scripts/scheduler_orchestrator/src/vds_scheduler_orchestrator/mcp/server.py +0 -146
  1484. package/tools/vds-scripts/scheduler_orchestrator/src/vds_scheduler_orchestrator/mcp/tools_readonly.py +0 -259
  1485. package/tools/vds-scripts/scheduler_orchestrator/src/vds_scheduler_orchestrator/observability/__init__.py +0 -15
  1486. package/tools/vds-scripts/scheduler_orchestrator/src/vds_scheduler_orchestrator/observability/logging.py +0 -196
  1487. package/tools/vds-scripts/scheduler_orchestrator/src/vds_scheduler_orchestrator/observability/metrics.py +0 -347
  1488. package/tools/vds-scripts/scheduler_orchestrator/src/vds_scheduler_orchestrator/observability/slo.py +0 -217
  1489. package/tools/vds-scripts/scheduler_orchestrator/src/vds_scheduler_orchestrator/observability/workflow_trace_context.py +0 -149
  1490. package/tools/vds-scripts/scheduler_orchestrator/src/vds_scheduler_orchestrator/scheduler/__init__.py +0 -1
  1491. package/tools/vds-scripts/scheduler_orchestrator/src/vds_scheduler_orchestrator/scheduler/backfill.py +0 -160
  1492. package/tools/vds-scripts/scheduler_orchestrator/src/vds_scheduler_orchestrator/scheduler/models.py +0 -88
  1493. package/tools/vds-scripts/scheduler_orchestrator/src/vds_scheduler_orchestrator/scheduler/schedules.py +0 -927
  1494. package/tools/vds-scripts/scheduler_orchestrator/src/vds_scheduler_orchestrator/scheduler/state_pg.py +0 -55
  1495. package/tools/vds-scripts/scheduler_orchestrator/src/vds_scheduler_orchestrator/scheduler/state_ports.py +0 -23
  1496. package/tools/vds-scripts/scheduler_orchestrator/src/vds_scheduler_orchestrator/scheduler/writeback.py +0 -153
  1497. package/tools/vds-scripts/scheduler_orchestrator/src/vds_scheduler_orchestrator/security/__init__.py +0 -1
  1498. package/tools/vds-scripts/scheduler_orchestrator/src/vds_scheduler_orchestrator/security/audit_log.py +0 -238
  1499. package/tools/vds-scripts/scheduler_orchestrator/src/vds_scheduler_orchestrator/security/auth.py +0 -49
  1500. package/tools/vds-scripts/scheduler_orchestrator/src/vds_scheduler_orchestrator/security/capabilities.py +0 -111
  1501. package/tools/vds-scripts/scheduler_orchestrator/src/vds_scheduler_orchestrator/security/middleware.py +0 -54
  1502. package/tools/vds-scripts/scheduler_orchestrator/src/vds_scheduler_orchestrator/security/secret_scanner.py +0 -126
  1503. package/tools/vds-scripts/scheduler_orchestrator/src/vds_scheduler_orchestrator/workflows/__init__.py +0 -1
  1504. package/tools/vds-scripts/scheduler_orchestrator/src/vds_scheduler_orchestrator/workflows/agent_step.py +0 -30
  1505. package/tools/vds-scripts/scheduler_orchestrator/src/vds_scheduler_orchestrator/workflows/anomaly.py +0 -67
  1506. package/tools/vds-scripts/scheduler_orchestrator/src/vds_scheduler_orchestrator/workflows/autoscale.py +0 -452
  1507. package/tools/vds-scripts/scheduler_orchestrator/src/vds_scheduler_orchestrator/workflows/collector_registry.py +0 -89
  1508. package/tools/vds-scripts/scheduler_orchestrator/src/vds_scheduler_orchestrator/workflows/collectors/__init__.py +0 -12
  1509. package/tools/vds-scripts/scheduler_orchestrator/src/vds_scheduler_orchestrator/workflows/collectors/dora_metrics.py +0 -520
  1510. package/tools/vds-scripts/scheduler_orchestrator/src/vds_scheduler_orchestrator/workflows/collectors/infra_health_collector.py +0 -378
  1511. package/tools/vds-scripts/scheduler_orchestrator/src/vds_scheduler_orchestrator/workflows/collectors/llm_usage.py +0 -475
  1512. package/tools/vds-scripts/scheduler_orchestrator/src/vds_scheduler_orchestrator/workflows/collectors/memory_collector.py +0 -101
  1513. package/tools/vds-scripts/scheduler_orchestrator/src/vds_scheduler_orchestrator/workflows/collectors/phase1_adapters.py +0 -181
  1514. package/tools/vds-scripts/scheduler_orchestrator/src/vds_scheduler_orchestrator/workflows/collectors/prometheus_collector.py +0 -442
  1515. package/tools/vds-scripts/scheduler_orchestrator/src/vds_scheduler_orchestrator/workflows/collectors/protocol.py +0 -94
  1516. package/tools/vds-scripts/scheduler_orchestrator/src/vds_scheduler_orchestrator/workflows/collectors/security_advisory.py +0 -399
  1517. package/tools/vds-scripts/scheduler_orchestrator/src/vds_scheduler_orchestrator/workflows/collectors/spec_phase_collector.py +0 -137
  1518. package/tools/vds-scripts/scheduler_orchestrator/src/vds_scheduler_orchestrator/workflows/collectors/test_suite_collector.py +0 -231
  1519. package/tools/vds-scripts/scheduler_orchestrator/src/vds_scheduler_orchestrator/workflows/collectors/trend_forecast.py +0 -417
  1520. package/tools/vds-scripts/scheduler_orchestrator/src/vds_scheduler_orchestrator/workflows/collectors/worktree_collector.py +0 -121
  1521. package/tools/vds-scripts/scheduler_orchestrator/src/vds_scheduler_orchestrator/workflows/discovery.py +0 -97
  1522. package/tools/vds-scripts/scheduler_orchestrator/src/vds_scheduler_orchestrator/workflows/ecosystem_report.py +0 -1406
  1523. package/tools/vds-scripts/scheduler_orchestrator/src/vds_scheduler_orchestrator/workflows/envelope.py +0 -210
  1524. package/tools/vds-scripts/scheduler_orchestrator/src/vds_scheduler_orchestrator/workflows/evolution/__init__.py +0 -1
  1525. package/tools/vds-scripts/scheduler_orchestrator/src/vds_scheduler_orchestrator/workflows/evolution/auto_promote.py +0 -206
  1526. package/tools/vds-scripts/scheduler_orchestrator/src/vds_scheduler_orchestrator/workflows/health_score.py +0 -112
  1527. package/tools/vds-scripts/scheduler_orchestrator/src/vds_scheduler_orchestrator/workflows/memory_dedup/__init__.py +0 -69
  1528. package/tools/vds-scripts/scheduler_orchestrator/src/vds_scheduler_orchestrator/workflows/memory_dedup/auto_resolve.py +0 -139
  1529. package/tools/vds-scripts/scheduler_orchestrator/src/vds_scheduler_orchestrator/workflows/memory_dedup/tombstone_purge.py +0 -128
  1530. package/tools/vds-scripts/scheduler_orchestrator/src/vds_scheduler_orchestrator/workflows/memory_evolution/__init__.py +0 -146
  1531. package/tools/vds-scripts/scheduler_orchestrator/src/vds_scheduler_orchestrator/workflows/memory_evolution/dispatch.py +0 -140
  1532. package/tools/vds-scripts/scheduler_orchestrator/src/vds_scheduler_orchestrator/workflows/memory_evolution/replay_dlq.py +0 -123
  1533. package/tools/vds-scripts/scheduler_orchestrator/src/vds_scheduler_orchestrator/workflows/memory_evolution/repush_local_only.py +0 -129
  1534. package/tools/vds-scripts/scheduler_orchestrator/src/vds_scheduler_orchestrator/workflows/memory_evolution/repush_stalled.py +0 -123
  1535. package/tools/vds-scripts/scheduler_orchestrator/src/vds_scheduler_orchestrator/workflows/memory_evolution/resolve_pending_ids.py +0 -125
  1536. package/tools/vds-scripts/scheduler_orchestrator/src/vds_scheduler_orchestrator/workflows/memory_evolution/sweep.py +0 -121
  1537. package/tools/vds-scripts/scheduler_orchestrator/src/vds_scheduler_orchestrator/workflows/provider.py +0 -83
  1538. package/tools/vds-scripts/scheduler_orchestrator/src/vds_scheduler_orchestrator/workflows/queues.py +0 -225
  1539. package/tools/vds-scripts/scheduler_orchestrator/src/vds_scheduler_orchestrator/workflows/registry.py +0 -351
  1540. package/tools/vds-scripts/scheduler_orchestrator/src/vds_scheduler_orchestrator/workflows/report_formatter.py +0 -743
  1541. package/tools/vds-scripts/scheduler_orchestrator/src/vds_scheduler_orchestrator/workflows/slack_formatter.py +0 -110
  1542. package/tools/vds-scripts/scheduler_orchestrator/src/vds_scheduler_orchestrator/workflows/udf_trigger.py +0 -186
  1543. package/tools/vds-scripts/scheduler_orchestrator/tests/__init__.py +0 -8
  1544. package/tools/vds-scripts/scheduler_orchestrator/tests/_mocks/__init__.py +0 -28
  1545. package/tools/vds-scripts/scheduler_orchestrator/tests/_mocks/llm_mock.py +0 -322
  1546. package/tools/vds-scripts/scheduler_orchestrator/tests/conftest.py +0 -339
  1547. package/tools/vds-scripts/scheduler_orchestrator/tests/integration/__init__.py +0 -1
  1548. package/tools/vds-scripts/scheduler_orchestrator/tests/integration/test_agent_step.py +0 -400
  1549. package/tools/vds-scripts/scheduler_orchestrator/tests/integration/test_api_v1_auth.py +0 -424
  1550. package/tools/vds-scripts/scheduler_orchestrator/tests/integration/test_api_v1_reads.py +0 -579
  1551. package/tools/vds-scripts/scheduler_orchestrator/tests/integration/test_api_v1_writes.py +0 -609
  1552. package/tools/vds-scripts/scheduler_orchestrator/tests/integration/test_audit_drift_scan.py +0 -205
  1553. package/tools/vds-scripts/scheduler_orchestrator/tests/integration/test_audit_log_grants.py +0 -231
  1554. package/tools/vds-scripts/scheduler_orchestrator/tests/integration/test_capability_red_team.py +0 -266
  1555. package/tools/vds-scripts/scheduler_orchestrator/tests/integration/test_chain_triggers_integration.py +0 -365
  1556. package/tools/vds-scripts/scheduler_orchestrator/tests/integration/test_chaos_smoke.py +0 -871
  1557. package/tools/vds-scripts/scheduler_orchestrator/tests/integration/test_cli_http_contract.py +0 -262
  1558. package/tools/vds-scripts/scheduler_orchestrator/tests/integration/test_cli_schedule_roundtrip.py +0 -297
  1559. package/tools/vds-scripts/scheduler_orchestrator/tests/integration/test_ecosystem_report_integration.py +0 -461
  1560. package/tools/vds-scripts/scheduler_orchestrator/tests/integration/test_ecosystem_report_phase3_integration.py +0 -686
  1561. package/tools/vds-scripts/scheduler_orchestrator/tests/integration/test_fairness.py +0 -373
  1562. package/tools/vds-scripts/scheduler_orchestrator/tests/integration/test_full_ecosystem.py +0 -638
  1563. package/tools/vds-scripts/scheduler_orchestrator/tests/integration/test_multi_day_workflow.py +0 -563
  1564. package/tools/vds-scripts/scheduler_orchestrator/tests/integration/test_outbox_listen.py +0 -327
  1565. package/tools/vds-scripts/scheduler_orchestrator/tests/integration/test_priority_queues.py +0 -288
  1566. package/tools/vds-scripts/scheduler_orchestrator/tests/integration/test_queues_rate_limit.py +0 -272
  1567. package/tools/vds-scripts/scheduler_orchestrator/tests/integration/test_retention_smoke.py +0 -259
  1568. package/tools/vds-scripts/scheduler_orchestrator/tests/integration/test_secret_rotation_drill.py +0 -215
  1569. package/tools/vds-scripts/scheduler_orchestrator/tests/integration/test_tier1_collectors_live.py +0 -270
  1570. package/tools/vds-scripts/scheduler_orchestrator/tests/load/__init__.py +0 -29
  1571. package/tools/vds-scripts/scheduler_orchestrator/tests/load/capture_pg_metrics.py +0 -198
  1572. package/tools/vds-scripts/scheduler_orchestrator/tests/load/common.py +0 -163
  1573. package/tools/vds-scripts/scheduler_orchestrator/tests/load/nfr_check.py +0 -235
  1574. package/tools/vds-scripts/scheduler_orchestrator/tests/load/run_baselines.sh +0 -167
  1575. package/tools/vds-scripts/scheduler_orchestrator/tests/load/s1_baseline.py +0 -68
  1576. package/tools/vds-scripts/scheduler_orchestrator/tests/load/s2_phase1.py +0 -71
  1577. package/tools/vds-scripts/scheduler_orchestrator/tests/load/s3_phase2.py +0 -108
  1578. package/tools/vds-scripts/scheduler_orchestrator/tests/load/s4_event_storm.py +0 -131
  1579. package/tools/vds-scripts/scheduler_orchestrator/tests/load/s5_chain_fanout.py +0 -105
  1580. package/tools/vds-scripts/scheduler_orchestrator/tests/load/smoke.py +0 -69
  1581. package/tools/vds-scripts/scheduler_orchestrator/tests/test_alembic_downgrade.py +0 -297
  1582. package/tools/vds-scripts/scheduler_orchestrator/tests/unit/__init__.py +0 -1
  1583. package/tools/vds-scripts/scheduler_orchestrator/tests/unit/test_alembic_include_name.py +0 -82
  1584. package/tools/vds-scripts/scheduler_orchestrator/tests/unit/test_anomaly.py +0 -135
  1585. package/tools/vds-scripts/scheduler_orchestrator/tests/unit/test_app_health.py +0 -102
  1586. package/tools/vds-scripts/scheduler_orchestrator/tests/unit/test_app_memory_evolution_bootstrap.py +0 -65
  1587. package/tools/vds-scripts/scheduler_orchestrator/tests/unit/test_audit_log_writer.py +0 -321
  1588. package/tools/vds-scripts/scheduler_orchestrator/tests/unit/test_auth_brute_force_middleware.py +0 -175
  1589. package/tools/vds-scripts/scheduler_orchestrator/tests/unit/test_autoscale_helpers.py +0 -91
  1590. package/tools/vds-scripts/scheduler_orchestrator/tests/unit/test_autoscale_helpers_deep.py +0 -271
  1591. package/tools/vds-scripts/scheduler_orchestrator/tests/unit/test_backfill.py +0 -153
  1592. package/tools/vds-scripts/scheduler_orchestrator/tests/unit/test_backfill_coverage.py +0 -219
  1593. package/tools/vds-scripts/scheduler_orchestrator/tests/unit/test_capabilities.py +0 -175
  1594. package/tools/vds-scripts/scheduler_orchestrator/tests/unit/test_celery_migration_workflows.py +0 -461
  1595. package/tools/vds-scripts/scheduler_orchestrator/tests/unit/test_chains_branches.py +0 -387
  1596. package/tools/vds-scripts/scheduler_orchestrator/tests/unit/test_chains_registry.py +0 -504
  1597. package/tools/vds-scripts/scheduler_orchestrator/tests/unit/test_chains_triggers_complete.py +0 -800
  1598. package/tools/vds-scripts/scheduler_orchestrator/tests/unit/test_chains_triggers_event.py +0 -649
  1599. package/tools/vds-scripts/scheduler_orchestrator/tests/unit/test_cli_branches.py +0 -396
  1600. package/tools/vds-scripts/scheduler_orchestrator/tests/unit/test_cli_capability_attach.py +0 -111
  1601. package/tools/vds-scripts/scheduler_orchestrator/tests/unit/test_cli_schedules.py +0 -540
  1602. package/tools/vds-scripts/scheduler_orchestrator/tests/unit/test_collector_protocol.py +0 -180
  1603. package/tools/vds-scripts/scheduler_orchestrator/tests/unit/test_config.py +0 -62
  1604. package/tools/vds-scripts/scheduler_orchestrator/tests/unit/test_decimal_json_and_phase3_columns.py +0 -372
  1605. package/tools/vds-scripts/scheduler_orchestrator/tests/unit/test_dispatcher.py +0 -376
  1606. package/tools/vds-scripts/scheduler_orchestrator/tests/unit/test_dockerfile_phase213_patch.py +0 -74
  1607. package/tools/vds-scripts/scheduler_orchestrator/tests/unit/test_dora_metrics_collector.py +0 -740
  1608. package/tools/vds-scripts/scheduler_orchestrator/tests/unit/test_ecosystem_report_config.py +0 -159
  1609. package/tools/vds-scripts/scheduler_orchestrator/tests/unit/test_ecosystem_report_coverage.py +0 -1891
  1610. package/tools/vds-scripts/scheduler_orchestrator/tests/unit/test_envelope.py +0 -256
  1611. package/tools/vds-scripts/scheduler_orchestrator/tests/unit/test_error_budget_policy_signoff.py +0 -95
  1612. package/tools/vds-scripts/scheduler_orchestrator/tests/unit/test_events_branches.py +0 -664
  1613. package/tools/vds-scripts/scheduler_orchestrator/tests/unit/test_events_outbox.py +0 -364
  1614. package/tools/vds-scripts/scheduler_orchestrator/tests/unit/test_events_retention.py +0 -206
  1615. package/tools/vds-scripts/scheduler_orchestrator/tests/unit/test_events_schema.py +0 -279
  1616. package/tools/vds-scripts/scheduler_orchestrator/tests/unit/test_evolution_auto_promote.py +0 -340
  1617. package/tools/vds-scripts/scheduler_orchestrator/tests/unit/test_health_redact.py +0 -64
  1618. package/tools/vds-scripts/scheduler_orchestrator/tests/unit/test_health_score.py +0 -240
  1619. package/tools/vds-scripts/scheduler_orchestrator/tests/unit/test_last_run_at_writeback.py +0 -226
  1620. package/tools/vds-scripts/scheduler_orchestrator/tests/unit/test_llm_usage_collector.py +0 -1095
  1621. package/tools/vds-scripts/scheduler_orchestrator/tests/unit/test_mcp_auth.py +0 -204
  1622. package/tools/vds-scripts/scheduler_orchestrator/tests/unit/test_mcp_readonly_gate.py +0 -273
  1623. package/tools/vds-scripts/scheduler_orchestrator/tests/unit/test_mcp_tools_readonly.py +0 -382
  1624. package/tools/vds-scripts/scheduler_orchestrator/tests/unit/test_memory_evolution_branches.py +0 -422
  1625. package/tools/vds-scripts/scheduler_orchestrator/tests/unit/test_metrics.py +0 -318
  1626. package/tools/vds-scripts/scheduler_orchestrator/tests/unit/test_observability_and_step_branches.py +0 -247
  1627. package/tools/vds-scripts/scheduler_orchestrator/tests/unit/test_prometheus_collector_sli.py +0 -186
  1628. package/tools/vds-scripts/scheduler_orchestrator/tests/unit/test_queues_config.py +0 -203
  1629. package/tools/vds-scripts/scheduler_orchestrator/tests/unit/test_reconcile_dbos_schedules.py +0 -300
  1630. package/tools/vds-scripts/scheduler_orchestrator/tests/unit/test_remaining_coverage.py +0 -666
  1631. package/tools/vds-scripts/scheduler_orchestrator/tests/unit/test_report_formatter.py +0 -388
  1632. package/tools/vds-scripts/scheduler_orchestrator/tests/unit/test_scheduled_workflow_signatures.py +0 -136
  1633. package/tools/vds-scripts/scheduler_orchestrator/tests/unit/test_schedules.py +0 -552
  1634. package/tools/vds-scripts/scheduler_orchestrator/tests/unit/test_schedules_branches.py +0 -772
  1635. package/tools/vds-scripts/scheduler_orchestrator/tests/unit/test_secret_scanner.py +0 -81
  1636. package/tools/vds-scripts/scheduler_orchestrator/tests/unit/test_security_advisory_collector.py +0 -495
  1637. package/tools/vds-scripts/scheduler_orchestrator/tests/unit/test_security_auth_dep.py +0 -182
  1638. package/tools/vds-scripts/scheduler_orchestrator/tests/unit/test_slack_notification.py +0 -356
  1639. package/tools/vds-scripts/scheduler_orchestrator/tests/unit/test_slo_metrics.py +0 -204
  1640. package/tools/vds-scripts/scheduler_orchestrator/tests/unit/test_tier1_collectors.py +0 -717
  1641. package/tools/vds-scripts/scheduler_orchestrator/tests/unit/test_tier2_collectors.py +0 -867
  1642. package/tools/vds-scripts/scheduler_orchestrator/tests/unit/test_tier3_collectors.py +0 -185
  1643. package/tools/vds-scripts/scheduler_orchestrator/tests/unit/test_trend_forecast_collector.py +0 -617
  1644. package/tools/vds-scripts/scheduler_orchestrator/tests/unit/test_udf_trigger.py +0 -180
  1645. package/tools/vds-scripts/scheduler_orchestrator/tests/unit/test_workflow_discovery.py +0 -121
  1646. package/tools/vds-scripts/scheduler_orchestrator/tests/unit/test_workflow_http_refactor_phase217.py +0 -309
  1647. package/tools/vds-scripts/scheduler_orchestrator/tests/unit/test_workflow_registry.py +0 -398
  1648. package/tools/vds-scripts/scheduler_orchestrator/tests/unit/test_workflow_registry_branches.py +0 -126
  1649. package/tools/vds-scripts/scheduler_orchestrator/tests/unit/test_workflow_trace_context.py +0 -295
  1650. package/tools/vds-scripts/scheduler_orchestrator/tests/unit/test_writeback.py +0 -461
  1651. package/tools/vds-scripts/scheduler_orchestrator/tests/unit/test_ws_server.py +0 -291
  1652. package/tools/vds-scripts/scripts/BRD-Validation-API.postman_collection.json +0 -706
  1653. package/tools/vds-scripts/scripts/BRD-Validation-README.md +0 -308
  1654. package/tools/vds-scripts/scripts/README.md +0 -271
  1655. package/tools/vds-scripts/scripts/_validate_alias_phase2.py +0 -137
  1656. package/tools/vds-scripts/scripts/audit-cli-patterns.sh +0 -135
  1657. package/tools/vds-scripts/scripts/audit-dashboard.sh +0 -525
  1658. package/tools/vds-scripts/scripts/backup.sh +0 -123
  1659. package/tools/vds-scripts/scripts/bootstrap_uv.sh +0 -69
  1660. package/tools/vds-scripts/scripts/brd-validation-environment.json +0 -51
  1661. package/tools/vds-scripts/scripts/brd-validation-test-results.json +0 -13023
  1662. package/tools/vds-scripts/scripts/brd_coverage_report.json +0 -276
  1663. package/tools/vds-scripts/scripts/check-future-annotations.py +0 -22
  1664. package/tools/vds-scripts/scripts/check-invalid-symlinks.py +0 -183
  1665. package/tools/vds-scripts/scripts/check-no-debug-markers.py +0 -21
  1666. package/tools/vds-scripts/scripts/check-no-unittest.py +0 -21
  1667. package/tools/vds-scripts/scripts/ci/assert_no_openspace_commits.sh +0 -37
  1668. package/tools/vds-scripts/scripts/ci/verify_branch_protection.sh +0 -64
  1669. package/tools/vds-scripts/scripts/closure/phase1_check.sh +0 -483
  1670. package/tools/vds-scripts/scripts/closure/phase2_check.sh +0 -500
  1671. package/tools/vds-scripts/scripts/create_memory_session.py +0 -36
  1672. package/tools/vds-scripts/scripts/deploy-bootstrap.sh +0 -201
  1673. package/tools/vds-scripts/scripts/deployment/load_docker_images_offline.sh +0 -90
  1674. package/tools/vds-scripts/scripts/dev/cli_smoke.sh +0 -259
  1675. package/tools/vds-scripts/scripts/final_completion_report.md +0 -139
  1676. package/tools/vds-scripts/scripts/folder_structure_report.json +0 -321
  1677. package/tools/vds-scripts/scripts/generate_completion_report.py +0 -132
  1678. package/tools/vds-scripts/scripts/generate_intellij_modules.py +0 -154
  1679. package/tools/vds-scripts/scripts/init-pgbouncer-userlist.sh +0 -154
  1680. package/tools/vds-scripts/scripts/link_integrity_report.json +0 -807
  1681. package/tools/vds-scripts/scripts/move_audit_artifact_pages.py +0 -252
  1682. package/tools/vds-scripts/scripts/move_audit_artifact_pages_rest.py +0 -165
  1683. package/tools/vds-scripts/scripts/move_wrong_dept_pages.py +0 -235
  1684. package/tools/vds-scripts/scripts/openspace_bootstrap.sh +0 -56
  1685. package/tools/vds-scripts/scripts/openspace_common.sh +0 -75
  1686. package/tools/vds-scripts/scripts/openspace_doctor.sh +0 -61
  1687. package/tools/vds-scripts/scripts/openspace_sync_shadow.sh +0 -65
  1688. package/tools/vds-scripts/scripts/phase7-baseline.sh +0 -77
  1689. package/tools/vds-scripts/scripts/preflight/env_check.sh +0 -102
  1690. package/tools/vds-scripts/scripts/repair_autopay_reports.sh +0 -173
  1691. package/tools/vds-scripts/scripts/rollback_drill.sh +0 -659
  1692. package/tools/vds-scripts/scripts/run-audit-in-tmux.sh +0 -286
  1693. package/tools/vds-scripts/scripts/run-department-audit.sh +0 -495
  1694. package/tools/vds-scripts/scripts/run-project-audit.sh +0 -267
  1695. package/tools/vds-scripts/scripts/save_intellij_memories.py +0 -112
  1696. package/tools/vds-scripts/scripts/save_memories_to_vds_ai.py +0 -81
  1697. package/tools/vds-scripts/scripts/save_memories_vds_style.py +0 -133
  1698. package/tools/vds-scripts/scripts/search_intellij_memories.py +0 -48
  1699. package/tools/vds-scripts/scripts/setup_intellij_workspace.py +0 -71
  1700. package/tools/vds-scripts/scripts/smoke-test-deploy.sh +0 -137
  1701. package/tools/vds-scripts/scripts/smoke_deploy_lib.py +0 -205
  1702. package/tools/vds-scripts/scripts/target-state-automation/README.md +0 -89
  1703. package/tools/vds-scripts/scripts/target-state-automation/confluence_sync_coordinator.sh +0 -27
  1704. package/tools/vds-scripts/scripts/target-state-automation/coordination.sh +0 -114
  1705. package/tools/vds-scripts/scripts/target-state-automation/diagram_coordinator.sh +0 -25
  1706. package/tools/vds-scripts/scripts/target-state-automation/docs_root.sh +0 -22
  1707. package/tools/vds-scripts/scripts/target-state-automation/generate_diagrams.sh +0 -22
  1708. package/tools/vds-scripts/scripts/target-state-automation/markdown_coordinator.sh +0 -25
  1709. package/tools/vds-scripts/scripts/target-state-automation/progress_dashboard.sh +0 -17
  1710. package/tools/vds-scripts/scripts/target-state-automation/schema_coordinator.sh +0 -25
  1711. package/tools/vds-scripts/scripts/target-state-automation/sync_confluence.sh +0 -30
  1712. package/tools/vds-scripts/scripts/target-state-automation/update_dependencies.sh +0 -19
  1713. package/tools/vds-scripts/scripts/target-state-automation/validate_links.sh +0 -86
  1714. package/tools/vds-scripts/scripts/target-state-automation/validate_markdown.sh +0 -52
  1715. package/tools/vds-scripts/scripts/target-state-automation/validate_schemas.sh +0 -26
  1716. package/tools/vds-scripts/scripts/target-state-automation/validate_structure.sh +0 -98
  1717. package/tools/vds-scripts/scripts/tests/__init__.py +0 -1
  1718. package/tools/vds-scripts/scripts/tests/test_dockerfile_correctness.py +0 -815
  1719. package/tools/vds-scripts/scripts/tests/test_makefile_loadouts.py +0 -560
  1720. package/tools/vds-scripts/scripts/tests/test_smoke_deploy.py +0 -313
  1721. package/tools/vds-scripts/scripts/tests/test_verify_alembic.py +0 -581
  1722. package/tools/vds-scripts/scripts/tests/test_verify_infra_topology.py +0 -254
  1723. package/tools/vds-scripts/scripts/update_modules_xml.py +0 -194
  1724. package/tools/vds-scripts/scripts/uv-workspace-alignment-verification-2026-03-25.md +0 -128
  1725. package/tools/vds-scripts/scripts/uv-workspace-alignment-verification-2026-04-18.md +0 -100
  1726. package/tools/vds-scripts/scripts/validate-cli-standardization.sh +0 -188
  1727. package/tools/vds-scripts/scripts/validate_brd_coverage.py +0 -197
  1728. package/tools/vds-scripts/scripts/validate_folder_structure.py +0 -234
  1729. package/tools/vds-scripts/scripts/validate_link_integrity.py +0 -274
  1730. package/tools/vds-scripts/scripts/vami017-caller-compat-report.md +0 -62
  1731. package/tools/vds-scripts/scripts/vami017-phase-b-scaffold-notes.md +0 -79
  1732. package/tools/vds-scripts/scripts/vds_sh_helpers.sh +0 -180
  1733. package/tools/vds-scripts/scripts/verification/phase2_portable_paths_ubuntu_docker.sh +0 -26
  1734. package/tools/vds-scripts/scripts/verify-infra-topology.py +0 -868
  1735. package/tools/vds-scripts/scripts/verify-memory-cli-e2e.sh +0 -598
  1736. package/tools/vds-scripts/scripts/verify-worktree-features.sh +0 -306
  1737. package/tools/vds-scripts/scripts/worktree-add.sh +0 -128
  1738. package/tools/vds-scripts/scripts/worktree-remove.sh +0 -112
  1739. package/tools/vds-scripts/scripts/worktree_compose.sh +0 -269
  1740. package/tools/vds-scripts/scripts/worktree_uv.sh +0 -77
  1741. package/tools/vds-scripts/setup-icloud-nosync.sh +0 -91
  1742. package/tools/vds-scripts/sonarqube_orchestrator/IMPLEMENTATION_AUDIT.md +0 -376
  1743. package/tools/vds-scripts/sonarqube_orchestrator/README.md +0 -507
  1744. package/tools/vds-scripts/sonarqube_orchestrator/pyproject.toml +0 -106
  1745. package/tools/vds-scripts/sonarqube_orchestrator/scripts/ensure_symlink.sh +0 -38
  1746. package/tools/vds-scripts/sonarqube_orchestrator/src/vds_sonarqube_orchestrator/__init__.py +0 -164
  1747. package/tools/vds-scripts/sonarqube_orchestrator/src/vds_sonarqube_orchestrator/batch.py +0 -212
  1748. package/tools/vds-scripts/sonarqube_orchestrator/src/vds_sonarqube_orchestrator/cli.py +0 -1407
  1749. package/tools/vds-scripts/sonarqube_orchestrator/src/vds_sonarqube_orchestrator/client.py +0 -608
  1750. package/tools/vds-scripts/sonarqube_orchestrator/src/vds_sonarqube_orchestrator/config.py +0 -260
  1751. package/tools/vds-scripts/sonarqube_orchestrator/src/vds_sonarqube_orchestrator/diff.py +0 -220
  1752. package/tools/vds-scripts/sonarqube_orchestrator/src/vds_sonarqube_orchestrator/errors.py +0 -34
  1753. package/tools/vds-scripts/sonarqube_orchestrator/src/vds_sonarqube_orchestrator/external_sca.py +0 -932
  1754. package/tools/vds-scripts/sonarqube_orchestrator/src/vds_sonarqube_orchestrator/portfolio.py +0 -225
  1755. package/tools/vds-scripts/sonarqube_orchestrator/src/vds_sonarqube_orchestrator/pr.py +0 -505
  1756. package/tools/vds-scripts/sonarqube_orchestrator/src/vds_sonarqube_orchestrator/reports.py +0 -342
  1757. package/tools/vds-scripts/sonarqube_orchestrator/src/vds_sonarqube_orchestrator/scanner.py +0 -351
  1758. package/tools/vds-scripts/sonarqube_orchestrator/src/vds_sonarqube_orchestrator/webhooks.py +0 -269
  1759. package/tools/vds-scripts/sonarqube_orchestrator/tests/__init__.py +0 -0
  1760. package/tools/vds-scripts/sonarqube_orchestrator/tests/conftest.py +0 -134
  1761. package/tools/vds-scripts/sonarqube_orchestrator/tests/test_batch.py +0 -419
  1762. package/tools/vds-scripts/sonarqube_orchestrator/tests/test_config.py +0 -145
  1763. package/tools/vds-scripts/sonarqube_orchestrator/tests/test_errors.py +0 -78
  1764. package/tools/vds-scripts/sonarqube_orchestrator/tests/test_external_sca.py +0 -466
  1765. package/tools/vds-scripts/sonarqube_orchestrator/tests/test_pr.py +0 -471
  1766. package/tools/vds-scripts/sonarqube_orchestrator/tests/test_reports.py +0 -511
  1767. package/tools/vds-scripts/sonarqube_orchestrator/tests/test_webhooks.py +0 -660
  1768. package/tools/vds-scripts/telegram_bridge/Dockerfile +0 -44
  1769. package/tools/vds-scripts/telegram_bridge/__init__.py +0 -6
  1770. package/tools/vds-scripts/telegram_bridge/alembic/__init__.py +0 -0
  1771. package/tools/vds-scripts/telegram_bridge/alembic/env.py +0 -63
  1772. package/tools/vds-scripts/telegram_bridge/alembic/script.py.mako +0 -24
  1773. package/tools/vds-scripts/telegram_bridge/alembic/versions/0001_telegram_bridge_init.py +0 -193
  1774. package/tools/vds-scripts/telegram_bridge/alembic/versions/0002_polling_state.py +0 -48
  1775. package/tools/vds-scripts/telegram_bridge/alembic/versions/0003_claude_session_store.py +0 -62
  1776. package/tools/vds-scripts/telegram_bridge/alembic.ini +0 -47
  1777. package/tools/vds-scripts/telegram_bridge/cli.py +0 -708
  1778. package/tools/vds-scripts/telegram_bridge/daemon/__init__.py +0 -1
  1779. package/tools/vds-scripts/telegram_bridge/daemon/__main__.py +0 -351
  1780. package/tools/vds-scripts/telegram_bridge/daemon/alembic_head_check.py +0 -116
  1781. package/tools/vds-scripts/telegram_bridge/daemon/audit.py +0 -255
  1782. package/tools/vds-scripts/telegram_bridge/daemon/bot.py +0 -52
  1783. package/tools/vds-scripts/telegram_bridge/daemon/bot_gateway.py +0 -114
  1784. package/tools/vds-scripts/telegram_bridge/daemon/bus.py +0 -106
  1785. package/tools/vds-scripts/telegram_bridge/daemon/commands.py +0 -457
  1786. package/tools/vds-scripts/telegram_bridge/daemon/config.py +0 -129
  1787. package/tools/vds-scripts/telegram_bridge/daemon/dispatcher.py +0 -107
  1788. package/tools/vds-scripts/telegram_bridge/daemon/health_server.py +0 -130
  1789. package/tools/vds-scripts/telegram_bridge/daemon/job_scheduler.py +0 -213
  1790. package/tools/vds-scripts/telegram_bridge/daemon/lifecycle.py +0 -100
  1791. package/tools/vds-scripts/telegram_bridge/daemon/middleware/__init__.py +0 -1
  1792. package/tools/vds-scripts/telegram_bridge/daemon/middleware/allowlist.py +0 -70
  1793. package/tools/vds-scripts/telegram_bridge/daemon/middleware/offset_tracker.py +0 -49
  1794. package/tools/vds-scripts/telegram_bridge/daemon/pg.py +0 -53
  1795. package/tools/vds-scripts/telegram_bridge/daemon/pg_outage_watchdog.py +0 -180
  1796. package/tools/vds-scripts/telegram_bridge/daemon/polling_state.py +0 -64
  1797. package/tools/vds-scripts/telegram_bridge/daemon/preflight.py +0 -106
  1798. package/tools/vds-scripts/telegram_bridge/daemon/registry_loader.py +0 -79
  1799. package/tools/vds-scripts/telegram_bridge/daemon/runner_orchestrator.py +0 -371
  1800. package/tools/vds-scripts/telegram_bridge/daemon/session_registry.py +0 -188
  1801. package/tools/vds-scripts/telegram_bridge/daemon/shim_server.py +0 -331
  1802. package/tools/vds-scripts/telegram_bridge/daemon/throttler.py +0 -501
  1803. package/tools/vds-scripts/telegram_bridge/daemon/topic_promoter.py +0 -343
  1804. package/tools/vds-scripts/telegram_bridge/daemon/uploads.py +0 -165
  1805. package/tools/vds-scripts/telegram_bridge/docker-compose.server.yml +0 -37
  1806. package/tools/vds-scripts/telegram_bridge/docker-compose.telegram.yml +0 -65
  1807. package/tools/vds-scripts/telegram_bridge/jobs/__init__.py +0 -6
  1808. package/tools/vds-scripts/telegram_bridge/jobs/archive_topics.py +0 -161
  1809. package/tools/vds-scripts/telegram_bridge/jobs/rotate_audit.py +0 -264
  1810. package/tools/vds-scripts/telegram_bridge/models/__init__.py +0 -27
  1811. package/tools/vds-scripts/telegram_bridge/models/events.py +0 -123
  1812. package/tools/vds-scripts/telegram_bridge/models/sessions.py +0 -52
  1813. package/tools/vds-scripts/telegram_bridge/models/topics.py +0 -41
  1814. package/tools/vds-scripts/telegram_bridge/pyproject.toml +0 -97
  1815. package/tools/vds-scripts/telegram_bridge/registry.yaml +0 -81
  1816. package/tools/vds-scripts/telegram_bridge/runners/__init__.py +0 -6
  1817. package/tools/vds-scripts/telegram_bridge/runners/_base/__init__.py +0 -1
  1818. package/tools/vds-scripts/telegram_bridge/runners/_base/protocol.py +0 -192
  1819. package/tools/vds-scripts/telegram_bridge/runners/_base/runner.py +0 -245
  1820. package/tools/vds-scripts/telegram_bridge/runners/_base/secret_patterns.py +0 -130
  1821. package/tools/vds-scripts/telegram_bridge/runners/acp/__init__.py +0 -7
  1822. package/tools/vds-scripts/telegram_bridge/runners/acp/__main__.py +0 -56
  1823. package/tools/vds-scripts/telegram_bridge/runners/acp/adapter.py +0 -272
  1824. package/tools/vds-scripts/telegram_bridge/runners/claude/__init__.py +0 -7
  1825. package/tools/vds-scripts/telegram_bridge/runners/claude/__main__.py +0 -61
  1826. package/tools/vds-scripts/telegram_bridge/runners/claude/adapter.py +0 -267
  1827. package/tools/vds-scripts/telegram_bridge/runners/claude/session_store.py +0 -191
  1828. package/tools/vds-scripts/telegram_bridge/runners/claude/upload_tool.py +0 -83
  1829. package/tools/vds-scripts/telegram_bridge/runners/codex/__init__.py +0 -7
  1830. package/tools/vds-scripts/telegram_bridge/runners/codex/__main__.py +0 -50
  1831. package/tools/vds-scripts/telegram_bridge/scripts/verify-tier1.sh +0 -54
  1832. package/tools/vds-scripts/telegram_bridge/scripts/verify-tier3-smoke.sh +0 -145
  1833. package/tools/vds-scripts/telegram_bridge/shim.py +0 -220
  1834. package/tools/vds-scripts/telegram_bridge/skill_content/QUALITY.md +0 -47
  1835. package/tools/vds-scripts/telegram_bridge/skill_content/SKILL.md +0 -99
  1836. package/tools/vds-scripts/telegram_bridge/skill_content/references/CHANGELOG.md +0 -47
  1837. package/tools/vds-scripts/telegram_bridge/skill_content/references/agent-onboarding.md +0 -84
  1838. package/tools/vds-scripts/telegram_bridge/skill_content/references/architecture.md +0 -116
  1839. package/tools/vds-scripts/telegram_bridge/skill_content/references/audit-queries.md +0 -123
  1840. package/tools/vds-scripts/telegram_bridge/skill_content/references/commands.md +0 -84
  1841. package/tools/vds-scripts/telegram_bridge/skill_content/references/setup.md +0 -132
  1842. package/tools/vds-scripts/telegram_bridge/skill_content/references/troubleshooting.md +0 -162
  1843. package/tools/vds-scripts/telegram_bridge/skill_content/references/verification.md +0 -312
  1844. package/tools/vds-scripts/telegram_bridge/skill_content/references/wave-0-spike-results.md +0 -559
  1845. package/tools/vds-scripts/telegram_bridge/tests/__init__.py +0 -0
  1846. package/tools/vds-scripts/telegram_bridge/tests/acceptance/__init__.py +0 -0
  1847. package/tools/vds-scripts/telegram_bridge/tests/acceptance/conftest.py +0 -381
  1848. package/tools/vds-scripts/telegram_bridge/tests/acceptance/test_ac_01_first_run_setup.py +0 -47
  1849. package/tools/vds-scripts/telegram_bridge/tests/acceptance/test_ac_02_notifier_approver.py +0 -42
  1850. package/tools/vds-scripts/telegram_bridge/tests/acceptance/test_ac_03_mobile_remote_control.py +0 -42
  1851. package/tools/vds-scripts/telegram_bridge/tests/acceptance/test_ac_04_handoff_continuity.py +0 -88
  1852. package/tools/vds-scripts/telegram_bridge/tests/acceptance/test_ac_05_multi_agent.py +0 -132
  1853. package/tools/vds-scripts/telegram_bridge/tests/acceptance/test_ac_06_subagent_topic_promotion.py +0 -150
  1854. package/tools/vds-scripts/telegram_bridge/tests/acceptance/test_ac_07_subscribe_immediate_promote.py +0 -116
  1855. package/tools/vds-scripts/telegram_bridge/tests/acceptance/test_ac_08_file_upload_in.py +0 -215
  1856. package/tools/vds-scripts/telegram_bridge/tests/acceptance/test_ac_09_long_block_spill.py +0 -121
  1857. package/tools/vds-scripts/telegram_bridge/tests/acceptance/test_ac_10_streaming_throttle.py +0 -90
  1858. package/tools/vds-scripts/telegram_bridge/tests/acceptance/test_ac_11_audit_invariant.py +0 -156
  1859. package/tools/vds-scripts/telegram_bridge/tests/acceptance/test_ac_12_pg_outage_strict.py +0 -171
  1860. package/tools/vds-scripts/telegram_bridge/tests/acceptance/test_ac_13_redaction_in_blob.py +0 -146
  1861. package/tools/vds-scripts/telegram_bridge/tests/acceptance/test_ac_14_cli_status_full.py +0 -184
  1862. package/tools/vds-scripts/telegram_bridge/tests/acceptance/test_ac_15_allowlist_drop_counter.py +0 -84
  1863. package/tools/vds-scripts/telegram_bridge/tests/acceptance/test_ac_16_topic_title_128_cap.py +0 -73
  1864. package/tools/vds-scripts/telegram_bridge/tests/acceptance/test_ac_17_idle_timeout_ends.py +0 -110
  1865. package/tools/vds-scripts/telegram_bridge/tests/acceptance/test_ac_18_hang_watchdog.py +0 -102
  1866. package/tools/vds-scripts/telegram_bridge/tests/acceptance/test_ac_19_topic_creation_race.py +0 -91
  1867. package/tools/vds-scripts/telegram_bridge/tests/acceptance/test_ac_20_acp_resource_link.py +0 -121
  1868. package/tools/vds-scripts/telegram_bridge/tests/acceptance/test_ac_21_softcap_archive.py +0 -247
  1869. package/tools/vds-scripts/telegram_bridge/tests/acceptance/test_ac_22_daemon_restart_continuity.py +0 -47
  1870. package/tools/vds-scripts/telegram_bridge/tests/acceptance/test_ac_23_audit_query_cli.py +0 -39
  1871. package/tools/vds-scripts/telegram_bridge/tests/acceptance/test_ac_24_cold_rotation.py +0 -38
  1872. package/tools/vds-scripts/telegram_bridge/tests/acceptance/test_ac_25_advisory_lock_failfast.py +0 -35
  1873. package/tools/vds-scripts/telegram_bridge/tests/acceptance/test_ac_26_token_bucket_fairness.py +0 -34
  1874. package/tools/vds-scripts/telegram_bridge/tests/acceptance/test_ac_27_silent_degradation.py +0 -36
  1875. package/tools/vds-scripts/telegram_bridge/tests/acceptance/test_ac_28_jsonl_secondary_sink.py +0 -35
  1876. package/tools/vds-scripts/telegram_bridge/tests/acceptance/test_ac_29_ro_mount.py +0 -33
  1877. package/tools/vds-scripts/telegram_bridge/tests/integration/__init__.py +0 -0
  1878. package/tools/vds-scripts/telegram_bridge/tests/integration/conftest.py +0 -196
  1879. package/tools/vds-scripts/telegram_bridge/tests/integration/test_ac_10_audit_forensic_query.py +0 -253
  1880. package/tools/vds-scripts/telegram_bridge/tests/integration/test_ac_11_cold_rotation_roundtrip.py +0 -204
  1881. package/tools/vds-scripts/telegram_bridge/tests/integration/test_ac_25_append_only_trigger.py +0 -188
  1882. package/tools/vds-scripts/telegram_bridge/tests/integration/test_archive_jobs.py +0 -265
  1883. package/tools/vds-scripts/telegram_bridge/tests/integration/test_audit_writer_invariant.py +0 -310
  1884. package/tools/vds-scripts/telegram_bridge/tests/integration/test_claude_session_store.py +0 -202
  1885. package/tools/vds-scripts/telegram_bridge/tests/integration/test_migration_roundtrip.py +0 -231
  1886. package/tools/vds-scripts/telegram_bridge/tests/integration/test_offset_persistence.py +0 -210
  1887. package/tools/vds-scripts/telegram_bridge/tests/integration/test_polling_singleton_constraint.py +0 -81
  1888. package/tools/vds-scripts/telegram_bridge/tests/integration/test_subscriptions.py +0 -194
  1889. package/tools/vds-scripts/telegram_bridge/tests/integration/test_topics_fk_chain.py +0 -216
  1890. package/tools/vds-scripts/telegram_bridge/tests/integration/test_uploads_cas_dedup.py +0 -265
  1891. package/tools/vds-scripts/telegram_bridge/tests/spikes/__init__.py +0 -0
  1892. package/tools/vds-scripts/telegram_bridge/tests/spikes/conftest.py +0 -5
  1893. package/tools/vds-scripts/telegram_bridge/tests/spikes/test_0_10_acp_schema_drift.py +0 -259
  1894. package/tools/vds-scripts/telegram_bridge/tests/spikes/test_0_11_telegram_general_topic_api.py +0 -63
  1895. package/tools/vds-scripts/telegram_bridge/tests/spikes/test_0_12_last_processed_offset.py +0 -56
  1896. package/tools/vds-scripts/telegram_bridge/tests/spikes/test_0_13_resume_corrupted.py +0 -77
  1897. package/tools/vds-scripts/telegram_bridge/tests/spikes/test_0_1_telegram_forum_smoke.py +0 -42
  1898. package/tools/vds-scripts/telegram_bridge/tests/spikes/test_0_2_telegram_file_smoke.py +0 -38
  1899. package/tools/vds-scripts/telegram_bridge/tests/spikes/test_0_3_telegram_permission_smoke.py +0 -40
  1900. package/tools/vds-scripts/telegram_bridge/tests/spikes/test_0_4_claude_sdk_hooks_mcp_smoke.py +0 -45
  1901. package/tools/vds-scripts/telegram_bridge/tests/spikes/test_0_5_session_store_conformance.py +0 -37
  1902. package/tools/vds-scripts/telegram_bridge/tests/spikes/test_0_6_claude_lock_jsonl_smoke.py +0 -51
  1903. package/tools/vds-scripts/telegram_bridge/tests/spikes/test_0_7_codex_acp_smoke.py +0 -58
  1904. package/tools/vds-scripts/telegram_bridge/tests/spikes/test_0_8_generic_acp_smoke.py +0 -57
  1905. package/tools/vds-scripts/telegram_bridge/tests/spikes/test_0_9_daemon_restart_vs_container.py +0 -55
  1906. package/tools/vds-scripts/telegram_bridge/tests/unit/__init__.py +0 -0
  1907. package/tools/vds-scripts/telegram_bridge/tests/unit/test_acp_adapter_full.py +0 -567
  1908. package/tools/vds-scripts/telegram_bridge/tests/unit/test_acp_runner_translate.py +0 -140
  1909. package/tools/vds-scripts/telegram_bridge/tests/unit/test_allowlist_middleware.py +0 -101
  1910. package/tools/vds-scripts/telegram_bridge/tests/unit/test_audit_archive_topics.py +0 -134
  1911. package/tools/vds-scripts/telegram_bridge/tests/unit/test_audit_postgres_unavailable.py +0 -151
  1912. package/tools/vds-scripts/telegram_bridge/tests/unit/test_audit_redact_existing.py +0 -134
  1913. package/tools/vds-scripts/telegram_bridge/tests/unit/test_bot_factory.py +0 -98
  1914. package/tools/vds-scripts/telegram_bridge/tests/unit/test_bot_gateway.py +0 -201
  1915. package/tools/vds-scripts/telegram_bridge/tests/unit/test_bus.py +0 -84
  1916. package/tools/vds-scripts/telegram_bridge/tests/unit/test_claude_adapter.py +0 -580
  1917. package/tools/vds-scripts/telegram_bridge/tests/unit/test_cli_commands.py +0 -459
  1918. package/tools/vds-scripts/telegram_bridge/tests/unit/test_cli_restart.py +0 -65
  1919. package/tools/vds-scripts/telegram_bridge/tests/unit/test_commands.py +0 -641
  1920. package/tools/vds-scripts/telegram_bridge/tests/unit/test_daemon_boot.py +0 -431
  1921. package/tools/vds-scripts/telegram_bridge/tests/unit/test_dispatcher.py +0 -198
  1922. package/tools/vds-scripts/telegram_bridge/tests/unit/test_health_server.py +0 -521
  1923. package/tools/vds-scripts/telegram_bridge/tests/unit/test_job_scheduler.py +0 -226
  1924. package/tools/vds-scripts/telegram_bridge/tests/unit/test_lifecycle_extra.py +0 -149
  1925. package/tools/vds-scripts/telegram_bridge/tests/unit/test_migration_check.py +0 -201
  1926. package/tools/vds-scripts/telegram_bridge/tests/unit/test_models_events.py +0 -72
  1927. package/tools/vds-scripts/telegram_bridge/tests/unit/test_models_sessions.py +0 -34
  1928. package/tools/vds-scripts/telegram_bridge/tests/unit/test_offset_tracker.py +0 -200
  1929. package/tools/vds-scripts/telegram_bridge/tests/unit/test_pg_outage_watchdog.py +0 -207
  1930. package/tools/vds-scripts/telegram_bridge/tests/unit/test_pg_pool.py +0 -124
  1931. package/tools/vds-scripts/telegram_bridge/tests/unit/test_preflight.py +0 -188
  1932. package/tools/vds-scripts/telegram_bridge/tests/unit/test_redaction.py +0 -193
  1933. package/tools/vds-scripts/telegram_bridge/tests/unit/test_registry.py +0 -71
  1934. package/tools/vds-scripts/telegram_bridge/tests/unit/test_registry_loader.py +0 -133
  1935. package/tools/vds-scripts/telegram_bridge/tests/unit/test_rotate_audit.py +0 -416
  1936. package/tools/vds-scripts/telegram_bridge/tests/unit/test_rotate_audit_paths.py +0 -57
  1937. package/tools/vds-scripts/telegram_bridge/tests/unit/test_runner_entrypoints.py +0 -309
  1938. package/tools/vds-scripts/telegram_bridge/tests/unit/test_runner_internals.py +0 -327
  1939. package/tools/vds-scripts/telegram_bridge/tests/unit/test_runner_lifecycle.py +0 -309
  1940. package/tools/vds-scripts/telegram_bridge/tests/unit/test_runner_orchestrator.py +0 -895
  1941. package/tools/vds-scripts/telegram_bridge/tests/unit/test_runner_orchestrator_translate.py +0 -162
  1942. package/tools/vds-scripts/telegram_bridge/tests/unit/test_runner_protocol.py +0 -156
  1943. package/tools/vds-scripts/telegram_bridge/tests/unit/test_runner_reconnect.py +0 -184
  1944. package/tools/vds-scripts/telegram_bridge/tests/unit/test_session_store.py +0 -264
  1945. package/tools/vds-scripts/telegram_bridge/tests/unit/test_session_store_resume_validator.py +0 -109
  1946. package/tools/vds-scripts/telegram_bridge/tests/unit/test_shim.py +0 -52
  1947. package/tools/vds-scripts/telegram_bridge/tests/unit/test_shim_full.py +0 -413
  1948. package/tools/vds-scripts/telegram_bridge/tests/unit/test_shim_server.py +0 -498
  1949. package/tools/vds-scripts/telegram_bridge/tests/unit/test_throttler.py +0 -208
  1950. package/tools/vds-scripts/telegram_bridge/tests/unit/test_throttler_spill.py +0 -176
  1951. package/tools/vds-scripts/telegram_bridge/tests/unit/test_topic_promoter.py +0 -229
  1952. package/tools/vds-scripts/telegram_bridge/tests/unit/test_upload_tool.py +0 -227
  1953. package/tools/vds-scripts/telegram_bridge/tests/unit/test_uploads.py +0 -337
  1954. package/tools/vds-scripts/telegram_bridge/tests/unit/test_uploads_meta.py +0 -91
  1955. package/tools/vds-scripts/uv.lock +0 -6603
  1956. package/tools/vds-scripts/vds-evolution-mono.sh +0 -59
  1957. package/tools/vds-scripts/vds-mail/SKILL.md +0 -185
  1958. package/tools/vds-scripts/vds-mail/scripts/fetch_mail.py +0 -116
  1959. package/tools/vds-scripts/vds-mail/scripts/search_mail.py +0 -131
  1960. package/tools/vds-scripts/vds-mail/scripts/send_mail.py +0 -150
  1961. package/tools/vds-scripts/vds_agent_core/CHANGELOG.md +0 -36
  1962. package/tools/vds-scripts/vds_agent_core/README.md +0 -453
  1963. package/tools/vds-scripts/vds_agent_core/docs/PHASE9A_ASSESSMENT.md +0 -50
  1964. package/tools/vds-scripts/vds_agent_core/docs/embedding.md +0 -468
  1965. package/tools/vds-scripts/vds_agent_core/pyproject.toml +0 -51
  1966. package/tools/vds-scripts/vds_agent_core/src/vds_agent_core/__init__.py +0 -29
  1967. package/tools/vds-scripts/vds_agent_core/src/vds_agent_core/agents/__init__.py +0 -26
  1968. package/tools/vds-scripts/vds_agent_core/src/vds_agent_core/agents/hooks.py +0 -119
  1969. package/tools/vds-scripts/vds_agent_core/src/vds_agent_core/agents/loop.py +0 -864
  1970. package/tools/vds-scripts/vds_agent_core/src/vds_agent_core/agents/tools.py +0 -41
  1971. package/tools/vds-scripts/vds_agent_core/src/vds_agent_core/config.py +0 -252
  1972. package/tools/vds-scripts/vds_agent_core/src/vds_agent_core/llm/__init__.py +0 -55
  1973. package/tools/vds-scripts/vds_agent_core/src/vds_agent_core/llm/_cascade.py +0 -143
  1974. package/tools/vds-scripts/vds_agent_core/src/vds_agent_core/llm/budget.py +0 -353
  1975. package/tools/vds-scripts/vds_agent_core/src/vds_agent_core/llm/cache.py +0 -373
  1976. package/tools/vds-scripts/vds_agent_core/src/vds_agent_core/llm/embedding.py +0 -815
  1977. package/tools/vds-scripts/vds_agent_core/src/vds_agent_core/llm/provider.py +0 -173
  1978. package/tools/vds-scripts/vds_agent_core/src/vds_agent_core/llm/schemas.py +0 -45
  1979. package/tools/vds-scripts/vds_agent_core/src/vds_agent_core/observability/__init__.py +0 -77
  1980. package/tools/vds-scripts/vds_agent_core/src/vds_agent_core/observability/decorators.py +0 -258
  1981. package/tools/vds-scripts/vds_agent_core/src/vds_agent_core/observability/jsonl_exporter.py +0 -236
  1982. package/tools/vds-scripts/vds_agent_core/src/vds_agent_core/observability/tracer.py +0 -497
  1983. package/tools/vds-scripts/vds_agent_core/src/vds_agent_core/profiles.py +0 -2015
  1984. package/tools/vds-scripts/vds_agent_core/src/vds_agent_core/runtime/__init__.py +0 -0
  1985. package/tools/vds-scripts/vds_agent_core/src/vds_agent_core/runtime/agent_id.py +0 -60
  1986. package/tools/vds-scripts/vds_agent_core/src/vds_agent_core/security/__init__.py +0 -13
  1987. package/tools/vds-scripts/vds_agent_core/src/vds_agent_core/security/credentials.py +0 -106
  1988. package/tools/vds-scripts/vds_agent_core/src/vds_agent_core/skills/__init__.py +0 -1
  1989. package/tools/vds-scripts/vds_agent_core/src/vds_agent_core/skills/executor.py +0 -238
  1990. package/tools/vds-scripts/vds_agent_core/src/vds_agent_core/skills/manager.py +0 -381
  1991. package/tools/vds-scripts/vds_agent_core/src/vds_agent_core/skills/policy.py +0 -568
  1992. package/tools/vds-scripts/vds_agent_core/src/vds_agent_core/workflows/__init__.py +0 -19
  1993. package/tools/vds-scripts/vds_agent_core/src/vds_agent_core/workflows/langgraph_runner.py +0 -102
  1994. package/tools/vds-scripts/vds_agent_core/src/vds_agent_core/workflows/protocols.py +0 -81
  1995. package/tools/vds-scripts/vds_agent_core/tests/__init__.py +0 -0
  1996. package/tools/vds-scripts/vds_agent_core/tests/conftest.py +0 -62
  1997. package/tools/vds-scripts/vds_agent_core/tests/integration/__init__.py +0 -0
  1998. package/tools/vds-scripts/vds_agent_core/tests/integration/test_audit_loop_hooks_integration.py +0 -135
  1999. package/tools/vds-scripts/vds_agent_core/tests/integration/test_audit_observability_integration.py +0 -246
  2000. package/tools/vds-scripts/vds_agent_core/tests/integration/test_public_api_stability.py +0 -91
  2001. package/tools/vds-scripts/vds_agent_core/tests/unit/__init__.py +0 -0
  2002. package/tools/vds-scripts/vds_agent_core/tests/unit/llm/__init__.py +0 -0
  2003. package/tools/vds-scripts/vds_agent_core/tests/unit/llm/test_call_site_parallelism.py +0 -30
  2004. package/tools/vds-scripts/vds_agent_core/tests/unit/llm/test_dimension_guardrail.py +0 -25
  2005. package/tools/vds-scripts/vds_agent_core/tests/unit/llm/test_drop_in_provider_extensibility.py +0 -76
  2006. package/tools/vds-scripts/vds_agent_core/tests/unit/llm/test_embedding.py +0 -393
  2007. package/tools/vds-scripts/vds_agent_core/tests/unit/llm/test_embedding_cache.py +0 -302
  2008. package/tools/vds-scripts/vds_agent_core/tests/unit/llm/test_embedding_extra.py +0 -696
  2009. package/tools/vds-scripts/vds_agent_core/tests/unit/llm/test_embedding_subclass.py +0 -49
  2010. package/tools/vds-scripts/vds_agent_core/tests/unit/llm/test_no_provider_leakage_in_env.py +0 -34
  2011. package/tools/vds-scripts/vds_agent_core/tests/unit/llm/test_provider_auto_route.py +0 -48
  2012. package/tools/vds-scripts/vds_agent_core/tests/unit/llm/test_runtime_log_clean.py +0 -111
  2013. package/tools/vds-scripts/vds_agent_core/tests/unit/llm/test_w7_logic_fixes.py +0 -219
  2014. package/tools/vds-scripts/vds_agent_core/tests/unit/profiles/__init__.py +0 -0
  2015. package/tools/vds-scripts/vds_agent_core/tests/unit/profiles/test_embedding_block_parser.py +0 -194
  2016. package/tools/vds-scripts/vds_agent_core/tests/unit/profiles/test_env_resolver_allowlist.py +0 -141
  2017. package/tools/vds-scripts/vds_agent_core/tests/unit/profiles/test_profile_authorization.py +0 -158
  2018. package/tools/vds-scripts/vds_agent_core/tests/unit/profiles/test_profiles_w3_extra.py +0 -547
  2019. package/tools/vds-scripts/vds_agent_core/tests/unit/profiles/test_real_audit_profile_compat.py +0 -129
  2020. package/tools/vds-scripts/vds_agent_core/tests/unit/runtime/__init__.py +0 -0
  2021. package/tools/vds-scripts/vds_agent_core/tests/unit/runtime/test_for_agent.py +0 -337
  2022. package/tools/vds-scripts/vds_agent_core/tests/unit/runtime/test_w9_cascade_edges.py +0 -369
  2023. package/tools/vds-scripts/vds_agent_core/tests/unit/security/__init__.py +0 -0
  2024. package/tools/vds-scripts/vds_agent_core/tests/unit/security/test_credentials.py +0 -132
  2025. package/tools/vds-scripts/vds_agent_core/tests/unit/test_agent_loop.py +0 -663
  2026. package/tools/vds-scripts/vds_agent_core/tests/unit/test_agent_loop_coverage.py +0 -429
  2027. package/tools/vds-scripts/vds_agent_core/tests/unit/test_agents_hooks_defaults.py +0 -22
  2028. package/tools/vds-scripts/vds_agent_core/tests/unit/test_budget.py +0 -155
  2029. package/tools/vds-scripts/vds_agent_core/tests/unit/test_budget_coverage.py +0 -264
  2030. package/tools/vds-scripts/vds_agent_core/tests/unit/test_budget_tracking_only.py +0 -71
  2031. package/tools/vds-scripts/vds_agent_core/tests/unit/test_cache.py +0 -251
  2032. package/tools/vds-scripts/vds_agent_core/tests/unit/test_cache_context.py +0 -62
  2033. package/tools/vds-scripts/vds_agent_core/tests/unit/test_config.py +0 -155
  2034. package/tools/vds-scripts/vds_agent_core/tests/unit/test_langgraph_runner.py +0 -45
  2035. package/tools/vds-scripts/vds_agent_core/tests/unit/test_langgraph_runner_coverage.py +0 -98
  2036. package/tools/vds-scripts/vds_agent_core/tests/unit/test_llm_cache_deep.py +0 -113
  2037. package/tools/vds-scripts/vds_agent_core/tests/unit/test_observability_decorators.py +0 -697
  2038. package/tools/vds-scripts/vds_agent_core/tests/unit/test_observability_hooks.py +0 -217
  2039. package/tools/vds-scripts/vds_agent_core/tests/unit/test_observability_jsonl_exporter.py +0 -542
  2040. package/tools/vds-scripts/vds_agent_core/tests/unit/test_observability_jsonl_wiring.py +0 -313
  2041. package/tools/vds-scripts/vds_agent_core/tests/unit/test_observability_tracer.py +0 -896
  2042. package/tools/vds-scripts/vds_agent_core/tests/unit/test_profiles.py +0 -1571
  2043. package/tools/vds-scripts/vds_agent_core/tests/unit/test_profiles_coverage.py +0 -444
  2044. package/tools/vds-scripts/vds_agent_core/tests/unit/test_provider.py +0 -316
  2045. package/tools/vds-scripts/vds_agent_core/tests/unit/test_schemas.py +0 -63
  2046. package/tools/vds-scripts/vds_agent_core/tests/unit/test_skill_executor.py +0 -297
  2047. package/tools/vds-scripts/vds_agent_core/tests/unit/test_skill_manager.py +0 -370
  2048. package/tools/vds-scripts/vds_agent_core/tests/unit/test_skill_manager_coverage.py +0 -364
  2049. package/tools/vds-scripts/vds_agent_core/tests/unit/test_skill_policy.py +0 -402
  2050. package/tools/vds-scripts/vds_agent_core/tests/unit/test_skill_rubric.py +0 -47
  2051. package/tools/vds-scripts/vds_agent_core/tests/unit/test_tools.py +0 -51
  2052. package/tools/vds-scripts/vds_agent_core/tests/unit/test_workflow_protocols.py +0 -136
  2053. package/tools/vds-scripts/vds_cli/README.md +0 -201
  2054. package/tools/vds-scripts/vds_cli/VERIFICATION_REPORT.md +0 -41
  2055. package/tools/vds-scripts/vds_cli/pyproject.toml +0 -53
  2056. package/tools/vds-scripts/vds_cli/src/vds_cli/__init__.py +0 -3
  2057. package/tools/vds-scripts/vds_cli/src/vds_cli/assets/git-credential-helper.py +0 -235
  2058. package/tools/vds-scripts/vds_cli/src/vds_cli/cli.py +0 -1166
  2059. package/tools/vds-scripts/vds_cli/src/vds_cli/commands/__init__.py +0 -1
  2060. package/tools/vds-scripts/vds_cli/src/vds_cli/commands/lint_cli.py +0 -370
  2061. package/tools/vds-scripts/vds_cli/src/vds_cli/confluence_sync.py +0 -846
  2062. package/tools/vds-scripts/vds_cli/src/vds_cli/docs/consumption/__init__.py +0 -7
  2063. package/tools/vds-scripts/vds_cli/src/vds_cli/docs/consumption/funnel.py +0 -105
  2064. package/tools/vds-scripts/vds_cli/src/vds_cli/docs/consumption/scanner.py +0 -211
  2065. package/tools/vds-scripts/vds_cli/src/vds_cli/docs/freshness/report.py +0 -90
  2066. package/tools/vds-scripts/vds_cli/src/vds_cli/docs/types.py +0 -27
  2067. package/tools/vds-scripts/vds_cli/src/vds_cli/docs_cmd.py +0 -672
  2068. package/tools/vds-scripts/vds_cli/src/vds_cli/docs_metrics.py +0 -75
  2069. package/tools/vds-scripts/vds_cli/src/vds_cli/docs_sync.py +0 -1171
  2070. package/tools/vds-scripts/vds_cli/src/vds_cli/ecosystem/__init__.py +0 -39
  2071. package/tools/vds-scripts/vds_cli/src/vds_cli/ecosystem/report.py +0 -439
  2072. package/tools/vds-scripts/vds_cli/src/vds_cli/ecosystem_docs.py +0 -164
  2073. package/tools/vds-scripts/vds_cli/src/vds_cli/env.py +0 -111
  2074. package/tools/vds-scripts/vds_cli/src/vds_cli/env_git_helper.py +0 -281
  2075. package/tools/vds-scripts/vds_cli/src/vds_cli/google_sheets_orchestrator/__init__.py +0 -3
  2076. package/tools/vds-scripts/vds_cli/src/vds_cli/google_sheets_orchestrator/google_sheets_orchestrator.py +0 -173
  2077. package/tools/vds-scripts/vds_cli/src/vds_cli/router.py +0 -258
  2078. package/tools/vds-scripts/vds_cli/src/vds_cli/skills_cmd.py +0 -274
  2079. package/tools/vds-scripts/vds_cli/src/vds_cli/sync_api.py +0 -613
  2080. package/tools/vds-scripts/vds_cli/src/vds_cli/sync_service.py +0 -283
  2081. package/tools/vds-scripts/vds_cli/tests/conftest.py +0 -60
  2082. package/tools/vds-scripts/vds_cli/tests/test_env_git_helper_lifecycle.py +0 -261
  2083. package/tools/vds-scripts/vds_cli/tests/test_git_credential_helper.py +0 -240
  2084. package/tools/vds-scripts/vds_cli/tests/test_router_help_proxy.py +0 -43
  2085. package/tools/vds-scripts/vds_cli/tests/unit/test_cli.py +0 -245
  2086. package/tools/vds-scripts/vds_cli/tests/unit/test_cli_DOC004.py +0 -110
  2087. package/tools/vds-scripts/vds_cli/tests/unit/test_confluence_sync.py +0 -315
  2088. package/tools/vds-scripts/vds_cli/tests/unit/test_confluence_sync_wave7.py +0 -375
  2089. package/tools/vds-scripts/vds_cli/tests/unit/test_consumption_funnel.py +0 -106
  2090. package/tools/vds-scripts/vds_cli/tests/unit/test_consumption_scanner.py +0 -144
  2091. package/tools/vds-scripts/vds_cli/tests/unit/test_docs_cmd.py +0 -89
  2092. package/tools/vds-scripts/vds_cli/tests/unit/test_docs_cmd_wave8.py +0 -161
  2093. package/tools/vds-scripts/vds_cli/tests/unit/test_docs_metrics.py +0 -16
  2094. package/tools/vds-scripts/vds_cli/tests/unit/test_docs_quality_score.py +0 -61
  2095. package/tools/vds-scripts/vds_cli/tests/unit/test_docs_sync.py +0 -417
  2096. package/tools/vds-scripts/vds_cli/tests/unit/test_ecosystem_cli_dashboard.py +0 -667
  2097. package/tools/vds-scripts/vds_cli/tests/unit/test_ecosystem_cli_dashboard_rendering.py +0 -143
  2098. package/tools/vds-scripts/vds_cli/tests/unit/test_ecosystem_docs.py +0 -63
  2099. package/tools/vds-scripts/vds_cli/tests/unit/test_env.py +0 -85
  2100. package/tools/vds-scripts/vds_cli/tests/unit/test_freshness_report.py +0 -125
  2101. package/tools/vds-scripts/vds_cli/tests/unit/test_lint_cli.py +0 -224
  2102. package/tools/vds-scripts/vds_cli/tests/unit/test_router.py +0 -135
  2103. package/tools/vds-scripts/vds_cli/tests/unit/test_skills_cmd.py +0 -419
  2104. package/tools/vds-scripts/vds_cli/tests/unit/test_sync_api.py +0 -357
  2105. package/tools/vds-scripts/vds_cli/tests/unit/test_sync_service.py +0 -170
  2106. package/tools/vds-scripts/vds_cli/tests/verification/conftest.py +0 -51
  2107. package/tools/vds-scripts/vds_cli/tests/verification/test_bitbucket_real.py +0 -32
  2108. package/tools/vds-scripts/vds_cli/tests/verification/test_confluence_real.py +0 -32
  2109. package/tools/vds-scripts/vds_cli/tests/verification/test_jira_real.py +0 -40
  2110. package/tools/vds-scripts/vds_cli_common/README.md +0 -190
  2111. package/tools/vds-scripts/vds_cli_common/pyproject.toml +0 -96
  2112. package/tools/vds-scripts/vds_cli_common/src/vds_cli_common/__init__.py +0 -36
  2113. package/tools/vds-scripts/vds_cli_common/src/vds_cli_common/app.py +0 -55
  2114. package/tools/vds-scripts/vds_cli_common/src/vds_cli_common/completers.py +0 -139
  2115. package/tools/vds-scripts/vds_cli_common/src/vds_cli_common/context.py +0 -201
  2116. package/tools/vds-scripts/vds_cli_common/src/vds_cli_common/env.py +0 -163
  2117. package/tools/vds-scripts/vds_cli_common/src/vds_cli_common/errors.py +0 -440
  2118. package/tools/vds-scripts/vds_cli_common/src/vds_cli_common/output.py +0 -284
  2119. package/tools/vds-scripts/vds_cli_common/src/vds_cli_common/paths.py +0 -78
  2120. package/tools/vds-scripts/vds_cli_common/src/vds_cli_common/testing.py +0 -211
  2121. package/tools/vds-scripts/vds_cli_common/src/vds_cli_common/version.py +0 -85
  2122. package/tools/vds-scripts/vds_cli_common/tests/__init__.py +0 -0
  2123. package/tools/vds-scripts/vds_cli_common/tests/test_app.py +0 -126
  2124. package/tools/vds-scripts/vds_cli_common/tests/test_completers.py +0 -148
  2125. package/tools/vds-scripts/vds_cli_common/tests/test_context.py +0 -192
  2126. package/tools/vds-scripts/vds_cli_common/tests/test_env.py +0 -235
  2127. package/tools/vds-scripts/vds_cli_common/tests/test_errors.py +0 -275
  2128. package/tools/vds-scripts/vds_cli_common/tests/test_output.py +0 -229
  2129. package/tools/vds-scripts/vds_cli_common/tests/test_paths.py +0 -61
  2130. package/tools/vds-scripts/vds_cli_common/tests/test_testing.py +0 -138
  2131. package/tools/vds-scripts/vds_cli_common/tests/test_version.py +0 -64
  2132. package/tools/vds-scripts/vds_evolution/README.md +0 -123
  2133. package/tools/vds-scripts/vds_evolution/collaboration/tests/__init__.py +0 -0
  2134. package/tools/vds-scripts/vds_evolution/collaboration/tests/test_capability_registry.py +0 -177
  2135. package/tools/vds-scripts/vds_evolution/pyproject.toml +0 -66
  2136. package/tools/vds-scripts/vds_evolution/src/vds_evolution/__init__.py +0 -26
  2137. package/tools/vds-scripts/vds_evolution/src/vds_evolution/audit.py +0 -210
  2138. package/tools/vds-scripts/vds_evolution/src/vds_evolution/auto_promote.py +0 -220
  2139. package/tools/vds-scripts/vds_evolution/src/vds_evolution/branch_guard.py +0 -522
  2140. package/tools/vds-scripts/vds_evolution/src/vds_evolution/classifier.py +0 -181
  2141. package/tools/vds-scripts/vds_evolution/src/vds_evolution/cli.py +0 -831
  2142. package/tools/vds-scripts/vds_evolution/src/vds_evolution/collaboration/__init__.py +0 -3
  2143. package/tools/vds-scripts/vds_evolution/src/vds_evolution/collaboration/capability_registry.py +0 -191
  2144. package/tools/vds-scripts/vds_evolution/src/vds_evolution/collaboration/cross_skill_detector.py +0 -180
  2145. package/tools/vds-scripts/vds_evolution/src/vds_evolution/collaboration/integration_pattern_gen.py +0 -154
  2146. package/tools/vds-scripts/vds_evolution/src/vds_evolution/collaboration/propagator.py +0 -99
  2147. package/tools/vds-scripts/vds_evolution/src/vds_evolution/collaboration/router_integration.py +0 -72
  2148. package/tools/vds-scripts/vds_evolution/src/vds_evolution/collaboration/schemas/tool-decision-matrix-schema.json +0 -50
  2149. package/tools/vds-scripts/vds_evolution/src/vds_evolution/collaboration/skill_graph_indexer.py +0 -46
  2150. package/tools/vds-scripts/vds_evolution/src/vds_evolution/collaboration/tests/__init__.py +0 -0
  2151. package/tools/vds-scripts/vds_evolution/src/vds_evolution/collaboration/tests/test_capability_registry.py +0 -177
  2152. package/tools/vds-scripts/vds_evolution/src/vds_evolution/collaboration/tests/test_cross_skill_detector.py +0 -131
  2153. package/tools/vds-scripts/vds_evolution/src/vds_evolution/collaboration/tests/test_integration_pattern_gen.py +0 -94
  2154. package/tools/vds-scripts/vds_evolution/src/vds_evolution/collaboration/tests/test_propagator.py +0 -94
  2155. package/tools/vds-scripts/vds_evolution/src/vds_evolution/collaboration/tests/test_router_integration.py +0 -63
  2156. package/tools/vds-scripts/vds_evolution/src/vds_evolution/collaboration/tests/test_skill_graph_indexer.py +0 -31
  2157. package/tools/vds-scripts/vds_evolution/src/vds_evolution/collaboration/tests/test_tool_decision_matrix.py +0 -100
  2158. package/tools/vds-scripts/vds_evolution/src/vds_evolution/collaboration/tool_decision_matrix.py +0 -142
  2159. package/tools/vds-scripts/vds_evolution/src/vds_evolution/collaboration/tool_decision_matrix.yaml +0 -82
  2160. package/tools/vds-scripts/vds_evolution/src/vds_evolution/gates/__init__.py +0 -40
  2161. package/tools/vds-scripts/vds_evolution/src/vds_evolution/gates/behavioral.py +0 -232
  2162. package/tools/vds-scripts/vds_evolution/src/vds_evolution/gates/ensemble_judge.py +0 -461
  2163. package/tools/vds-scripts/vds_evolution/src/vds_evolution/gates/schemas/calibration-manifest.schema.json +0 -49
  2164. package/tools/vds-scripts/vds_evolution/src/vds_evolution/gates/schemas/test-dataset.schema.json +0 -43
  2165. package/tools/vds-scripts/vds_evolution/src/vds_evolution/gates/semantic.py +0 -290
  2166. package/tools/vds-scripts/vds_evolution/src/vds_evolution/gates/structural.py +0 -297
  2167. package/tools/vds-scripts/vds_evolution/src/vds_evolution/hmac_binding.py +0 -233
  2168. package/tools/vds-scripts/vds_evolution/src/vds_evolution/models.py +0 -381
  2169. package/tools/vds-scripts/vds_evolution/src/vds_evolution/openspace_integration.py +0 -1300
  2170. package/tools/vds-scripts/vds_evolution/src/vds_evolution/promote.py +0 -327
  2171. package/tools/vds-scripts/vds_evolution/src/vds_evolution/reconciler.py +0 -880
  2172. package/tools/vds-scripts/vds_evolution/src/vds_evolution/router.py +0 -435
  2173. package/tools/vds-scripts/vds_evolution/src/vds_evolution/shadow.py +0 -156
  2174. package/tools/vds-scripts/vds_evolution/src/vds_evolution/switch.py +0 -154
  2175. package/tools/vds-scripts/vds_evolution/tests/__init__.py +0 -0
  2176. package/tools/vds-scripts/vds_evolution/tests/integration/__init__.py +0 -0
  2177. package/tools/vds-scripts/vds_evolution/tests/integration/test_killswitch_cycle_boundary.py +0 -837
  2178. package/tools/vds-scripts/vds_evolution/tests/integration/test_openspace_integration.py +0 -1342
  2179. package/tools/vds-scripts/vds_evolution/tests/unit/__init__.py +0 -0
  2180. package/tools/vds-scripts/vds_evolution/tests/unit/test_classifier.py +0 -110
  2181. package/tools/vds-scripts/vds_evolution/tests/unit/test_cli_openspace_runtime.py +0 -43
  2182. package/tools/vds-scripts/vds_evolution/tests/unit/test_gate1.py +0 -216
  2183. package/tools/vds-scripts/vds_evolution/tests/unit/test_gate2.py +0 -178
  2184. package/tools/vds-scripts/vds_evolution/tests/unit/test_gate3.py +0 -221
  2185. package/tools/vds-scripts/vds_evolution/tests/unit/test_models.py +0 -340
  2186. package/tools/vds-scripts/vds_evolution/tests/unit/test_phase3_plus/__init__.py +0 -0
  2187. package/tools/vds-scripts/vds_evolution/tests/unit/test_phase3_plus/test_auto_promote.py +0 -44
  2188. package/tools/vds-scripts/vds_evolution/tests/unit/test_phase3_plus/test_ensemble_judge.py +0 -79
  2189. package/tools/vds-scripts/vds_evolution/tests/unit/test_phase3_plus/test_hmac_binding.py +0 -86
  2190. package/tools/vds-scripts/vds_evolution/tests/unit/test_reconciler.py +0 -315
  2191. package/tools/vds-scripts/vds_evolution/tests/unit/test_router.py +0 -90
  2192. package/tools/vds-scripts/vds_evolution/uv.lock +0 -797
  2193. package/tools/vds-scripts/vds_memory_client/pyproject.toml +0 -61
  2194. package/tools/vds-scripts/vds_memory_client/src/vds_memory_client/__init__.py +0 -7
  2195. package/tools/vds-scripts/vds_memory_client/src/vds_memory_client/client.py +0 -876
  2196. package/tools/vds-scripts/vds_memory_client/tests/__init__.py +0 -0
  2197. package/tools/vds-scripts/vds_memory_client/tests/test_client.py +0 -821
  2198. package/tools/vds-scripts/vds_memory_client/tests/test_dedup_threshold_phase216.py +0 -69
  2199. package/tools/vds-scripts/vds_memory_client/tests/test_maintenance_methods_phase217.py +0 -403
  2200. package/tools/vds-scripts/vds_memory_client/tests/test_warm_cache.py +0 -70
  2201. package/tools/vds-scripts/vds_sync_orchestrator/pyproject.toml +0 -65
  2202. package/tools/vds-scripts/vds_sync_orchestrator/src/vds_sync_orchestrator/__init__.py +0 -22
  2203. package/tools/vds-scripts/vds_sync_orchestrator/src/vds_sync_orchestrator/discovery.py +0 -60
  2204. package/tools/vds-scripts/vds_sync_orchestrator/src/vds_sync_orchestrator/executor.py +0 -226
  2205. package/tools/vds-scripts/vds_sync_orchestrator/src/vds_sync_orchestrator/facade.py +0 -103
  2206. package/tools/vds-scripts/vds_sync_orchestrator/src/vds_sync_orchestrator/models.py +0 -103
  2207. package/tools/vds-scripts/vds_sync_orchestrator/tests/__init__.py +0 -0
  2208. package/tools/vds-scripts/vds_sync_orchestrator/tests/unit/__init__.py +0 -0
  2209. package/tools/vds-scripts/vds_sync_orchestrator/tests/unit/test_discovery.py +0 -115
  2210. package/tools/vds-scripts/vds_sync_orchestrator/tests/unit/test_executor.py +0 -259
  2211. package/tools/vds-scripts/vds_sync_orchestrator/tests/unit/test_facade.py +0 -181
  2212. package/tools/vds-scripts/vds_sync_orchestrator/tests/unit/test_isolation.py +0 -58
  2213. package/tools/vds-scripts/vds_sync_orchestrator/tests/unit/test_models.py +0 -172
  2214. package/tools/vds-scripts/vidp_orchestrator/README.md +0 -31
  2215. package/tools/vds-scripts/vidp_orchestrator/pyproject.toml +0 -50
  2216. package/tools/vds-scripts/vidp_orchestrator/src/vds_vidp_orchestrator/__init__.py +0 -26
  2217. package/tools/vds-scripts/vidp_orchestrator/src/vds_vidp_orchestrator/cli.py +0 -246
  2218. package/tools/vds-scripts/vidp_orchestrator/src/vds_vidp_orchestrator/client.py +0 -104
  2219. package/tools/vds-scripts/vidp_orchestrator/src/vds_vidp_orchestrator/config.py +0 -82
  2220. package/tools/vds-scripts/vidp_orchestrator/src/vds_vidp_orchestrator/workflows.json +0 -3
  2221. package/tools/vds-scripts/vidp_orchestrator/src/vds_vidp_orchestrator/workflows.py +0 -130
  2222. /package/{tools/skills → skills/sdlc}/bmad-advanced-elicitation/SKILL.md +0 -0
  2223. /package/{tools/skills → skills/sdlc}/bmad-advanced-elicitation/methods.csv +0 -0
  2224. /package/{tools/skills → skills/sdlc}/bmad-agent-analyst/SKILL.md +0 -0
  2225. /package/{tools/skills → skills/sdlc}/bmad-agent-analyst/bmad-skill-manifest.yaml +0 -0
  2226. /package/{tools/skills → skills/sdlc}/bmad-brainstorming/SKILL.md +0 -0
  2227. /package/{tools/skills → skills/sdlc}/bmad-brainstorming/brain-methods.csv +0 -0
  2228. /package/{tools/skills → skills/sdlc}/bmad-brainstorming/steps/step-01-session-setup.md +0 -0
  2229. /package/{tools/skills → skills/sdlc}/bmad-brainstorming/steps/step-01b-continue.md +0 -0
  2230. /package/{tools/skills → skills/sdlc}/bmad-brainstorming/steps/step-02a-user-selected.md +0 -0
  2231. /package/{tools/skills → skills/sdlc}/bmad-brainstorming/steps/step-02b-ai-recommended.md +0 -0
  2232. /package/{tools/skills → skills/sdlc}/bmad-brainstorming/steps/step-02c-random-selection.md +0 -0
  2233. /package/{tools/skills → skills/sdlc}/bmad-brainstorming/steps/step-02d-progressive-flow.md +0 -0
  2234. /package/{tools/skills → skills/sdlc}/bmad-brainstorming/steps/step-03-technique-execution.md +0 -0
  2235. /package/{tools/skills → skills/sdlc}/bmad-brainstorming/steps/step-04-idea-organization.md +0 -0
  2236. /package/{tools/skills → skills/sdlc}/bmad-brainstorming/template.md +0 -0
  2237. /package/{tools/skills → skills/sdlc}/bmad-brainstorming/workflow.md +0 -0
  2238. /package/{tools/skills → skills/sdlc}/bmad-check-implementation-readiness/SKILL.md +0 -0
  2239. /package/{tools/skills → skills/sdlc}/bmad-check-implementation-readiness/steps/step-01-document-discovery.md +0 -0
  2240. /package/{tools/skills → skills/sdlc}/bmad-check-implementation-readiness/steps/step-02-prd-analysis.md +0 -0
  2241. /package/{tools/skills → skills/sdlc}/bmad-check-implementation-readiness/steps/step-03-epic-coverage-validation.md +0 -0
  2242. /package/{tools/skills → skills/sdlc}/bmad-check-implementation-readiness/steps/step-04-ux-alignment.md +0 -0
  2243. /package/{tools/skills → skills/sdlc}/bmad-check-implementation-readiness/steps/step-05-epic-quality-review.md +0 -0
  2244. /package/{tools/skills → skills/sdlc}/bmad-check-implementation-readiness/steps/step-06-final-assessment.md +0 -0
  2245. /package/{tools/skills → skills/sdlc}/bmad-check-implementation-readiness/templates/readiness-report-template.md +0 -0
  2246. /package/{tools/skills → skills/sdlc}/bmad-check-implementation-readiness/workflow.md +0 -0
  2247. /package/{tools/skills → skills/sdlc}/bmad-code-review/SKILL.md +0 -0
  2248. /package/{tools/skills → skills/sdlc}/bmad-code-review/steps/step-01-gather-context.md +0 -0
  2249. /package/{tools/skills → skills/sdlc}/bmad-code-review/steps/step-02-review.md +0 -0
  2250. /package/{tools/skills → skills/sdlc}/bmad-code-review/steps/step-03-triage.md +0 -0
  2251. /package/{tools/skills → skills/sdlc}/bmad-code-review/steps/step-04-present.md +0 -0
  2252. /package/{tools/skills → skills/sdlc}/bmad-code-review/workflow.md +0 -0
  2253. /package/{tools/skills → skills/sdlc}/bmad-create-architecture/SKILL.md +0 -0
  2254. /package/{tools/skills → skills/sdlc}/bmad-create-architecture/architecture-decision-template.md +0 -0
  2255. /package/{tools/skills → skills/sdlc}/bmad-create-architecture/data/domain-complexity.csv +0 -0
  2256. /package/{tools/skills → skills/sdlc}/bmad-create-architecture/data/project-types.csv +0 -0
  2257. /package/{tools/skills → skills/sdlc}/bmad-create-architecture/steps/step-01-init.md +0 -0
  2258. /package/{tools/skills → skills/sdlc}/bmad-create-architecture/steps/step-01b-continue.md +0 -0
  2259. /package/{tools/skills → skills/sdlc}/bmad-create-architecture/steps/step-02-context.md +0 -0
  2260. /package/{tools/skills → skills/sdlc}/bmad-create-architecture/steps/step-03-starter.md +0 -0
  2261. /package/{tools/skills → skills/sdlc}/bmad-create-architecture/steps/step-04-decisions.md +0 -0
  2262. /package/{tools/skills → skills/sdlc}/bmad-create-architecture/steps/step-05-patterns.md +0 -0
  2263. /package/{tools/skills → skills/sdlc}/bmad-create-architecture/steps/step-06-structure.md +0 -0
  2264. /package/{tools/skills → skills/sdlc}/bmad-create-architecture/steps/step-07-validation.md +0 -0
  2265. /package/{tools/skills → skills/sdlc}/bmad-create-architecture/steps/step-08-complete.md +0 -0
  2266. /package/{tools/skills → skills/sdlc}/bmad-create-architecture/workflow.md +0 -0
  2267. /package/{tools/skills → skills/sdlc}/bmad-create-epics-and-stories/SKILL.md +0 -0
  2268. /package/{tools/skills → skills/sdlc}/bmad-create-epics-and-stories/steps/step-01-validate-prerequisites.md +0 -0
  2269. /package/{tools/skills → skills/sdlc}/bmad-create-epics-and-stories/steps/step-02-design-epics.md +0 -0
  2270. /package/{tools/skills → skills/sdlc}/bmad-create-epics-and-stories/steps/step-03-create-stories.md +0 -0
  2271. /package/{tools/skills → skills/sdlc}/bmad-create-epics-and-stories/steps/step-04-final-validation.md +0 -0
  2272. /package/{tools/skills → skills/sdlc}/bmad-create-epics-and-stories/templates/epics-template.md +0 -0
  2273. /package/{tools/skills → skills/sdlc}/bmad-create-epics-and-stories/workflow.md +0 -0
  2274. /package/{tools/skills → skills/sdlc}/bmad-create-prd/SKILL.md +0 -0
  2275. /package/{tools/skills → skills/sdlc}/bmad-create-prd/data/domain-complexity.csv +0 -0
  2276. /package/{tools/skills → skills/sdlc}/bmad-create-prd/data/prd-purpose.md +0 -0
  2277. /package/{tools/skills → skills/sdlc}/bmad-create-prd/data/project-types.csv +0 -0
  2278. /package/{tools/skills → skills/sdlc}/bmad-create-prd/steps-c/step-01-init.md +0 -0
  2279. /package/{tools/skills → skills/sdlc}/bmad-create-prd/steps-c/step-01b-continue.md +0 -0
  2280. /package/{tools/skills → skills/sdlc}/bmad-create-prd/steps-c/step-02-discovery.md +0 -0
  2281. /package/{tools/skills → skills/sdlc}/bmad-create-prd/steps-c/step-02b-vision.md +0 -0
  2282. /package/{tools/skills → skills/sdlc}/bmad-create-prd/steps-c/step-02c-executive-summary.md +0 -0
  2283. /package/{tools/skills → skills/sdlc}/bmad-create-prd/steps-c/step-03-success.md +0 -0
  2284. /package/{tools/skills → skills/sdlc}/bmad-create-prd/steps-c/step-04-journeys.md +0 -0
  2285. /package/{tools/skills → skills/sdlc}/bmad-create-prd/steps-c/step-05-domain.md +0 -0
  2286. /package/{tools/skills → skills/sdlc}/bmad-create-prd/steps-c/step-06-innovation.md +0 -0
  2287. /package/{tools/skills → skills/sdlc}/bmad-create-prd/steps-c/step-07-project-type.md +0 -0
  2288. /package/{tools/skills → skills/sdlc}/bmad-create-prd/steps-c/step-08-scoping.md +0 -0
  2289. /package/{tools/skills → skills/sdlc}/bmad-create-prd/steps-c/step-09-functional.md +0 -0
  2290. /package/{tools/skills → skills/sdlc}/bmad-create-prd/steps-c/step-10-nonfunctional.md +0 -0
  2291. /package/{tools/skills → skills/sdlc}/bmad-create-prd/steps-c/step-11-polish.md +0 -0
  2292. /package/{tools/skills → skills/sdlc}/bmad-create-prd/steps-c/step-12-complete.md +0 -0
  2293. /package/{tools/skills → skills/sdlc}/bmad-create-prd/templates/prd-template.md +0 -0
  2294. /package/{tools/skills → skills/sdlc}/bmad-create-prd/workflow.md +0 -0
  2295. /package/{tools/skills → skills/sdlc}/bmad-domain-research/SKILL.md +0 -0
  2296. /package/{tools/skills → skills/sdlc}/bmad-domain-research/domain-steps/step-01-init.md +0 -0
  2297. /package/{tools/skills → skills/sdlc}/bmad-domain-research/domain-steps/step-02-domain-analysis.md +0 -0
  2298. /package/{tools/skills → skills/sdlc}/bmad-domain-research/domain-steps/step-03-competitive-landscape.md +0 -0
  2299. /package/{tools/skills → skills/sdlc}/bmad-domain-research/domain-steps/step-04-regulatory-focus.md +0 -0
  2300. /package/{tools/skills → skills/sdlc}/bmad-domain-research/domain-steps/step-05-technical-trends.md +0 -0
  2301. /package/{tools/skills → skills/sdlc}/bmad-domain-research/domain-steps/step-06-research-synthesis.md +0 -0
  2302. /package/{tools/skills → skills/sdlc}/bmad-domain-research/research.template.md +0 -0
  2303. /package/{tools/skills → skills/sdlc}/bmad-domain-research/workflow.md +0 -0
  2304. /package/{tools/skills → skills/sdlc}/bmad-party-mode/SKILL.md +0 -0
  2305. /package/{tools/skills → skills/sdlc}/bmad-prfaq/SKILL.md +0 -0
  2306. /package/{tools/skills → skills/sdlc}/bmad-prfaq/agents/artifact-analyzer.md +0 -0
  2307. /package/{tools/skills → skills/sdlc}/bmad-prfaq/agents/web-researcher.md +0 -0
  2308. /package/{tools/skills → skills/sdlc}/bmad-prfaq/assets/prfaq-template.md +0 -0
  2309. /package/{tools/skills → skills/sdlc}/bmad-prfaq/bmad-manifest.json +0 -0
  2310. /package/{tools/skills → skills/sdlc}/bmad-prfaq/references/customer-faq.md +0 -0
  2311. /package/{tools/skills → skills/sdlc}/bmad-prfaq/references/internal-faq.md +0 -0
  2312. /package/{tools/skills → skills/sdlc}/bmad-prfaq/references/press-release.md +0 -0
  2313. /package/{tools/skills → skills/sdlc}/bmad-prfaq/references/verdict.md +0 -0
  2314. /package/{tools/skills → skills/sdlc}/bmad-qa-generate-e2e-tests/SKILL.md +0 -0
  2315. /package/{tools/skills → skills/sdlc}/bmad-qa-generate-e2e-tests/checklist.md +0 -0
  2316. /package/{tools/skills → skills/sdlc}/bmad-qa-generate-e2e-tests/workflow.md +0 -0
  2317. /package/{tools/skills → skills/sdlc}/bmad-review-adversarial-general/SKILL.md +0 -0
  2318. /package/{tools/skills → skills/sdlc}/bmad-review-edge-case-hunter/SKILL.md +0 -0
  2319. /package/{tools/skills → skills/sdlc}/bmad-validate-prd/SKILL.md +0 -0
  2320. /package/{tools/skills → skills/sdlc}/bmad-validate-prd/data/domain-complexity.csv +0 -0
  2321. /package/{tools/skills/bmad-edit-prd → skills/sdlc/bmad-validate-prd}/data/prd-purpose.md +0 -0
  2322. /package/{tools/skills → skills/sdlc}/bmad-validate-prd/data/project-types.csv +0 -0
  2323. /package/{tools/skills → skills/sdlc}/bmad-validate-prd/steps-v/step-v-01-discovery.md +0 -0
  2324. /package/{tools/skills → skills/sdlc}/bmad-validate-prd/steps-v/step-v-02-format-detection.md +0 -0
  2325. /package/{tools/skills → skills/sdlc}/bmad-validate-prd/steps-v/step-v-02b-parity-check.md +0 -0
  2326. /package/{tools/skills → skills/sdlc}/bmad-validate-prd/steps-v/step-v-03-density-validation.md +0 -0
  2327. /package/{tools/skills → skills/sdlc}/bmad-validate-prd/steps-v/step-v-04-brief-coverage-validation.md +0 -0
  2328. /package/{tools/skills → skills/sdlc}/bmad-validate-prd/steps-v/step-v-05-measurability-validation.md +0 -0
  2329. /package/{tools/skills → skills/sdlc}/bmad-validate-prd/steps-v/step-v-06-traceability-validation.md +0 -0
  2330. /package/{tools/skills → skills/sdlc}/bmad-validate-prd/steps-v/step-v-07-implementation-leakage-validation.md +0 -0
  2331. /package/{tools/skills → skills/sdlc}/bmad-validate-prd/steps-v/step-v-08-domain-compliance-validation.md +0 -0
  2332. /package/{tools/skills → skills/sdlc}/bmad-validate-prd/steps-v/step-v-09-project-type-validation.md +0 -0
  2333. /package/{tools/skills → skills/sdlc}/bmad-validate-prd/steps-v/step-v-10-smart-validation.md +0 -0
  2334. /package/{tools/skills → skills/sdlc}/bmad-validate-prd/steps-v/step-v-11-holistic-quality-validation.md +0 -0
  2335. /package/{tools/skills → skills/sdlc}/bmad-validate-prd/steps-v/step-v-12-completeness-validation.md +0 -0
  2336. /package/{tools/skills → skills/sdlc}/bmad-validate-prd/steps-v/step-v-13-report-complete.md +0 -0
  2337. /package/{tools/skills → skills/sdlc}/bmad-validate-prd/workflow.md +0 -0
@@ -1,2754 +0,0 @@
1
- """VDS AI Memory Service with session analytics and automation helpers."""
2
-
3
- import asyncio
4
- import contextlib
5
- import inspect
6
- import json
7
- import logging
8
- import time
9
- from collections import Counter
10
- from datetime import UTC, datetime, timedelta
11
- from typing import Any
12
- from uuid import uuid4
13
-
14
- from sqlalchemy import text
15
-
16
- from vds_memory_orchestrator.service.services.mem0_sync_service import (
17
- Mem0SyncService,
18
- )
19
- from vds_memory_orchestrator.service.services.memory_admin_service import MemoryAdminService
20
- from vds_memory_orchestrator.service.services.memory_crud_service import MemoryCRUDService
21
- from vds_memory_orchestrator.service.services.memory_search_service import MemorySearchService
22
-
23
- try:
24
- from vds_memory_orchestrator.agents import agents_enabled
25
- from vds_memory_orchestrator.agents.extraction import ExtractedKeyPoints, make_extraction_agent
26
-
27
- _AGENTS_IMPORTABLE = True
28
- except ImportError:
29
- _AGENTS_IMPORTABLE = False
30
-
31
-
32
- from vds_memory_orchestrator.service.core.ai_memory_exceptions import (
33
- NotFoundError,
34
- ServiceUnavailableError,
35
- SessionError,
36
- ValidationError,
37
- )
38
- from vds_memory_orchestrator.service.core.config import (
39
- REDIS_ANALYTICS_DB,
40
- REDIS_SESSION_STORE_DB,
41
- get_config,
42
- )
43
- from vds_memory_orchestrator.service.database.postgres_manager import database_service
44
- from vds_memory_orchestrator.service.database.redis_manager import get_redis_service, redis_manager
45
- from vds_memory_orchestrator.service.integrations.memory_transformer import (
46
- DataModelTransformer,
47
- MCPUserPreferences,
48
- )
49
- from vds_memory_orchestrator.service.models.ai_memory_models import (
50
- Analytics,
51
- BusinessDomain,
52
- ConsolidationResponse,
53
- Memory,
54
- MemoryCreateRequest,
55
- MemorySearchRequest,
56
- MemorySearchResponse,
57
- Operation,
58
- OperationType,
59
- Session,
60
- SessionBackupRequest,
61
- SessionBackupResponse,
62
- SessionBackupSummary,
63
- SessionBehaviorAnalytics,
64
- SessionBehaviorEvent,
65
- SessionConsolidationRequest,
66
- SessionContextRequest,
67
- SessionContextResponse,
68
- SessionContextSummary,
69
- SessionCreateRequest,
70
- SessionCreateResponse,
71
- SessionPerformanceMetrics,
72
- SessionPerformanceSummary,
73
- SessionRestoreRequest,
74
- SessionRestoreResponse,
75
- SessionShareAccessLevel,
76
- SessionShareListEntry,
77
- SessionShareRequest,
78
- SessionShareResponse,
79
- SessionStatus,
80
- SessionTemplateInstantiateRequest,
81
- SessionTemplateMetadata,
82
- SessionUpdateRequest,
83
- TeamInsightRequest,
84
- TeamInsightResponse,
85
- TeamMemoryShare,
86
- TeamMemorySynthesisRequest,
87
- TeamMemorySynthesisResponse,
88
- ToolType,
89
- TopicClusteringRequest,
90
- TopicClusteringResponse,
91
- )
92
- from vds_memory_orchestrator.service.services.embedding_service import embedding_service
93
- from vds_memory_orchestrator.service.services.memory_evolution import memory_evolution_tracker
94
- from vds_memory_orchestrator.service.services.session_template_service import (
95
- session_template_service,
96
- )
97
- from vds_memory_orchestrator.service.services.storage_strategy import StorageStrategyEngine
98
-
99
- logger = logging.getLogger(__name__)
100
-
101
- # Constants for magic values
102
- SECONDS_PER_HOUR = 3600
103
- MINUTES_PER_HOUR = 60
104
- MS_PER_SECOND = 1000
105
- TWO_HOURS_SECONDS = 7200
106
- DEFAULT_SESSION_BACKUP_TTL_HOURS = 7 * 24
107
- SESSION_BACKUP_TTL_SECONDS = DEFAULT_SESSION_BACKUP_TTL_HOURS * SECONDS_PER_HOUR
108
- MAX_SESSION_BACKUP_HISTORY = 20
109
- SESSION_SHARE_TTL_SECONDS = SECONDS_PER_HOUR * 24 * 90
110
- SESSION_BEHAVIOR_TIMELINE_LIMIT = 50
111
-
112
- # Thresholds for session and memory analysis
113
- HIGH_OPERATION_COUNT = 50
114
- HIGH_ACTIVITY_COUNT = 10
115
- MULTI_CATEGORY_THRESHOLD = 5
116
- HIGH_MEMORY_COUNT = 50
117
- LOW_MEMORY_COUNT = 5
118
- DIVERSE_CATEGORY_THRESHOLD = 5
119
-
120
- # Health check metrics are now tracked in Redis:
121
- # - metrics:cache:hits and metrics:cache:misses (cache hit rate)
122
- # - metrics:resp:count and metrics:resp:sum_ms (avg response time)
123
- # - Service startup time tracked in _startup_time attribute
124
-
125
-
126
- class VDSAIMemoryService:
127
- """VDS AI Service combining Memory and Session management."""
128
-
129
- def __init__(self) -> None:
130
- self.config = get_config()
131
- self._redis_service = None
132
- self._mem0_sync: Mem0SyncService | None = None
133
- self._mem0_client_backing = None # holds client when _mem0_sync is None (pre-init / tests)
134
- self._search_service: MemorySearchService | None = None
135
- self._crud_service: MemoryCRUDService | None = None
136
- self._admin_service: MemoryAdminService | None = None
137
- self._storage_engine = None
138
- self._embedding_service = embedding_service
139
- self._background_tasks = set()
140
- self._startup_time = None # Track service startup time
141
- self._memory_evolution_tracker = memory_evolution_tracker
142
-
143
- @property
144
- def _mem0_client(self): # type: ignore[override]
145
- """Property proxy: forwards to Mem0SyncService once initialized."""
146
- if self._mem0_sync is not None:
147
- return self._mem0_sync._mem0_client
148
- return self._mem0_client_backing
149
-
150
- @_mem0_client.setter
151
- def _mem0_client(self, value) -> None: # type: ignore[override]
152
- if self._mem0_sync is not None:
153
- self._mem0_sync._mem0_client = value
154
- else:
155
- self._mem0_client_backing = value
156
-
157
- @property
158
- def _mem0_http_clients(self): # type: ignore[override]
159
- """Property proxy for HTTP client pool (lives in Mem0SyncService)."""
160
- if self._mem0_sync is not None:
161
- return self._mem0_sync._mem0_http_clients
162
- return None
163
-
164
- async def initialize(self):
165
- """Initialize the unified service."""
166
- # Record startup time
167
- if not self._startup_time:
168
- self._startup_time = datetime.now(UTC)
169
-
170
- await self._initialize_redis()
171
-
172
- # Create and wire Mem0SyncService (leaf dependency)
173
- self._mem0_sync = Mem0SyncService(self.config)
174
- if self._mem0_client_backing is not None:
175
- # Transfer any client set by tests before initialize() was called
176
- self._mem0_sync._mem0_client = self._mem0_client_backing
177
- self._mem0_client_backing = None
178
- await self._mem0_sync.initialize()
179
-
180
- # Wire MemorySearchService after Mem0Sync is ready.
181
- # Use a closure for session_loader so that patch.object on the facade's
182
- # get_session is picked up at call time (bound methods bypass instance-dict patching).
183
- _facade = self
184
- # Phase 223.C: wire semantic cache so that search_memories() probes and
185
- # populates it — making hit/miss telemetry non-zero after operations.
186
- from vds_memory_orchestrator.service.services.semantic_cache_service import (
187
- get_semantic_cache_service as _get_sem_cache,
188
- )
189
- _semantic_cache = await _get_sem_cache()
190
- self._search_service = MemorySearchService(
191
- config=self.config,
192
- mem0_sync=self._mem0_sync,
193
- redis_service=self._redis_service,
194
- session_loader=lambda sid: _facade.get_session(sid),
195
- semantic_cache=_semantic_cache,
196
- )
197
-
198
- # Initialize storage strategy before wiring CRUD service so the engine
199
- # reference is non-None when passed as a constructor argument.
200
- await self._initialize_storage_strategy()
201
-
202
- # Wire MemoryCRUDService with all collaborator deps.
203
- _crud_facade = self
204
- self._crud_service = MemoryCRUDService(
205
- config=self.config,
206
- mem0_sync=self._mem0_sync,
207
- redis_service=self._redis_service,
208
- session_loader=lambda sid: _crud_facade.get_session(sid),
209
- session_updater=lambda req: _crud_facade.update_session(req),
210
- emit_operation_fn=lambda **kw: _crud_facade._emit_operation(**kw),
211
- storage_engine=self._storage_engine,
212
- evolution_tracker=self._memory_evolution_tracker,
213
- )
214
- _crud_svc = self._crud_service
215
- _admin_facade = self
216
- self._admin_service = MemoryAdminService(
217
- config=self.config,
218
- mem0_sync=self._mem0_sync,
219
- redis_service=self._redis_service,
220
- resolve_mem0_from_event_fn=lambda e, m, meta: _crud_svc._resolve_mem0_id_from_event(
221
- e, m, meta
222
- ),
223
- resolve_mem0_by_search_fn=lambda mid: _crud_svc._resolve_mem0_id_by_search(mid),
224
- startup_time=self._startup_time,
225
- get_background_task_count_fn=lambda: len(_admin_facade._background_tasks),
226
- )
227
- if self._memory_evolution_tracker:
228
- try:
229
- self._memory_evolution_tracker.reload()
230
- except Exception as exc:
231
- logger.debug("Memory evolution tracker reload failed: %s", exc)
232
- service_env = getattr(self.config.service, "environment", "prod")
233
- if service_env == "test":
234
- logger.debug("Skipping auto background task start in test environment")
235
- else:
236
- await self._start_background_tasks()
237
- logger.info("VDS AI Service initialized successfully")
238
-
239
- async def _initialize_redis(self):
240
- """Initialize Redis service."""
241
- try:
242
- self._redis_service = await get_redis_service()
243
- logger.info("Redis service initialized")
244
- except Exception as exc: # pragma: no cover - defensive guardrail
245
- logger.exception("Failed to initialize Redis service: %s", exc)
246
- raise ServiceUnavailableError(f"Redis initialization failed: {exc}") from exc
247
-
248
- async def _initialize_storage_strategy(self):
249
- """Initialize storage strategy engine for tiered storage."""
250
- try:
251
- self._storage_engine = StorageStrategyEngine()
252
- await self._storage_engine.initialize()
253
- logger.info("Storage strategy engine initialized successfully")
254
- except Exception as e:
255
- logger.exception("Failed to initialize storage strategy engine: %s", e)
256
- self._storage_engine = None
257
-
258
- async def _start_background_tasks(self):
259
- """Start background tasks for maintenance."""
260
- # Start session cleanup task
261
- cleanup_task = asyncio.create_task(self._session_cleanup_loop())
262
- self._background_tasks.add(cleanup_task)
263
-
264
- # Start analytics aggregation task
265
- analytics_task = asyncio.create_task(self._analytics_aggregation_loop())
266
- self._background_tasks.add(analytics_task)
267
-
268
- def start_background_tasks(self):
269
- """Public wrapper for tests/agents to kick off background loops."""
270
- # Avoid duplicate starts
271
- if self._background_tasks:
272
- return
273
- # In tests we want deterministic immediate population of the set
274
- try:
275
- cleanup_task = asyncio.create_task(self._session_cleanup_loop())
276
- analytics_task = asyncio.create_task(self._analytics_aggregation_loop())
277
- self._background_tasks.update({cleanup_task, analytics_task})
278
- except RuntimeError:
279
- # No running loop (rare in sync callers) – create a new one temporarily
280
- loop = asyncio.new_event_loop()
281
- asyncio.set_event_loop(loop)
282
- cleanup_task = loop.create_task(self._session_cleanup_loop())
283
- analytics_task = loop.create_task(self._analytics_aggregation_loop())
284
- self._background_tasks.update({cleanup_task, analytics_task})
285
-
286
- def stop_background_tasks(self):
287
- """Cancel and clear background tasks (test helper)."""
288
- for task in list(self._background_tasks):
289
- task.cancel()
290
- self._background_tasks.clear()
291
-
292
- async def _session_cleanup_loop(self):
293
- """Background task to clean up expired sessions."""
294
- while True:
295
- try:
296
- await asyncio.sleep(self.config.service.session_cleanup_interval)
297
- await self.cleanup_expired_sessions()
298
- except Exception as e:
299
- logger.exception("Error in session cleanup loop: %s", e)
300
- await asyncio.sleep(60) # Wait before retrying
301
-
302
- async def _analytics_aggregation_loop(self):
303
- """Background task to aggregate analytics data."""
304
- while True:
305
- try:
306
- await asyncio.sleep(self.config.service.metrics_interval)
307
- await self.aggregate_analytics()
308
- except Exception as e:
309
- logger.exception("Error in analytics aggregation loop: %s", e)
310
- await asyncio.sleep(60) # Wait before retrying
311
-
312
- async def shutdown(self):
313
- """Shutdown the service."""
314
- # Cancel background tasks
315
- for task in self._background_tasks:
316
- task.cancel()
317
- with contextlib.suppress(asyncio.CancelledError):
318
- await task
319
-
320
- # Close Redis connections
321
- if self._redis_service:
322
- await self._redis_service.close_all()
323
-
324
- if self._embedding_service:
325
- await self._embedding_service.aclose()
326
-
327
- if self._mem0_sync:
328
- await self._mem0_sync.close()
329
-
330
- logger.info("VDS AI Service shutdown complete")
331
-
332
- async def _mem0_call(self, method_name: str, **kwargs):
333
- """Delegate to Mem0SyncService; pre-init fallback for tests bypassing initialize()."""
334
- if self._mem0_sync is not None:
335
- return await self._mem0_sync.mem0_call(method_name, **kwargs)
336
- # Pre-init path: tests that set service._mem0_client before calling initialize()
337
- client = self._mem0_client_backing
338
- if not client:
339
- raise ServiceUnavailableError("Mem0 client not initialized")
340
- method = getattr(client, method_name, None)
341
- if not method:
342
- raise ServiceUnavailableError(f"Mem0 client missing method {method_name}")
343
- result = method(**kwargs)
344
- if inspect.isawaitable(result):
345
- result = await result
346
- return result
347
-
348
- def get_mem0_circuit_breaker_state(self) -> dict[str, Any]:
349
- """Expose Mem0 circuit breaker state for health checks."""
350
- if self._mem0_sync is not None:
351
- return self._mem0_sync.get_circuit_breaker_state()
352
- return {
353
- "state": "closed",
354
- "failures": 0,
355
- "failure_threshold": 0,
356
- "reset_seconds": 0,
357
- "last_failure_at": None,
358
- "reset_at": None,
359
- "remaining_seconds": 0.0,
360
- }
361
-
362
- async def _record_mem0_fallback_metrics(self, search_mode: str | None) -> None:
363
- """Track fallback usage in Redis analytics."""
364
- if not self._redis_service:
365
- return
366
- mode = (search_mode or "").lower()
367
- with contextlib.suppress(Exception):
368
- await self._redis_service.increment_metric("mem0_fallback_requests", 1)
369
- if mode in {"pgvector", "bm25"}:
370
- await self._redis_service.increment_metric(f"mem0_fallback_{mode}", 1)
371
-
372
- # ------------------------------------------------------------------
373
- # Lazy-init service accessors (reduces delegation stub boilerplate)
374
- # ------------------------------------------------------------------
375
-
376
- def _get_crud_svc(self) -> "MemoryCRUDService":
377
- if self._crud_service is None:
378
- self._crud_service = MemoryCRUDService(
379
- config=self.config,
380
- mem0_sync=self._mem0_sync,
381
- redis_service=self._redis_service,
382
- session_loader=lambda sid: self.get_session(sid),
383
- session_updater=lambda req: self.update_session(req),
384
- emit_operation_fn=lambda **kw: self._emit_operation(**kw),
385
- storage_engine=self._storage_engine,
386
- evolution_tracker=self._memory_evolution_tracker,
387
- )
388
- return self._crud_service
389
-
390
- def _get_search_svc(self) -> "MemorySearchService":
391
- if self._search_service is None:
392
- self._search_service = MemorySearchService(
393
- config=self.config,
394
- mem0_sync=self._mem0_sync,
395
- redis_service=self._redis_service,
396
- session_loader=lambda sid: self.get_session(sid),
397
- )
398
- return self._search_service
399
-
400
- def _get_admin_svc(self) -> "MemoryAdminService":
401
- if self._admin_service is None:
402
- crud = self._get_crud_svc()
403
- self._admin_service = MemoryAdminService(
404
- config=self.config,
405
- mem0_sync=self._mem0_sync,
406
- redis_service=self._redis_service,
407
- resolve_mem0_from_event_fn=lambda e, m, meta: crud._resolve_mem0_id_from_event(
408
- e, m, meta
409
- ),
410
- resolve_mem0_by_search_fn=lambda mid: crud._resolve_mem0_id_by_search(mid),
411
- startup_time=self._startup_time,
412
- get_background_task_count_fn=lambda: len(self._background_tasks),
413
- )
414
- return self._admin_service
415
-
416
- def _derive_org_id(self, *args, **kwargs):
417
- """Delegates to MemoryCRUDService."""
418
- return self._get_crud_svc()._derive_org_id(*args, **kwargs)
419
-
420
- async def _invalidate_semantic_cache(self, *args, **kwargs):
421
- """Delegates to MemoryCRUDService."""
422
- return await self._get_crud_svc()._invalidate_semantic_cache(*args, **kwargs)
423
-
424
- def _should_create_index_memory(self, *args, **kwargs):
425
- """Delegates to MemoryCRUDService."""
426
- return self._get_crud_svc()._should_create_index_memory(*args, **kwargs)
427
-
428
- def _build_index_memory_content(self, *args, **kwargs):
429
- """Delegates to MemoryCRUDService."""
430
- return self._get_crud_svc()._build_index_memory_content(*args, **kwargs)
431
-
432
- async def _create_index_memory(self, *args, **kwargs):
433
- """Delegates to MemoryCRUDService."""
434
- return await self._get_crud_svc()._create_index_memory(*args, **kwargs)
435
-
436
- async def _resolve_mem0_id_from_event(self, *args, **kwargs):
437
- """Delegates to MemoryCRUDService."""
438
- return await self._get_crud_svc()._resolve_mem0_id_from_event(*args, **kwargs)
439
-
440
- async def _resolve_mem0_id_by_search(self, *args, **kwargs):
441
- """Delegates to MemoryCRUDService."""
442
- return await self._get_crud_svc()._resolve_mem0_id_by_search(*args, **kwargs)
443
-
444
- async def _record_evolution_event(self, *args, **kwargs):
445
- """Delegates to MemoryCRUDService."""
446
- return await self._get_crud_svc()._record_evolution_event(*args, **kwargs)
447
-
448
- async def create_session(self, request: SessionCreateRequest) -> SessionCreateResponse:
449
- """Create a new session."""
450
- try:
451
- # Generate session ID
452
- now = datetime.now(UTC)
453
- if not request.user_id or not str(request.user_id).strip():
454
- raise ValidationError("user_id must not be empty")
455
-
456
- session_id = f"session-{request.user_id}-{int(now.timestamp())}"
457
- expires_at = now + timedelta(hours=request.ttl_hours)
458
-
459
- # Handle project_domain conversion (support both string and enum)
460
- project_domain = request.project_domain
461
- if isinstance(project_domain, str):
462
- project_domain = BusinessDomain(project_domain.upper())
463
-
464
- # Get string representation for logging/memory
465
- project_domain_str = (
466
- project_domain.value if hasattr(project_domain, "value") else str(project_domain)
467
- )
468
-
469
- context_metadata = dict(request.metadata or {})
470
- if request.context and "session_context" not in context_metadata:
471
- context_metadata["session_context"] = request.context
472
- if request.template_id:
473
- context_metadata.setdefault("template_id", request.template_id)
474
- if request.template_name:
475
- context_metadata.setdefault("template_name", request.template_name)
476
-
477
- session_data = Session(
478
- session_id=session_id,
479
- user_id=request.user_id,
480
- project_domain=project_domain,
481
- working_directory=request.working_directory,
482
- git_branch=request.git_branch,
483
- git_repository=request.git_repository,
484
- environment=request.environment,
485
- session_context=request.context,
486
- template_id=request.template_id,
487
- template_name=request.template_name,
488
- context_tags=request.context_tags,
489
- key_tasks=request.key_tasks,
490
- created_at=now,
491
- last_accessed=now,
492
- expires_at=expires_at,
493
- preferences=request.preferences or {},
494
- context_metadata=context_metadata,
495
- )
496
-
497
- session_data = self._apply_session_enrichment(session_data)
498
-
499
- # Store in Redis
500
- success = await self._redis_service.store_session(
501
- session_id,
502
- session_data.model_dump(),
503
- ttl=request.ttl_hours * SECONDS_PER_HOUR,
504
- )
505
-
506
- if success:
507
- # Create initial memory for session creation
508
- session_memory = MemoryCreateRequest(
509
- content=f"Session created for {request.user_id} in {project_domain_str} project",
510
- category="session-summary",
511
- importance="medium",
512
- session_id=session_id,
513
- user_id=request.user_id,
514
- working_directory=request.working_directory,
515
- operation_type="create", # Use valid enum value
516
- metadata={
517
- "project_domain": request.project_domain.value
518
- if hasattr(request.project_domain, "value")
519
- else str(request.project_domain),
520
- "session_type": "creation",
521
- },
522
- )
523
- await self.create_memory(session_memory)
524
-
525
- logger.info("Session created successfully: %s", session_id)
526
-
527
- await self._record_evolution_event(
528
- "session_created",
529
- session_id=session_id,
530
- user_id=request.user_id,
531
- org_id=self._derive_org_id(request.metadata, context_metadata),
532
- payload={
533
- "project_domain": project_domain_str,
534
- "template_id": request.template_id,
535
- "ttl_hours": request.ttl_hours,
536
- },
537
- metadata={
538
- "context_tags": request.context_tags,
539
- "shadow_reason": "stage0_observation",
540
- },
541
- )
542
- return SessionCreateResponse(
543
- success=True,
544
- session_id=session_id,
545
- user_id=request.user_id,
546
- project_domain=project_domain,
547
- status=SessionStatus.ACTIVE,
548
- created_at=now,
549
- message="Session created successfully",
550
- expires_at=expires_at,
551
- )
552
- msg = "Failed to store session in Redis"
553
- raise SessionError(msg)
554
-
555
- except ValidationError:
556
- raise
557
- except Exception as e:
558
- logger.exception(f"Error creating session: {e}")
559
- raise SessionError(str(e)) from e
560
-
561
- async def get_session(self, session_id: str) -> Session | None:
562
- """Get session data."""
563
- try:
564
- session_data = await self._redis_service.get_session(session_id)
565
- if session_data:
566
- # Normalize minimal required fields for tests/mocks
567
- if "expires_at" not in session_data:
568
- now_norm = datetime.now(UTC)
569
- session_data = {
570
- **session_data,
571
- "created_at": session_data.get("created_at") or now_norm,
572
- "last_accessed": session_data.get("last_accessed") or now_norm,
573
- "expires_at": session_data.get("expires_at")
574
- or now_norm + timedelta(hours=1),
575
- "status": session_data.get("status") or SessionStatus.ACTIVE,
576
- "project_domain": session_data.get("project_domain")
577
- or BusinessDomain.GENERAL,
578
- "preferences": session_data.get("preferences") or MCPUserPreferences(),
579
- "total_operations": session_data.get("total_operations") or 0,
580
- "total_memories": session_data.get("total_memories") or 0,
581
- }
582
- return Session(**session_data)
583
- return None
584
- except Exception as e:
585
- logger.exception("Error getting session {session_id}: %s", e)
586
- return None
587
-
588
- async def update_session(self, request: SessionUpdateRequest) -> bool:
589
- """Update session data."""
590
- try:
591
- if isinstance(request, dict):
592
- updates_payload = request.get("updates")
593
- if not updates_payload:
594
- updates_payload = {
595
- k: v
596
- for k, v in request.items()
597
- if k not in {"session_id", "extend_ttl", "ttl_hours"}
598
- }
599
- request = SessionUpdateRequest(
600
- session_id=request.get("session_id"),
601
- updates=updates_payload,
602
- extend_ttl=request.get("extend_ttl"),
603
- ttl_hours=request.get("ttl_hours"),
604
- )
605
- # Get existing session
606
- existing_session = await self.get_session(request.session_id)
607
- if not existing_session:
608
- return False
609
-
610
- # Update session data
611
- updates = request.updates.copy()
612
- if "last_accessed" not in updates:
613
- updates["last_accessed"] = datetime.now(UTC)
614
-
615
- # Handle TTL extension
616
- new_ttl_seconds = None
617
- if request.extend_ttl:
618
- if request.ttl_hours:
619
- new_ttl_seconds = request.ttl_hours * SECONDS_PER_HOUR
620
- else:
621
- # Default extend by 2 hours (or current session TTL if available)
622
- new_ttl_seconds = TWO_HOURS_SECONDS # Default extension
623
-
624
- # Update in Redis
625
- success = await self._redis_service.update_session(
626
- request.session_id,
627
- updates,
628
- ttl=new_ttl_seconds, # Pass the new TTL to redis_service
629
- )
630
-
631
- if success:
632
- # Trigger cross-invalidation
633
- await self._redis_service.cross_invalidate(request.session_id)
634
- # Invalidate search cache for this session/user/org
635
- with contextlib.suppress(Exception):
636
- await self._redis_service.invalidate_memory_prefix("search:")
637
- logger.info("Session updated successfully: %s", request.session_id)
638
-
639
- return success
640
-
641
- except Exception as e:
642
- logger.exception("Error updating session {request.session_id}: %s", e)
643
- return False
644
-
645
- async def delete_session(self, session_id: str) -> bool:
646
- """Delete a session."""
647
- try:
648
- # Get session data for cleanup
649
- session_data = await self.get_session(session_id)
650
- if session_data:
651
- # Create final memory for session closure
652
- closure_memory = MemoryCreateRequest(
653
- content=f"Session closed for {session_data.user_id}. "
654
- f"Total operations: {session_data.total_operations}, "
655
- f"Total memories: {session_data.total_memories}",
656
- category="session-summary",
657
- importance="medium",
658
- session_id=session_id,
659
- user_id=session_data.user_id,
660
- operation_type="delete",
661
- metadata={
662
- "closure_reason": "user_initiated",
663
- "total_operations": session_data.total_operations,
664
- "total_memories": session_data.total_memories,
665
- },
666
- )
667
- await self.create_memory(closure_memory)
668
-
669
- # Delete from Redis
670
- success = await self._redis_service.delete_session(session_id)
671
-
672
- if success:
673
- logger.info("Session deleted successfully: %s", session_id)
674
- with contextlib.suppress(Exception):
675
- await self._redis_service.cross_invalidate(session_id)
676
- await self._redis_service.invalidate_search_scope(
677
- org_id=self._derive_org_id(getattr(session_data, "context_metadata", None)),
678
- user_id=getattr(session_data, "user_id", None),
679
- session_id=session_id,
680
- )
681
- await self._record_evolution_event(
682
- "session_closed",
683
- session_id=session_id,
684
- user_id=session_data.user_id if session_data else "unknown",
685
- org_id=self._derive_org_id(
686
- getattr(session_data, "context_metadata", None) if session_data else None
687
- ),
688
- payload={
689
- "total_operations": getattr(session_data, "total_operations", None),
690
- "total_memories": getattr(session_data, "total_memories", None),
691
- },
692
- metadata={"shadow_reason": "stage0_observation"},
693
- )
694
-
695
- return success
696
-
697
- except Exception as e:
698
- logger.exception("Error deleting session {session_id}: %s", e)
699
- return False
700
-
701
- async def get_user_sessions(self, user_id: str) -> list[str]:
702
- """Get all session IDs for a user."""
703
- try:
704
- return await self._redis_service.get_user_sessions(user_id)
705
- except Exception as e:
706
- logger.exception("Error getting sessions for user {user_id}: %s", e)
707
- return []
708
-
709
- async def cleanup_expired_sessions(self) -> int:
710
- """Clean up expired sessions."""
711
- try:
712
- return await self._redis_service.cleanup_expired_sessions()
713
- except Exception as e:
714
- logger.exception("Error cleaning up expired sessions: %s", e)
715
- return 0
716
-
717
- # Session Template Methods
718
- def list_session_templates(self) -> list[SessionTemplateMetadata]:
719
- """Return all available session templates."""
720
- return session_template_service.list_templates()
721
-
722
- def get_session_template(self, template_id: str) -> SessionTemplateMetadata:
723
- """Load metadata for a specific session template."""
724
- return session_template_service.get_template(template_id)
725
-
726
- async def instantiate_session_template(
727
- self,
728
- template_id: str,
729
- request: SessionTemplateInstantiateRequest,
730
- ) -> SessionCreateResponse:
731
- """Create a session using a reusable template definition."""
732
- session_request = session_template_service.build_session_request(template_id, request)
733
- return await self.create_session(session_request)
734
-
735
- # Session Backup & Restore
736
- async def backup_session(self, request: SessionBackupRequest) -> SessionBackupResponse:
737
- """Persist a snapshot of a session for later recovery."""
738
- session_data = await self.get_session(request.session_id)
739
- if not session_data:
740
- raise NotFoundError("Session", request.session_id)
741
-
742
- session_payload = session_data.model_dump()
743
- session_payload.setdefault("session_id", request.session_id)
744
-
745
- memories_payload: list[dict[str, Any]] = []
746
- if request.include_memories:
747
- memories = await self._get_session_memories(request.session_id, request.memory_limit)
748
- memories_payload = [mem.model_dump() for mem in memories]
749
-
750
- operations_payload: list[dict[str, Any]] = []
751
- if request.include_operations:
752
- raw_events = await self._fetch_operation_events(request.session_id)
753
- trimmed = raw_events[-request.operation_limit :]
754
- for payload, score in trimmed:
755
- try:
756
- if isinstance(payload, bytes):
757
- payload = payload.decode()
758
- event = json.loads(payload)
759
- except Exception as exc:
760
- logger.debug(
761
- "Skipping corrupt operation event for %s: %s",
762
- request.session_id,
763
- exc,
764
- )
765
- continue
766
-
767
- operations_payload.append(
768
- {
769
- "type": event.get("type", OperationType.CREATE.value),
770
- "status": event.get("status", "success"),
771
- "duration_ms": event.get("duration_ms"),
772
- "metadata": event.get("metadata", {}),
773
- "user_id": event.get("user_id", "system"),
774
- "tool_used": event.get("tool_used", ToolType.READ.value),
775
- "timestamp_ms": score,
776
- "error": event.get("error"),
777
- }
778
- )
779
-
780
- created_at = datetime.now(UTC)
781
- retention_hours = request.retention_hours or DEFAULT_SESSION_BACKUP_TTL_HOURS
782
- ttl_seconds = int(retention_hours * SECONDS_PER_HOUR)
783
- expires_at = created_at + timedelta(seconds=ttl_seconds)
784
- backup_id = f"session-backup-{uuid4().hex}"
785
-
786
- backup_payload = {
787
- "backup_id": backup_id,
788
- "session_id": request.session_id,
789
- "created_at": created_at.isoformat(),
790
- "expires_at": expires_at.isoformat(),
791
- "notes": request.notes,
792
- "include_memories": request.include_memories,
793
- "include_operations": request.include_operations,
794
- "session_data": session_payload,
795
- "memories": memories_payload,
796
- "operations": operations_payload,
797
- }
798
-
799
- serialized_payload = json.dumps(backup_payload, default=str)
800
- size_bytes = len(serialized_payload.encode("utf-8"))
801
-
802
- async with redis_manager.get_redis(REDIS_SESSION_STORE_DB) as conn:
803
- backup_key = f"session:backup:{backup_id}"
804
- await conn.setex(backup_key, ttl_seconds, serialized_payload)
805
-
806
- history_key = f"session:{request.session_id}:backups"
807
- await conn.zadd(history_key, {backup_id: created_at.timestamp()})
808
- await conn.expire(history_key, ttl_seconds)
809
- await conn.zremrangebyrank(history_key, 0, -(MAX_SESSION_BACKUP_HISTORY + 1))
810
-
811
- return SessionBackupResponse(
812
- backup_id=backup_id,
813
- session_id=request.session_id,
814
- created_at=created_at,
815
- expires_at=expires_at,
816
- include_memories=request.include_memories,
817
- include_operations=request.include_operations,
818
- size_bytes=size_bytes,
819
- )
820
-
821
- async def list_session_backups(
822
- self, session_id: str, limit: int = 10
823
- ) -> list[SessionBackupSummary]:
824
- """List session backups sorted by recency."""
825
- history_key = f"session:{session_id}:backups"
826
- async with redis_manager.get_redis(REDIS_SESSION_STORE_DB) as conn:
827
- entries = await conn.zrevrange(history_key, 0, limit - 1, withscores=True)
828
-
829
- summaries: list[SessionBackupSummary] = []
830
- for backup_id, _ in entries or []:
831
- if isinstance(backup_id, bytes):
832
- backup_id = backup_id.decode()
833
- payload = await self._load_session_backup(backup_id)
834
- if not payload:
835
- continue
836
- summaries.append(
837
- SessionBackupSummary(
838
- backup_id=backup_id,
839
- session_id=payload.get("session_id", session_id),
840
- created_at=datetime.fromisoformat(payload["created_at"]),
841
- expires_at=datetime.fromisoformat(payload["expires_at"]),
842
- has_memories=bool(payload.get("memories")),
843
- has_operations=bool(payload.get("operations")),
844
- notes=payload.get("notes"),
845
- )
846
- )
847
-
848
- return summaries
849
-
850
- async def restore_session_from_backup(
851
- self, request: SessionRestoreRequest
852
- ) -> SessionRestoreResponse:
853
- """Restore a session from a stored backup snapshot."""
854
- backup_payload = await self._load_session_backup(request.backup_id)
855
- if not backup_payload:
856
- raise NotFoundError("SessionBackup", request.backup_id)
857
-
858
- session_snapshot = backup_payload["session_data"].copy()
859
- base_session_id = session_snapshot.get("session_id") or "session"
860
-
861
- target_session_id = request.target_session_id or base_session_id
862
- if request.restore_mode == "create" or not target_session_id:
863
- target_session_id = f"{base_session_id}-restore-{uuid4().hex[:8]}"
864
-
865
- session_snapshot["session_id"] = target_session_id
866
- session_snapshot["last_accessed"] = datetime.now(UTC).isoformat()
867
- session_snapshot.setdefault("metadata", {})
868
- session_snapshot["metadata"].update(
869
- {
870
- "restored_from_backup": request.backup_id,
871
- "restored_at": datetime.now(UTC).isoformat(),
872
- }
873
- )
874
-
875
- ttl_hours = request.ttl_hours or (self.config.cache.session_ttl // SECONDS_PER_HOUR)
876
- await self._redis_service.store_session(
877
- target_session_id,
878
- session_snapshot,
879
- ttl=ttl_hours * SECONDS_PER_HOUR,
880
- )
881
-
882
- memories = backup_payload.get("memories", [])
883
- if memories:
884
- memory_ids: list[str] = []
885
- for mem in memories:
886
- mem_id = mem.get("memory_id") or f"{target_session_id}-mem-{uuid4().hex[:6]}"
887
- mem["memory_id"] = mem_id
888
- mem["session_id"] = target_session_id
889
- memory_ids.append(mem_id)
890
- await self._redis_service.set_json(
891
- f"memory:{mem_id}:payload",
892
- mem,
893
- ttl=self.config.cache.memory_ttl,
894
- )
895
-
896
- await self._redis_service.set_list(
897
- f"session:{target_session_id}:memories:ids",
898
- memory_ids,
899
- ttl=self.config.cache.session_ttl,
900
- )
901
-
902
- operations = backup_payload.get("operations", [])
903
- for op in operations:
904
- await self._emit_operation(
905
- session_id=target_session_id,
906
- operation_type=op.get("type", OperationType.CREATE.value),
907
- status=op.get("status", "success"),
908
- duration_ms=int(op.get("duration_ms") or 0),
909
- error=op.get("error"),
910
- metadata=op.get("metadata"),
911
- user_id=op.get("user_id"),
912
- tool_used=op.get("tool_used"),
913
- timestamp_ms=op.get("timestamp_ms"),
914
- )
915
-
916
- message = f"Session restored{' as new session' if request.restore_mode == 'create' else ''}"
917
-
918
- return SessionRestoreResponse(
919
- success=True,
920
- restored_session_id=target_session_id,
921
- backup_id=request.backup_id,
922
- message=message,
923
- )
924
-
925
- async def _load_session_backup(self, backup_id: str) -> dict[str, Any] | None:
926
- """Load a session backup payload from Redis."""
927
- backup_key = f"session:backup:{backup_id}"
928
- async with redis_manager.get_redis(REDIS_SESSION_STORE_DB) as conn:
929
- raw = await conn.get(backup_key)
930
- if not raw:
931
- return None
932
- if isinstance(raw, bytes):
933
- raw = raw.decode()
934
- return json.loads(raw)
935
-
936
- # Session Sharing Methods
937
- async def share_session(
938
- self, session_id: str, request: SessionShareRequest
939
- ) -> SessionShareResponse:
940
- """Share a session with a user or team."""
941
- session_data = await self.get_session(session_id)
942
- if not session_data:
943
- raise NotFoundError("Session", session_id)
944
-
945
- now = datetime.now(UTC)
946
- expires_at = request.expires_at or (now + timedelta(seconds=SESSION_SHARE_TTL_SECONDS))
947
- ttl_seconds = max(60, int((expires_at - now).total_seconds()))
948
-
949
- share_id = f"session-share-{uuid4().hex}"
950
- payload = {
951
- "share_id": share_id,
952
- "session_id": session_id,
953
- "target_user_id": request.target_user_id,
954
- "target_team_id": request.target_team_id,
955
- "access_level": request.access_level.value,
956
- "granted_by": request.granted_by,
957
- "granted_at": now.isoformat(),
958
- "expires_at": expires_at.isoformat(),
959
- "notes": request.notes,
960
- }
961
-
962
- async with redis_manager.get_redis(REDIS_SESSION_STORE_DB) as conn:
963
- await conn.setex(f"session:share:{share_id}", ttl_seconds, json.dumps(payload))
964
- await conn.zadd(
965
- f"session:{session_id}:shares",
966
- {share_id: now.timestamp()},
967
- )
968
-
969
- if request.target_user_id:
970
- await conn.zadd(
971
- f"user:{request.target_user_id}:session_shares",
972
- {share_id: now.timestamp()},
973
- )
974
-
975
- if request.target_team_id:
976
- await conn.zadd(
977
- f"team:{request.target_team_id}:session_shares",
978
- {share_id: now.timestamp()},
979
- )
980
-
981
- return SessionShareResponse(
982
- share_id=share_id,
983
- session_id=session_id,
984
- access_level=request.access_level,
985
- target_user_id=request.target_user_id,
986
- target_team_id=request.target_team_id,
987
- granted_by=request.granted_by,
988
- granted_at=now,
989
- expires_at=expires_at,
990
- notes=request.notes,
991
- )
992
-
993
- async def revoke_session_share(self, session_id: str, share_id: str, revoked_by: str) -> bool:
994
- """Revoke a previously granted session share."""
995
- payload = await self._load_session_share_payload(share_id)
996
- if not payload:
997
- return False
998
-
999
- async with redis_manager.get_redis(REDIS_SESSION_STORE_DB) as conn:
1000
- await conn.delete(f"session:share:{share_id}")
1001
- await conn.zrem(f"session:{session_id}:shares", share_id)
1002
-
1003
- target_user = payload.get("target_user_id")
1004
- target_team = payload.get("target_team_id")
1005
- if target_user:
1006
- await conn.zrem(
1007
- f"user:{target_user}:session_shares",
1008
- share_id,
1009
- )
1010
- if target_team:
1011
- await conn.zrem(
1012
- f"team:{target_team}:session_shares",
1013
- share_id,
1014
- )
1015
-
1016
- logger.info(
1017
- "Session share %s revoked by %s for session %s",
1018
- share_id,
1019
- revoked_by,
1020
- session_id,
1021
- )
1022
- return True
1023
-
1024
- async def list_session_shares(self, session_id: str) -> list[SessionShareResponse]:
1025
- """List shares associated with a session."""
1026
- async with redis_manager.get_redis(REDIS_SESSION_STORE_DB) as conn:
1027
- share_ids = await conn.zrevrange(
1028
- f"session:{session_id}:shares", 0, -1, withscores=False
1029
- )
1030
-
1031
- responses: list[SessionShareResponse] = []
1032
- for share_id in share_ids or []:
1033
- if isinstance(share_id, bytes):
1034
- share_id = share_id.decode()
1035
- payload = await self._load_session_share_payload(share_id)
1036
- if not payload:
1037
- continue
1038
- responses.append(self._map_session_share_payload(payload))
1039
-
1040
- return responses
1041
-
1042
- async def list_shared_sessions(
1043
- self, user_id: str, team_ids: list[str] | None = None
1044
- ) -> list[SessionShareListEntry]:
1045
- """List sessions shared with a user or their teams."""
1046
- team_ids = team_ids or []
1047
- share_ids: dict[str, float] = {}
1048
-
1049
- async with redis_manager.get_redis(REDIS_SESSION_STORE_DB) as conn:
1050
- user_entries = await conn.zrevrange(
1051
- f"user:{user_id}:session_shares", 0, -1, withscores=True
1052
- )
1053
- for share_id, score in user_entries or []:
1054
- if isinstance(share_id, bytes):
1055
- share_id = share_id.decode()
1056
- share_ids[share_id] = score
1057
-
1058
- for team_id in team_ids:
1059
- team_entries = await conn.zrevrange(
1060
- f"team:{team_id}:session_shares", 0, -1, withscores=True
1061
- )
1062
- for share_id, score in team_entries or []:
1063
- if isinstance(share_id, bytes):
1064
- share_id = share_id.decode()
1065
- share_ids.setdefault(share_id, score)
1066
-
1067
- entries: list[SessionShareListEntry] = []
1068
- for share_id in share_ids:
1069
- payload = await self._load_session_share_payload(share_id)
1070
- if not payload:
1071
- continue
1072
- session_id = payload.get("session_id")
1073
- session_obj = await self.get_session(session_id)
1074
- summary = None
1075
- if session_obj:
1076
- summary = session_obj.session_summary or session_obj.session_context
1077
- response = self._map_session_share_payload(payload)
1078
- entries.append(
1079
- SessionShareListEntry(
1080
- **response.model_dump(),
1081
- session_summary=summary,
1082
- )
1083
- )
1084
-
1085
- return entries
1086
-
1087
- async def _load_session_share_payload(self, share_id: str) -> dict[str, Any] | None:
1088
- """Load a session share payload from Redis."""
1089
- async with redis_manager.get_redis(REDIS_SESSION_STORE_DB) as conn:
1090
- raw = await conn.get(f"session:share:{share_id}")
1091
- if not raw:
1092
- return None
1093
- if isinstance(raw, bytes):
1094
- raw = raw.decode()
1095
- return json.loads(raw)
1096
-
1097
- def _map_session_share_payload(self, payload: dict[str, Any]) -> SessionShareResponse:
1098
- """Convert raw share payload to response model."""
1099
- return SessionShareResponse(
1100
- share_id=payload["share_id"],
1101
- session_id=payload["session_id"],
1102
- access_level=SessionShareAccessLevel(payload["access_level"]),
1103
- target_user_id=payload.get("target_user_id"),
1104
- target_team_id=payload.get("target_team_id"),
1105
- granted_by=payload.get("granted_by"),
1106
- granted_at=datetime.fromisoformat(payload["granted_at"]),
1107
- expires_at=datetime.fromisoformat(payload["expires_at"])
1108
- if payload.get("expires_at")
1109
- else None,
1110
- notes=payload.get("notes"),
1111
- )
1112
-
1113
- def _apply_session_enrichment(
1114
- self,
1115
- session_data: Session,
1116
- memories: list[Memory] | None = None,
1117
- operations: list[Operation] | None = None,
1118
- ) -> Session:
1119
- """Apply derived tags, tasks, and risk flags to a session model."""
1120
- tags = set(session_data.context_tags)
1121
- tags.update(self._derive_context_tags(session_data, memories, operations))
1122
-
1123
- session_data.context_tags = sorted(tags)[:20]
1124
- session_data.key_tasks = self._derive_key_tasks(session_data, memories, operations)
1125
- session_data.risk_flags = self._derive_risk_flags(session_data, memories, operations)
1126
-
1127
- enrichment_blob = {
1128
- "context_tags": session_data.context_tags,
1129
- "key_tasks": session_data.key_tasks,
1130
- "risk_flags": session_data.risk_flags,
1131
- }
1132
- session_data.context_metadata.setdefault("enrichment", {}).update(enrichment_blob)
1133
- return session_data
1134
-
1135
- def _derive_context_tags(
1136
- self,
1137
- session_data: Session,
1138
- memories: list[Memory] | None,
1139
- operations: list[Operation] | None,
1140
- ) -> set[str]:
1141
- tags: set[str] = set()
1142
- tags.add(session_data.project_domain.value.lower())
1143
- tags.add(f"env:{session_data.environment.value}")
1144
- if session_data.working_directory:
1145
- parts = [p for p in session_data.working_directory.split("/") if p]
1146
- if parts:
1147
- tags.add(f"dir:{parts[-1].lower()}")
1148
- if session_data.git_branch:
1149
- tags.add(f"branch:{session_data.git_branch}")
1150
- if session_data.git_repository:
1151
- repo = session_data.git_repository.rsplit("/", 1)[-1]
1152
- tags.add(f"repo:{repo.replace('.git', '').lower()}")
1153
-
1154
- metadata_tags = (
1155
- session_data.context_metadata.get("tags")
1156
- if isinstance(session_data.context_metadata, dict)
1157
- else []
1158
- )
1159
- if isinstance(metadata_tags, list):
1160
- tags.update(tag.lower() for tag in metadata_tags)
1161
-
1162
- if memories:
1163
- for mem in memories:
1164
- cat = mem.category.value if hasattr(mem.category, "value") else str(mem.category)
1165
- tags.add(f"category:{cat.lower()}")
1166
- if operations:
1167
- for op in operations:
1168
- tags.add(f"tool:{op.tool_used.value.lower()}")
1169
-
1170
- return tags
1171
-
1172
- def _derive_key_tasks(
1173
- self,
1174
- session_data: Session,
1175
- memories: list[Memory] | None,
1176
- operations: list[Operation] | None,
1177
- ) -> list[str]:
1178
- tasks: list[str] = []
1179
- if session_data.current_task:
1180
- tasks.append(session_data.current_task)
1181
- metadata = session_data.context_metadata or {}
1182
- if isinstance(metadata, dict):
1183
- meta_tasks = metadata.get("current_tasks") or metadata.get("tasks")
1184
- if isinstance(meta_tasks, list):
1185
- tasks.extend(str(t) for t in meta_tasks)
1186
-
1187
- for source in memories or []:
1188
- task = (source.metadata or {}).get("task") if source.metadata else None
1189
- if task:
1190
- tasks.append(str(task))
1191
-
1192
- for op in operations or []:
1193
- task = op.operation_parameters.get("task") if op.operation_parameters else None
1194
- if task:
1195
- tasks.append(str(task))
1196
-
1197
- dedup = []
1198
- seen = set()
1199
- for task in tasks:
1200
- normalized = task.strip()
1201
- if normalized and normalized not in seen:
1202
- dedup.append(normalized)
1203
- seen.add(normalized)
1204
- if len(dedup) >= 5:
1205
- break
1206
- return dedup
1207
-
1208
- def _derive_risk_flags(
1209
- self,
1210
- session_data: Session,
1211
- memories: list[Memory] | None,
1212
- operations: list[Operation] | None,
1213
- ) -> list[str]:
1214
- flags: list[str] = []
1215
- now = datetime.now(UTC)
1216
- if session_data.error_count >= 3:
1217
- flags.append("high-error-volume")
1218
- ttl_remaining = (session_data.expires_at - now).total_seconds()
1219
- if ttl_remaining < 900:
1220
- flags.append("session-expiring-soon")
1221
- if operations:
1222
- failures = sum(1 for op in operations if op.status not in {"success", "ok"})
1223
- if failures:
1224
- flags.append("operation-failures")
1225
- if memories and len(memories) > 80:
1226
- flags.append("memory-sprawl")
1227
- idle_seconds = (now - session_data.last_accessed).total_seconds()
1228
- if idle_seconds > 3600 and (operations is None or len(operations) < 3):
1229
- flags.append("idle-session")
1230
- return flags
1231
-
1232
- # Key-point extraction (agent-powered, structured output)
1233
-
1234
- async def _extract_key_points_structured(
1235
- self, content: str, llm_config: Any | None = None
1236
- ) -> list[dict[str, Any]]:
1237
- """Extract structured key points from memory content.
1238
-
1239
- Uses the extraction agent when agents are enabled; falls back to
1240
- returning the full content as a single key point.
1241
- """
1242
- config = llm_config
1243
- if _AGENTS_IMPORTABLE and config is not None and agents_enabled(config):
1244
- try:
1245
- agent = make_extraction_agent(config)
1246
- result = await agent.run(content)
1247
- extracted: ExtractedKeyPoints = result.output
1248
- return [
1249
- {
1250
- "text": kp.text,
1251
- "importance": kp.importance,
1252
- "category": kp.category,
1253
- }
1254
- for kp in extracted.key_points
1255
- ]
1256
- except Exception as exc:
1257
- logger.debug("Extraction agent failed, returning raw content: %s", exc)
1258
-
1259
- return [{"text": content, "importance": "medium", "category": None}]
1260
-
1261
- # Session Performance Monitoring
1262
- async def get_session_performance_metrics(
1263
- self, session_id: str, timeframe_hours: int = 24
1264
- ) -> SessionPerformanceMetrics:
1265
- cache_key = f"session:perf:{session_id}:{timeframe_hours}"
1266
- cached = await self._redis_service.get_json(cache_key)
1267
- if cached:
1268
- return SessionPerformanceMetrics(**cached)
1269
-
1270
- now = datetime.now(UTC)
1271
- start_ts = (now - timedelta(hours=timeframe_hours)).timestamp() * 1000
1272
- raw_events = await self._fetch_operation_events(session_id)
1273
- durations: list[int] = []
1274
- success_count = 0
1275
- failure_count = 0
1276
- last_ts = None
1277
-
1278
- for payload, score in raw_events:
1279
- if score < start_ts:
1280
- continue
1281
- if isinstance(payload, bytes):
1282
- payload = payload.decode()
1283
- event = json.loads(payload)
1284
- status = event.get("status", "unknown")
1285
- if status in {"success", "ok"}:
1286
- success_count += 1
1287
- else:
1288
- failure_count += 1
1289
- duration = event.get("duration_ms")
1290
- if isinstance(duration, (int, float)):
1291
- durations.append(int(duration))
1292
- last_ts = score
1293
-
1294
- total_ops = success_count + failure_count
1295
- success_rate = success_count / total_ops if total_ops else 0.0
1296
- avg_duration = sum(durations) / len(durations) if durations else 0.0
1297
- p95 = self._calculate_percentile(durations, 95)
1298
- elapsed_minutes = max(1, timeframe_hours * 60)
1299
- throughput = total_ops / elapsed_minutes
1300
- last_operation_at = datetime.fromtimestamp(last_ts / 1000, UTC) if last_ts else None
1301
-
1302
- metrics = SessionPerformanceMetrics(
1303
- session_id=session_id,
1304
- timeframe_hours=timeframe_hours,
1305
- total_operations=total_ops,
1306
- success_count=success_count,
1307
- failure_count=failure_count,
1308
- success_rate=round(success_rate, 3),
1309
- average_duration_ms=round(avg_duration, 2),
1310
- p95_duration_ms=round(p95, 2),
1311
- ops_per_minute=round(throughput, 3),
1312
- last_operation_at=last_operation_at,
1313
- )
1314
-
1315
- await self._redis_service.set_json(
1316
- cache_key,
1317
- metrics.model_dump(mode="json"),
1318
- ttl=self.config.cache.session_ttl,
1319
- )
1320
- return metrics
1321
-
1322
- async def get_session_performance_summary(
1323
- self, timeframe_hours: int = 24
1324
- ) -> SessionPerformanceSummary:
1325
- async with redis_manager.get_redis(REDIS_ANALYTICS_DB) as conn:
1326
- session_ids = await conn.smembers("ops:index")
1327
-
1328
- summaries: list[SessionPerformanceMetrics] = []
1329
- for session_id in session_ids or []:
1330
- if isinstance(session_id, bytes):
1331
- session_id = session_id.decode()
1332
- metrics = await self.get_session_performance_metrics(session_id, timeframe_hours)
1333
- summaries.append(metrics)
1334
-
1335
- sessions_evaluated = len(summaries)
1336
- total_ops = sum(m.total_operations for m in summaries)
1337
- avg_success = (
1338
- sum(m.success_rate for m in summaries) / sessions_evaluated
1339
- if sessions_evaluated
1340
- else 0.0
1341
- )
1342
- p95 = self._calculate_percentile(
1343
- [m.p95_duration_ms for m in summaries if m.p95_duration_ms], 95
1344
- )
1345
- busiest = max(summaries, key=lambda m: m.ops_per_minute, default=None)
1346
-
1347
- return SessionPerformanceSummary(
1348
- timeframe_hours=timeframe_hours,
1349
- sessions_evaluated=sessions_evaluated,
1350
- total_operations=total_ops,
1351
- average_success_rate=round(avg_success, 3),
1352
- p95_duration_ms=round(p95, 2),
1353
- busiest_session_id=busiest.session_id if busiest else None,
1354
- peak_ops_per_minute=busiest.ops_per_minute if busiest else 0.0,
1355
- )
1356
-
1357
- def _calculate_percentile(self, values: list[int], percentile: int) -> float:
1358
- if not values:
1359
- return 0.0
1360
- sorted_values = sorted(values)
1361
- k = (len(sorted_values) - 1) * (percentile / 100)
1362
- f = int(k)
1363
- c = min(f + 1, len(sorted_values) - 1)
1364
- if f == c:
1365
- return float(sorted_values[int(k)])
1366
- d0 = sorted_values[f] * (c - k)
1367
- d1 = sorted_values[c] * (k - f)
1368
- return float(d0 + d1)
1369
-
1370
- # Memory Management Methods
1371
- async def create_memory(self, *args, **kwargs):
1372
- """Delegates to MemoryCRUDService."""
1373
- return await self._get_crud_svc().create_memory(*args, **kwargs)
1374
-
1375
- async def find_by_user_session_category(
1376
- self,
1377
- user_id: str,
1378
- session_id: str,
1379
- category: str,
1380
- ) -> "Memory | None":
1381
- """ADR-59 Phase 199: Return first memory matching (user_id, session_id, category).
1382
-
1383
- Used by the session-persist hook for idempotency checking (OPS-2).
1384
- Prevents the per-session debris pattern: multiple POSTs for the same
1385
- session_id produce only ONE memory record.
1386
-
1387
- Returns the Memory if found, None otherwise.
1388
- """
1389
- query = text(
1390
- """
1391
- SELECT * FROM memories
1392
- WHERE user_id = :user_id
1393
- AND session_id = :session_id
1394
- AND category = :category
1395
- LIMIT 1
1396
- """
1397
- )
1398
- try:
1399
- async with database_service.postgres.engine.connect() as conn:
1400
- result = await conn.execute(
1401
- query,
1402
- {"user_id": user_id, "session_id": session_id, "category": category},
1403
- )
1404
- row = result.mappings().first()
1405
- if not row:
1406
- return None
1407
- return database_service._map_row_to_memory(row)
1408
- except Exception as exc:
1409
- logger.warning("find_by_user_session_category failed: %s", exc)
1410
- return None
1411
-
1412
- async def _enqueue_mem0_push(self, *args, **kwargs):
1413
- """Delegates to MemoryCRUDService."""
1414
- return await self._get_crud_svc()._enqueue_mem0_push(*args, **kwargs)
1415
-
1416
- async def search_memories(
1417
- self, request: MemorySearchRequest, include_internal: bool = False
1418
- ) -> MemorySearchResponse:
1419
- """Search memories."""
1420
- return await self._get_search_svc().search_memories(request, include_internal)
1421
-
1422
- async def cluster_memory_topics(
1423
- self, request: TopicClusteringRequest
1424
- ) -> TopicClusteringResponse:
1425
- """Cluster memories into topic groups using embeddings."""
1426
- return await self._get_search_svc().cluster_memory_topics(request)
1427
-
1428
- # Session Context Methods
1429
- async def get_session_context(self, request: SessionContextRequest) -> SessionContextResponse:
1430
- """Get comprehensive session context."""
1431
- try:
1432
- # Get session data
1433
- session_data = await self.get_session(request.session_id)
1434
- if not session_data:
1435
- raise NotFoundError("Session", request.session_id)
1436
-
1437
- # Get session memories
1438
- memories = []
1439
- if request.include_memories:
1440
- memories = await self._get_session_memories(
1441
- request.session_id, request.memory_limit
1442
- )
1443
-
1444
- # Get session operations
1445
- operations = []
1446
- if request.include_operations:
1447
- operations = await self._get_session_operations(
1448
- request.session_id, request.operation_limit
1449
- )
1450
-
1451
- # Get analytics if requested
1452
- analytics = None
1453
- behavior = None
1454
- if request.include_analytics:
1455
- analytics_raw = await self._get_session_analytics(request.session_id)
1456
- analytics = self._ensure_session_analytics(session_data, analytics_raw)
1457
- behavior = await self.get_session_behavior_metrics(request.session_id)
1458
-
1459
- # Generate suggested actions and patterns
1460
- suggested_actions = self._generate_suggested_actions(session_data, memories, operations)
1461
- patterns = self._detect_session_patterns(session_data, memories, operations)
1462
-
1463
- session_data = self._apply_session_enrichment(session_data, memories, operations)
1464
-
1465
- with contextlib.suppress(Exception):
1466
- await self._redis_service.update_session(
1467
- request.session_id,
1468
- {
1469
- "context_tags": session_data.context_tags,
1470
- "key_tasks": session_data.key_tasks,
1471
- "risk_flags": session_data.risk_flags,
1472
- "context_metadata": session_data.context_metadata,
1473
- },
1474
- )
1475
-
1476
- summary = SessionContextSummary(
1477
- total_memories=session_data.total_memories,
1478
- total_operations=session_data.total_operations,
1479
- )
1480
-
1481
- response = SessionContextResponse(
1482
- session_id=request.session_id,
1483
- session_data=session_data,
1484
- summary=summary,
1485
- memories=memories,
1486
- operations=operations,
1487
- analytics=analytics,
1488
- behavior=behavior,
1489
- suggested_actions=suggested_actions,
1490
- patterns=patterns,
1491
- )
1492
-
1493
- logger.info("Session context retrieved: %s", request.session_id)
1494
- return response
1495
-
1496
- except NotFoundError:
1497
- logger.info("Session context not found: %s", request.session_id)
1498
- raise
1499
- except Exception as e:
1500
- logger.exception(f"Error getting session context for {request.session_id}: {e}")
1501
- raise
1502
-
1503
- async def _get_session_memories(self, session_id: str, limit: int = 20) -> list[Memory]:
1504
- """Get memories for a session with Redis caching + Mem0 fallback."""
1505
- return await self._get_search_svc()._get_session_memories(session_id, limit)
1506
-
1507
- # Test-friendly hook stubs
1508
- async def _calculate_user_analytics(self, _user_id: str | None, _start, _end):
1509
- return {}
1510
-
1511
- async def _calculate_system_analytics(self, _start, _end):
1512
- return {}
1513
-
1514
- async def _analyze_usage_patterns(self, *_args, **_kwargs):
1515
- return {}
1516
-
1517
- async def _generate_session_summary(self, _session_id: str):
1518
- return ""
1519
-
1520
- async def _generate_session_insights(self, _session_id: str):
1521
- return []
1522
-
1523
- async def _calculate_consolidation_metrics(self, _session_id: str):
1524
- return {}
1525
-
1526
- async def _emit_operation(
1527
- self,
1528
- session_id: str,
1529
- operation_type: str,
1530
- status: str,
1531
- duration_ms: int,
1532
- error: str | None = None,
1533
- metadata: dict | None = None,
1534
- user_id: str | None = None,
1535
- tool_used: ToolType | str | None = None,
1536
- timestamp_ms: float | None = None,
1537
- ):
1538
- """Emit operation event to Redis for tracking."""
1539
- try:
1540
- timestamp = (
1541
- timestamp_ms if timestamp_ms is not None else datetime.now(UTC).timestamp() * 1000
1542
- )
1543
-
1544
- if isinstance(tool_used, ToolType):
1545
- resolved_tool = tool_used
1546
- elif isinstance(tool_used, str) and tool_used:
1547
- try:
1548
- resolved_tool = ToolType(tool_used)
1549
- except ValueError:
1550
- resolved_tool = ToolType.WRITE
1551
- else:
1552
- resolved_tool = ToolType.WRITE
1553
-
1554
- event = {
1555
- "type": operation_type,
1556
- "status": status,
1557
- "duration_ms": duration_ms,
1558
- "timestamp": timestamp,
1559
- "error": error,
1560
- "metadata": metadata or {},
1561
- "user_id": user_id or "system",
1562
- "tool_used": resolved_tool.value,
1563
- }
1564
-
1565
- # Store in session-specific sorted set (score = timestamp)
1566
- ops_key = f"ops:{session_id}"
1567
- event_json = json.dumps(event)
1568
-
1569
- # Use Redis analytics DB
1570
- async with redis_manager.get_redis(REDIS_ANALYTICS_DB) as conn:
1571
- await conn.zadd(ops_key, {event_json: timestamp})
1572
- await conn.sadd("ops:index", session_id)
1573
- await conn.expire(ops_key, 86400 * 7) # 7 days
1574
-
1575
- logger.debug(f"Operation emitted: {operation_type} for session {session_id}")
1576
-
1577
- except Exception as e:
1578
- logger.exception(f"Error emitting operation: {e}")
1579
-
1580
- async def _get_session_operations(
1581
- self,
1582
- session_id: str,
1583
- limit: int = 50,
1584
- from_ts: float | None = None,
1585
- to_ts: float | None = None,
1586
- ) -> list[Operation]:
1587
- """Get operations for a session from Redis."""
1588
- try:
1589
- ops_key = f"ops:{session_id}"
1590
-
1591
- # Query sorted set by timestamp range
1592
- min_score = from_ts if from_ts else "-inf"
1593
- max_score = to_ts if to_ts else "+inf"
1594
-
1595
- # Get operations with scores (timestamps)
1596
- async with redis_manager.get_redis(REDIS_ANALYTICS_DB) as conn:
1597
- results = await conn.zrangebyscore(
1598
- ops_key, min_score, max_score, start=0, num=limit, withscores=True
1599
- )
1600
-
1601
- operations = []
1602
- for event_data, score in results:
1603
- try:
1604
- # Decode if bytes
1605
- if isinstance(event_data, bytes):
1606
- event_data = event_data.decode()
1607
-
1608
- event = json.loads(event_data)
1609
- event_timestamp = datetime.fromtimestamp(score / 1000, UTC)
1610
-
1611
- op_type_raw = event.get("type", OperationType.CREATE.value)
1612
- try:
1613
- op_type = OperationType(op_type_raw)
1614
- except ValueError:
1615
- op_type = OperationType.CREATE
1616
-
1617
- tool_raw = event.get("tool_used", ToolType.READ.value)
1618
- try:
1619
- tool_enum = ToolType(tool_raw)
1620
- except ValueError:
1621
- tool_enum = ToolType.READ
1622
-
1623
- operations.append(
1624
- Operation(
1625
- operation_id=f"op_{int(score)}",
1626
- session_id=session_id,
1627
- user_id=event.get("user_id", "system"),
1628
- operation_type=op_type,
1629
- tool_used=tool_enum,
1630
- status=event.get("status", "unknown"),
1631
- duration_ms=int(event.get("duration_ms", 0) or 0),
1632
- error=event.get("error"),
1633
- operation_parameters=event.get("metadata", {}),
1634
- start_time=event_timestamp,
1635
- end_time=event_timestamp,
1636
- )
1637
- )
1638
- except Exception as e:
1639
- logger.warning(f"Failed to parse operation event: {e}")
1640
- continue
1641
-
1642
- logger.info(f"Retrieved {len(operations)} operations for session {session_id}")
1643
- return operations
1644
-
1645
- except Exception as e:
1646
- logger.exception(f"Error retrieving operations for {session_id}: {e}")
1647
- return []
1648
-
1649
- async def _fetch_operation_events(self, session_id: str) -> list[tuple[str | bytes, float]]:
1650
- """Fetch raw operation events for deeper analytics."""
1651
- try:
1652
- ops_key = f"ops:{session_id}"
1653
- async with redis_manager.get_redis(REDIS_ANALYTICS_DB) as conn:
1654
- return await conn.zrange(ops_key, 0, -1, withscores=True)
1655
- except Exception as exc:
1656
- logger.warning("Failed to fetch raw operation events: %s", exc)
1657
- return []
1658
-
1659
- async def get_session_behavior_metrics(
1660
- self,
1661
- session_id: str,
1662
- timeline_limit: int = SESSION_BEHAVIOR_TIMELINE_LIMIT,
1663
- ) -> SessionBehaviorAnalytics:
1664
- """Compute detailed analytics describing session behavior."""
1665
- session_data = await self.get_session(session_id)
1666
- if not session_data:
1667
- raise NotFoundError("Session", session_id)
1668
-
1669
- raw_events = await self._fetch_operation_events(session_id)
1670
- total_operations = len(raw_events)
1671
-
1672
- operations_by_type: Counter[str] = Counter()
1673
- tool_usage: Counter[str] = Counter()
1674
- success_count = 0
1675
- error_count = 0
1676
- durations: list[int] = []
1677
- timeline_buffer: list[SessionBehaviorEvent] = []
1678
- first_event_at: datetime | None = None
1679
- last_event_at: datetime | None = None
1680
-
1681
- for payload, score in raw_events:
1682
- try:
1683
- if isinstance(payload, bytes):
1684
- payload = payload.decode()
1685
- event = json.loads(payload)
1686
- except Exception as exc:
1687
- logger.warning("Failed to parse operation event for %s: %s", session_id, exc)
1688
- continue
1689
-
1690
- timestamp = datetime.fromtimestamp(score / 1000, tz=UTC)
1691
- if not first_event_at:
1692
- first_event_at = timestamp
1693
- last_event_at = timestamp
1694
-
1695
- op_type_raw = event.get("type", OperationType.CREATE.value)
1696
- tool_raw = event.get("tool_used", ToolType.READ.value)
1697
-
1698
- try:
1699
- op_type = OperationType(op_type_raw)
1700
- except ValueError:
1701
- op_type = OperationType.CREATE
1702
-
1703
- try:
1704
- tool_used = ToolType(tool_raw)
1705
- except ValueError:
1706
- tool_used = ToolType.READ
1707
-
1708
- operations_by_type[op_type.value] += 1
1709
- tool_usage[tool_used.value] += 1
1710
-
1711
- status = event.get("status", "unknown")
1712
- if status in {"success", "ok"}:
1713
- success_count += 1
1714
- else:
1715
- error_count += 1
1716
-
1717
- duration_val = event.get("duration_ms")
1718
- normalized_duration = None
1719
- if isinstance(duration_val, (int, float)):
1720
- normalized_duration = int(duration_val)
1721
- durations.append(normalized_duration)
1722
-
1723
- timeline_buffer.append(
1724
- SessionBehaviorEvent(
1725
- timestamp=timestamp,
1726
- operation_type=op_type,
1727
- tool_used=tool_used,
1728
- status=status,
1729
- duration_ms=normalized_duration,
1730
- metadata=event.get("metadata", {}),
1731
- )
1732
- )
1733
-
1734
- # Keep only the most recent timeline events
1735
- if len(timeline_buffer) > timeline_limit:
1736
- timeline_buffer = timeline_buffer[-timeline_limit:]
1737
-
1738
- success_rate = success_count / total_operations if total_operations else 0.0
1739
- avg_duration = sum(durations) / len(durations) if durations else 0.0
1740
-
1741
- session_duration_minutes = max(
1742
- 0.0,
1743
- (session_data.last_accessed - session_data.created_at).total_seconds() / 60,
1744
- )
1745
- active_minutes = (
1746
- max(0.0, (last_event_at - first_event_at).total_seconds() / 60)
1747
- if first_event_at and last_event_at
1748
- else 0.0
1749
- )
1750
- idle_minutes = max(session_duration_minutes - active_minutes, 0.0)
1751
-
1752
- return SessionBehaviorAnalytics(
1753
- session_id=session_id,
1754
- user_id=session_data.user_id,
1755
- template_id=session_data.template_id,
1756
- total_operations=total_operations,
1757
- success_rate=round(success_rate, 3),
1758
- error_count=error_count,
1759
- duration_minutes=round(session_duration_minutes, 2),
1760
- active_minutes=round(active_minutes, 2),
1761
- idle_minutes=round(idle_minutes, 2),
1762
- operations_by_type=dict(operations_by_type),
1763
- tool_usage=dict(tool_usage),
1764
- average_operation_duration_ms=round(avg_duration, 2),
1765
- first_event_at=first_event_at,
1766
- last_event_at=last_event_at,
1767
- recent_activity=timeline_buffer,
1768
- )
1769
-
1770
- def _ensure_session_analytics(
1771
- self, session_data: Session, analytics_obj: Analytics | dict | None
1772
- ) -> Analytics:
1773
- """Normalize analytics payload to a valid Analytics model."""
1774
- end_time = datetime.now(UTC)
1775
- start_time = end_time - timedelta(hours=24)
1776
-
1777
- if isinstance(analytics_obj, Analytics):
1778
- return analytics_obj
1779
-
1780
- if isinstance(analytics_obj, dict):
1781
- try:
1782
- return Analytics(**analytics_obj)
1783
- except Exception:
1784
- logger.debug("Analytics dict conversion failed; using defaults", exc_info=True)
1785
-
1786
- total_memories = getattr(session_data, "total_memories", 0) or 0
1787
- total_operations = getattr(session_data, "total_operations", 0) or 0
1788
-
1789
- return Analytics(
1790
- analytics_id=f"session_{session_data.session_id}",
1791
- user_id=getattr(session_data, "user_id", None),
1792
- timeframe_start=start_time,
1793
- timeframe_end=end_time,
1794
- total_sessions=1,
1795
- active_sessions=1,
1796
- total_memories=total_memories,
1797
- total_operations=total_operations,
1798
- )
1799
-
1800
- async def _get_session_analytics(self, session_id: str) -> Analytics:
1801
- """Get analytics for a session from real Redis data."""
1802
- try:
1803
- # Get timeframe (last 24 hours)
1804
- end_time = datetime.now(UTC)
1805
- start_time = end_time - timedelta(hours=24)
1806
-
1807
- # Get session data
1808
- session_data = await self.get_session(session_id)
1809
- if not session_data:
1810
- # Return empty analytics if session not found
1811
- return Analytics(
1812
- analytics_id=f"session_{session_id}",
1813
- user_id=None,
1814
- timeframe_start=start_time,
1815
- timeframe_end=end_time,
1816
- total_sessions=0,
1817
- active_sessions=0,
1818
- total_memories=0,
1819
- total_operations=0,
1820
- )
1821
-
1822
- # Count memories for this session from Redis
1823
- total_memories = 0
1824
- try:
1825
- cache_key = f"session:{session_id}:memories:ids"
1826
- cached_ids = await self._redis_service.get_list(cache_key)
1827
- total_memories = len(cached_ids) if cached_ids else 0
1828
- except Exception as e:
1829
- logger.warning(f"Error counting memories for session {session_id}: {e}")
1830
-
1831
- # Count operations for this session from Redis
1832
- total_operations = 0
1833
- try:
1834
- start_ts = start_time.timestamp() * 1000
1835
- end_ts = end_time.timestamp() * 1000
1836
- ops_key = f"ops:{session_id}"
1837
-
1838
- async with redis_manager.get_redis(REDIS_ANALYTICS_DB) as conn:
1839
- total_operations = await conn.zcount(ops_key, start_ts, end_ts)
1840
- except Exception as e:
1841
- logger.warning(f"Error counting operations for session {session_id}: {e}")
1842
-
1843
- return Analytics(
1844
- analytics_id=f"session_{session_id}",
1845
- user_id=session_data.user_id,
1846
- timeframe_start=start_time,
1847
- timeframe_end=end_time,
1848
- total_sessions=1,
1849
- active_sessions=1,
1850
- total_memories=total_memories,
1851
- total_operations=total_operations,
1852
- )
1853
- except Exception as e:
1854
- logger.exception(f"Error getting session analytics: {e}")
1855
- # Return minimal analytics on error
1856
- return Analytics(
1857
- analytics_id=f"session_{session_id}",
1858
- user_id=None,
1859
- timeframe_start=datetime.now(UTC),
1860
- timeframe_end=datetime.now(UTC),
1861
- total_sessions=0,
1862
- active_sessions=0,
1863
- total_memories=0,
1864
- total_operations=0,
1865
- )
1866
-
1867
- def _generate_suggested_actions(
1868
- self,
1869
- session_data: Session,
1870
- memories: list[Memory],
1871
- _operations: list[Operation],
1872
- ) -> list[str]:
1873
- """Generate AI-suggested actions based on session data."""
1874
- actions = []
1875
-
1876
- # Based on session patterns
1877
- if session_data.total_operations > HIGH_OPERATION_COUNT:
1878
- actions.append("Consider consolidating this session to improve performance")
1879
-
1880
- if session_data.total_memories > 20:
1881
- actions.append("Review and organize memories for better retrieval")
1882
-
1883
- # Based on project domain
1884
- if session_data.project_domain == BusinessDomain.LENDING:
1885
- if "loan" not in str(memories).lower():
1886
- actions.append("Consider documenting loan-related decisions")
1887
- if session_data.project_domain == BusinessDomain.INSURANCE and "policy" not in str(memories).lower():
1888
- actions.append("Document insurance policy decisions and claims")
1889
-
1890
- return actions
1891
-
1892
- def _detect_session_patterns(
1893
- self,
1894
- session_data: Session,
1895
- memories: list[Memory],
1896
- _operations: list[Operation],
1897
- ) -> list[str]:
1898
- """Detect patterns in session usage."""
1899
- patterns = []
1900
-
1901
- # Time-based patterns
1902
- duration = datetime.now(UTC) - session_data.created_at
1903
- if duration.total_seconds() > SECONDS_PER_HOUR: # More than 1 hour
1904
- patterns.append("Long-running session")
1905
-
1906
- # Activity patterns
1907
- if session_data.total_operations > HIGH_ACTIVITY_COUNT:
1908
- patterns.append("High activity session")
1909
-
1910
- # Memory patterns
1911
- if memories:
1912
- categories = [
1913
- mem.category.value if hasattr(mem.category, "value") else str(mem.category)
1914
- for mem in memories
1915
- ]
1916
- if len(set(categories)) > MULTI_CATEGORY_THRESHOLD:
1917
- patterns.append("Multi-category exploration")
1918
-
1919
- return patterns
1920
-
1921
- # Session Consolidation Methods
1922
- async def consolidate_session(
1923
- self, request: SessionConsolidationRequest
1924
- ) -> ConsolidationResponse:
1925
- """Consolidate session memories."""
1926
- try:
1927
- start_time = datetime.now(UTC)
1928
- consolidation_id = (
1929
- f"consolidation-{request.session_id}-{int(time.time() * MS_PER_SECOND)}"
1930
- )
1931
- consolidation_type = getattr(request, "consolidation_type", None) or getattr(
1932
- request, "consolidation_strategy", "auto"
1933
- )
1934
- include_insights = getattr(
1935
- request, "include_insights", getattr(request, "generate_insights", True)
1936
- )
1937
-
1938
- # Get session data and memories
1939
- session_data = await self.get_session(request.session_id)
1940
- if not session_data:
1941
- session_data = Session(
1942
- session_id=request.session_id,
1943
- user_id=request.user_id or "unknown",
1944
- project_domain=BusinessDomain.GENERAL,
1945
- status=SessionStatus.ACTIVE,
1946
- )
1947
-
1948
- memories = await self._get_session_memories(request.session_id, 100) # Get all memories
1949
-
1950
- # Generate session summary (prefer injectable helper for tests)
1951
- session_summary = await self._generate_session_summary(request.session_id)
1952
- if not session_summary:
1953
- memory_contents = [mem.content for mem in memories]
1954
- session_summary = DataModelTransformer.create_session_summary_from_session(
1955
- session_data, len(memories), memory_contents
1956
- )
1957
-
1958
- metrics = await self._calculate_consolidation_metrics(request.session_id)
1959
-
1960
- # Create consolidation memory
1961
- consolidation_memory = MemoryCreateRequest(
1962
- content=session_summary,
1963
- category="session-summary",
1964
- importance="high",
1965
- session_id=request.session_id,
1966
- user_id=request.user_id,
1967
- operation_type="execute",
1968
- metadata={
1969
- "consolidation_type": consolidation_type,
1970
- "total_memories": len(memories),
1971
- "total_operations": session_data.total_operations,
1972
- "consolidation_timestamp": datetime.now(UTC).isoformat(),
1973
- },
1974
- )
1975
-
1976
- # Create the consolidation memory
1977
- memory_id = await self.create_memory(consolidation_memory)
1978
-
1979
- # Generate insights if requested
1980
- insights = []
1981
- if include_insights:
1982
- # Prefer testable stubbed insights generator
1983
- insights = await self._generate_session_insights(request.session_id)
1984
- if not insights:
1985
- insights = self._generate_consolidation_insights(session_data, memories)
1986
-
1987
- processing_time = int((datetime.now(UTC) - start_time).total_seconds() * MS_PER_SECOND)
1988
-
1989
- # Update session status
1990
- await self.update_session(
1991
- SessionUpdateRequest(
1992
- session_id=request.session_id,
1993
- updates={
1994
- "session_summary": session_summary,
1995
- "last_accessed": datetime.now(UTC),
1996
- },
1997
- )
1998
- )
1999
-
2000
- logger.info(f"Session consolidated: {request.session_id} ({len(memories)} memories)")
2001
-
2002
- await self._record_evolution_event(
2003
- "session_consolidated",
2004
- session_id=request.session_id,
2005
- user_id=request.user_id,
2006
- org_id=self._derive_org_id(session_data.context_metadata),
2007
- memory_id=memory_id,
2008
- importance="high",
2009
- storage_tier=None,
2010
- payload={
2011
- "total_memories": len(memories),
2012
- "generate_insights": include_insights,
2013
- "consolidation_type": consolidation_type,
2014
- },
2015
- metadata={
2016
- "shadow_reason": "stage0_observation",
2017
- "processing_time_ms": processing_time,
2018
- },
2019
- )
2020
-
2021
- return ConsolidationResponse(
2022
- success=True,
2023
- session_id=request.session_id,
2024
- consolidation_id=consolidation_id,
2025
- consolidated_memory_id=memory_id,
2026
- summary=session_summary,
2027
- insights=insights,
2028
- metrics=metrics or {},
2029
- processing_time_ms=processing_time,
2030
- )
2031
-
2032
- except Exception as e:
2033
- logger.exception("Error consolidating session {request.session_id}: %s", e)
2034
- return ConsolidationResponse(
2035
- success=False,
2036
- session_id=request.session_id,
2037
- consolidation_id=consolidation_id,
2038
- consolidated_memory_id=None,
2039
- summary=f"Failed to consolidate session: {e!s}",
2040
- insights=[],
2041
- metrics={},
2042
- processing_time_ms=0,
2043
- )
2044
-
2045
- def _generate_consolidation_insights(
2046
- self, session_data: Session, memories: list[Memory]
2047
- ) -> list[str]:
2048
- """Generate insights from session consolidation."""
2049
- insights = []
2050
-
2051
- # Session duration insight
2052
- duration = datetime.now(UTC) - session_data.created_at
2053
- if duration.total_seconds() > TWO_HOURS_SECONDS: # More than 2 hours
2054
- insights.append(
2055
- "Session duration indicates high engagement - consider breaking into focused sessions"
2056
- )
2057
-
2058
- # Memory count insight
2059
- if len(memories) > HIGH_MEMORY_COUNT:
2060
- insights.append(
2061
- f"High memory volume ({len(memories)} memories) - consider periodic summarization"
2062
- )
2063
- elif len(memories) < LOW_MEMORY_COUNT:
2064
- insights.append("Low memory count - consider documenting more decisions and context")
2065
-
2066
- # Category distribution insight
2067
- if memories:
2068
- categories = [
2069
- mem.category.value if hasattr(mem.category, "value") else str(mem.category)
2070
- for mem in memories
2071
- ]
2072
- unique_categories = len(set(categories))
2073
- if unique_categories == 1:
2074
- insights.append(f"Focused session on {categories[0]} - good for specialized work")
2075
- elif unique_categories > DIVERSE_CATEGORY_THRESHOLD:
2076
- insights.append(
2077
- "Diverse session covering multiple areas - consider organizing by project"
2078
- )
2079
-
2080
- return insights
2081
-
2082
- # Team Collaboration Methods
2083
-
2084
- async def share_memory_with_team(self, request: TeamMemoryShare) -> bool:
2085
- """Share a memory with a team."""
2086
- try:
2087
- # Verify memory exists and user has permission to share
2088
- memory_data = await self._get_memory_by_id(request.memory_id, request.shared_by)
2089
- if not memory_data:
2090
- logger.error(f"Memory {request.memory_id} not found or access denied")
2091
- return False
2092
-
2093
- # Store team share information in Redis
2094
- share_key = f"team_share:{request.team_id}:{request.memory_id}"
2095
- share_data = {
2096
- "memory_id": request.memory_id,
2097
- "team_id": request.team_id,
2098
- "access_level": request.access_level.value
2099
- if hasattr(request.access_level, "value")
2100
- else str(request.access_level),
2101
- "shared_by": request.shared_by,
2102
- "shared_at": request.shared_at.isoformat(),
2103
- "expires_at": request.expires_at.isoformat() if request.expires_at else None,
2104
- "permissions": request.permissions,
2105
- }
2106
-
2107
- # Set with expiration if provided
2108
- ttl = None
2109
- if request.expires_at:
2110
- ttl = int((request.expires_at - datetime.now(UTC)).total_seconds())
2111
-
2112
- await self._redis_service.set_json(share_key, share_data, ttl=ttl)
2113
-
2114
- # Add to team's memory index
2115
- team_memories_key = f"team:{request.team_id}:shared_memories"
2116
- existing_memories = await self._redis_service.get_list(team_memories_key)
2117
- if request.memory_id not in existing_memories:
2118
- existing_memories.append(request.memory_id)
2119
- await self._redis_service.set_list(team_memories_key, existing_memories, ttl=ttl)
2120
-
2121
- logger.info(f"Memory {request.memory_id} shared with team {request.team_id}")
2122
- return True
2123
-
2124
- except Exception as e:
2125
- logger.exception(
2126
- f"Error sharing memory {request.memory_id} with team {request.team_id}: {e}"
2127
- )
2128
- return False
2129
-
2130
- async def get_team_memories(self, team_id: str, user_id: str, limit: int = 50) -> list[Memory]:
2131
- """Get shared memories for a team."""
2132
- try:
2133
- # Get team's shared memory list
2134
- team_memories_key = f"team:{team_id}:shared_memories"
2135
- memory_ids = await self._redis_service.get_list(team_memories_key)
2136
-
2137
- memories = []
2138
- for memory_id in memory_ids[:limit]:
2139
- # Check share permissions
2140
- share_key = f"team_share:{team_id}:{memory_id}"
2141
- share_data = await self._redis_service.get_json(share_key)
2142
-
2143
- if share_data:
2144
- # Get memory data
2145
- memory_data = await self._get_memory_by_id(memory_id, user_id)
2146
- if memory_data:
2147
- # Add team context to memory
2148
- memory_data.team_id = team_id
2149
- memories.append(memory_data)
2150
-
2151
- return memories
2152
-
2153
- except Exception as e:
2154
- logger.exception(f"Error getting team memories for {team_id}: {e}")
2155
- return []
2156
-
2157
- async def generate_team_insights(self, request: TeamInsightRequest) -> TeamInsightResponse:
2158
- """Generate AI-powered insights for a team."""
2159
- try:
2160
- start_time = datetime.now(UTC)
2161
-
2162
- # Get team memories for analysis
2163
- team_memories = await self.get_team_memories(
2164
- request.team_id, request.user_id, limit=200
2165
- )
2166
-
2167
- if not team_memories:
2168
- return TeamInsightResponse(
2169
- team_id=request.team_id,
2170
- insights={},
2171
- summary="No team memories found for analysis",
2172
- recommendations=["Start sharing memories with the team to enable insights"],
2173
- collaboration_metrics={},
2174
- knowledge_gaps=[],
2175
- top_contributors=[],
2176
- processing_time_ms=int((datetime.now(UTC) - start_time).total_seconds() * 1000),
2177
- )
2178
-
2179
- # Analyze patterns and generate insights
2180
- insights = {}
2181
-
2182
- # Pattern analysis
2183
- if "patterns" in request.insight_types:
2184
- insights["patterns"] = self._analyze_team_patterns(team_memories)
2185
-
2186
- # Knowledge gaps analysis
2187
- if "knowledge_gaps" in request.insight_types:
2188
- insights["knowledge_gaps"] = self._identify_knowledge_gaps(team_memories)
2189
-
2190
- # Collaboration analysis
2191
- if "collaboration" in request.insight_types:
2192
- insights["collaboration"] = self._analyze_collaboration_patterns(team_memories)
2193
-
2194
- # Generate summary and recommendations
2195
- summary = self._generate_team_insight_summary(insights, team_memories)
2196
- recommendations = self._generate_team_recommendations(insights)
2197
-
2198
- # Calculate metrics
2199
- collaboration_metrics = self._calculate_collaboration_metrics(team_memories)
2200
- knowledge_gaps = insights.get("knowledge_gaps", [])
2201
- top_contributors = self._identify_top_contributors(team_memories)
2202
-
2203
- processing_time_ms = int((datetime.now(UTC) - start_time).total_seconds() * 1000)
2204
-
2205
- return TeamInsightResponse(
2206
- team_id=request.team_id,
2207
- insights=insights,
2208
- summary=summary,
2209
- recommendations=recommendations,
2210
- collaboration_metrics=collaboration_metrics,
2211
- knowledge_gaps=knowledge_gaps,
2212
- top_contributors=top_contributors,
2213
- processing_time_ms=processing_time_ms,
2214
- )
2215
-
2216
- except Exception as e:
2217
- logger.exception(f"Error generating team insights for {request.team_id}: {e}")
2218
- return TeamInsightResponse(
2219
- team_id=request.team_id,
2220
- insights={},
2221
- summary=f"Error generating insights: {str(e)}",
2222
- recommendations=["Please try again later"],
2223
- collaboration_metrics={},
2224
- knowledge_gaps=[],
2225
- top_contributors=[],
2226
- processing_time_ms=0,
2227
- )
2228
-
2229
- async def synthesize_team_memories(
2230
- self, request: TeamMemorySynthesisRequest
2231
- ) -> TeamMemorySynthesisResponse:
2232
- """Synthesize team memories into comprehensive insights."""
2233
- try:
2234
- start_time = datetime.now(UTC)
2235
-
2236
- # Get relevant memories
2237
- team_memories = await self.get_team_memories(
2238
- request.team_id, request.user_id, limit=request.max_memories
2239
- )
2240
-
2241
- if not team_memories:
2242
- return TeamMemorySynthesisResponse(
2243
- team_id=request.team_id,
2244
- synthesis_type=request.synthesis_type,
2245
- synthesis="No memories available for synthesis",
2246
- key_points=[],
2247
- action_items=[],
2248
- related_memories=[],
2249
- confidence_score=0.0,
2250
- contributors=[],
2251
- processing_time_ms=int((datetime.now(UTC) - start_time).total_seconds() * 1000),
2252
- )
2253
-
2254
- # Prepare memory content for synthesis
2255
- memory_contents = [mem.content for mem in team_memories]
2256
- contributors = list({mem.user_id for mem in team_memories if mem.user_id})
2257
-
2258
- # Perform synthesis based on type
2259
- if request.synthesis_type == "summary":
2260
- synthesis = self._create_memory_summary(memory_contents, team_memories)
2261
- key_points = self._extract_key_points(memory_contents)
2262
- elif request.synthesis_type == "analysis":
2263
- synthesis = self._analyze_memory_patterns(memory_contents, team_memories)
2264
- key_points = self._extract_analytical_points(team_memories)
2265
- else: # insights
2266
- synthesis = self._generate_insights_synthesis(memory_contents, team_memories)
2267
- key_points = self._extract_insight_points(team_memories)
2268
-
2269
- # Generate action items
2270
- action_items = self._generate_action_items(synthesis, team_memories)
2271
-
2272
- # Get related memory IDs
2273
- related_memories = [mem.memory_id for mem in team_memories[:10]]
2274
-
2275
- # Calculate confidence score
2276
- confidence_score = self._calculate_synthesis_confidence(memory_contents, team_memories)
2277
-
2278
- processing_time_ms = int((datetime.now(UTC) - start_time).total_seconds() * 1000)
2279
-
2280
- return TeamMemorySynthesisResponse(
2281
- team_id=request.team_id,
2282
- synthesis_type=request.synthesis_type,
2283
- synthesis=synthesis,
2284
- key_points=key_points,
2285
- action_items=action_items,
2286
- related_memories=related_memories,
2287
- confidence_score=confidence_score,
2288
- contributors=contributors,
2289
- processing_time_ms=processing_time_ms,
2290
- )
2291
-
2292
- except Exception as e:
2293
- logger.exception(f"Error synthesizing team memories for {request.team_id}: {e}")
2294
- return TeamMemorySynthesisResponse(
2295
- team_id=request.team_id,
2296
- synthesis_type=request.synthesis_type,
2297
- synthesis=f"Error during synthesis: {str(e)}",
2298
- key_points=[],
2299
- action_items=[],
2300
- related_memories=[],
2301
- confidence_score=0.0,
2302
- contributors=[],
2303
- processing_time_ms=int((datetime.now(UTC) - start_time).total_seconds() * 1000),
2304
- )
2305
-
2306
- # Helper methods for team collaboration
2307
- async def _get_memory_by_id(self, memory_id: str, user_id: str) -> Memory | None:
2308
- """Delegates to MemorySearchService."""
2309
- return await self._get_search_svc()._get_memory_by_id(memory_id, user_id)
2310
-
2311
- def _analyze_team_patterns(self, memories: list[Memory]) -> dict[str, Any]:
2312
- """Analyze patterns in team memories."""
2313
- categories = {}
2314
- users = {}
2315
- time_patterns = {}
2316
-
2317
- for mem in memories:
2318
- # Category distribution
2319
- cat = mem.category.value if hasattr(mem.category, "value") else str(mem.category)
2320
- categories[cat] = categories.get(cat, 0) + 1
2321
-
2322
- # User contributions
2323
- if mem.user_id:
2324
- users[mem.user_id] = users.get(mem.user_id, 0) + 1
2325
-
2326
- # Time patterns
2327
- if mem.created_at:
2328
- hour = mem.created_at.hour
2329
- time_patterns[hour] = time_patterns.get(hour, 0) + 1
2330
-
2331
- return {
2332
- "category_distribution": categories,
2333
- "user_contributions": users,
2334
- "activity_patterns": time_patterns,
2335
- "total_memories": len(memories),
2336
- }
2337
-
2338
- def _identify_knowledge_gaps(self, memories: list[Memory]) -> list[str]:
2339
- """Identify knowledge gaps based on team memories."""
2340
- # Simple heuristic: look for underrepresented categories
2341
- categories = set()
2342
- for mem in memories:
2343
- cat = mem.category.value if hasattr(mem.category, "value") else str(mem.category)
2344
- categories.add(cat)
2345
-
2346
- all_categories = {
2347
- "technical",
2348
- "business",
2349
- "process",
2350
- "decision",
2351
- "learning",
2352
- "general",
2353
- }
2354
- missing_categories = all_categories - categories
2355
-
2356
- gaps = []
2357
- if missing_categories:
2358
- gaps.extend(
2359
- [
2360
- f"Consider documenting more {cat}-related information"
2361
- for cat in missing_categories
2362
- ]
2363
- )
2364
-
2365
- # Look for low activity areas
2366
- if len(memories) < 10:
2367
- gaps.append("Team knowledge base is still developing - encourage more documentation")
2368
-
2369
- return gaps
2370
-
2371
- def _analyze_collaboration_patterns(self, memories: list[Memory]) -> dict[str, Any]:
2372
- """Analyze collaboration patterns."""
2373
- user_interactions = {}
2374
- shared_memories = 0
2375
-
2376
- for mem in memories:
2377
- if mem.team_id:
2378
- shared_memories += 1
2379
-
2380
- if mem.user_id:
2381
- user_interactions[mem.user_id] = user_interactions.get(mem.user_id, 0) + 1
2382
-
2383
- return {
2384
- "shared_memory_ratio": shared_memories / len(memories) if memories else 0,
2385
- "active_contributors": len(user_interactions),
2386
- "total_interactions": sum(user_interactions.values()),
2387
- "collaboration_score": min(1.0, shared_memories / max(1, len(memories))),
2388
- }
2389
-
2390
- def _generate_team_insight_summary(
2391
- self, insights: dict[str, Any], memories: list[Memory]
2392
- ) -> str:
2393
- """Generate executive summary of team insights."""
2394
- total_memories = len(memories)
2395
- active_contributors = insights.get("collaboration", {}).get("active_contributors", 0)
2396
- collaboration_score = insights.get("collaboration", {}).get("collaboration_score", 0)
2397
-
2398
- summary = f"Team has {total_memories} shared memories with {active_contributors} active contributors. "
2399
-
2400
- if collaboration_score > 0.7:
2401
- summary += "Strong collaboration patterns detected. "
2402
- elif collaboration_score > 0.4:
2403
- summary += "Moderate collaboration levels. "
2404
- else:
2405
- summary += "Limited collaboration - encourage more knowledge sharing. "
2406
-
2407
- top_category = max(
2408
- insights.get("patterns", {}).get("category_distribution", {}).items(),
2409
- key=lambda x: x[1],
2410
- default=(None, 0),
2411
- )[0]
2412
- if top_category:
2413
- summary += f"Primary focus area: {top_category}."
2414
-
2415
- return summary
2416
-
2417
- def _generate_team_recommendations(self, insights: dict[str, Any]) -> list[str]:
2418
- """Generate actionable recommendations for the team."""
2419
- recommendations = []
2420
-
2421
- collaboration = insights.get("collaboration", {})
2422
- if collaboration.get("collaboration_score", 0) < 0.5:
2423
- recommendations.append(
2424
- "Increase knowledge sharing by documenting more team decisions and processes"
2425
- )
2426
-
2427
- patterns = insights.get("patterns", {})
2428
- user_contributions = patterns.get("user_contributions", {})
2429
- if len(user_contributions) < 3:
2430
- recommendations.append(
2431
- "Encourage more team members to contribute to the knowledge base"
2432
- )
2433
-
2434
- knowledge_gaps = insights.get("knowledge_gaps", [])
2435
- if knowledge_gaps:
2436
- recommendations.extend(knowledge_gaps[:2])
2437
-
2438
- return recommendations[:5] # Limit to 5 recommendations
2439
-
2440
- def _calculate_collaboration_metrics(self, memories: list[Memory]) -> dict[str, float]:
2441
- """Calculate collaboration metrics."""
2442
- shared_memories = sum(1 for mem in memories if mem.team_id)
2443
- unique_users = len({mem.user_id for mem in memories if mem.user_id})
2444
-
2445
- return {
2446
- "sharing_ratio": shared_memories / len(memories) if memories else 0,
2447
- "diversity_score": min(1.0, unique_users / max(1, len(memories))),
2448
- "engagement_level": unique_users / max(1, len(memories)),
2449
- }
2450
-
2451
- def _identify_top_contributors(self, memories: list[Memory]) -> list[dict[str, Any]]:
2452
- """Identify top contributors to team knowledge."""
2453
- user_counts = {}
2454
- for mem in memories:
2455
- if mem.user_id:
2456
- user_counts[mem.user_id] = user_counts.get(mem.user_id, 0) + 1
2457
-
2458
- # Sort by contribution count
2459
- sorted_contributors = sorted(user_counts.items(), key=lambda x: x[1], reverse=True)
2460
-
2461
- return [
2462
- {"user_id": user_id, "contributions": count}
2463
- for user_id, count in sorted_contributors[:5]
2464
- ]
2465
-
2466
- def _create_memory_summary(self, contents: list[str], _memories: list[Memory]) -> str:
2467
- """Create a summary of memory contents."""
2468
- if not contents:
2469
- return "No memories to summarize."
2470
-
2471
- # Simple concatenation for now - can be enhanced with AI summarization
2472
- summary_parts = []
2473
- for _i, content in enumerate(contents[:5]): # Limit to first 5
2474
- summary_parts.append(f"• {content[:100]}..." if len(content) > 100 else f"• {content}")
2475
-
2476
- return "Key team memories:\n" + "\n".join(summary_parts)
2477
-
2478
- def _extract_key_points(self, contents: list[str]) -> list[str]:
2479
- """Extract key points from memory contents."""
2480
- key_points = []
2481
- for content in contents[:10]:
2482
- # Simple heuristic: look for sentences with keywords
2483
- sentences = content.split(".")
2484
- for sentence in sentences[:2]: # First 2 sentences per content
2485
- sentence = sentence.strip()
2486
- if len(sentence) > 20 and any(
2487
- keyword in sentence.lower()
2488
- for keyword in ["decision", "important", "key", "critical", "note"]
2489
- ):
2490
- key_points.append(sentence)
2491
-
2492
- return key_points[:10] # Limit to 10 key points
2493
-
2494
- def _analyze_memory_patterns(self, _contents: list[str], memories: list[Memory]) -> str:
2495
- """Analyze patterns in memory contents."""
2496
- analysis = []
2497
-
2498
- # Category analysis
2499
- categories = {}
2500
- for mem in memories:
2501
- cat = mem.category.value if hasattr(mem.category, "value") else str(mem.category)
2502
- categories[cat] = categories.get(cat, 0) + 1
2503
-
2504
- if categories:
2505
- top_category = max(categories.items(), key=lambda x: x[1])
2506
- analysis.append(f"Primary focus: {top_category[0]} ({top_category[1]} memories)")
2507
-
2508
- # Time-based analysis
2509
- if memories:
2510
- recent_memories = sum(
2511
- 1
2512
- for mem in memories
2513
- if mem.created_at and (datetime.now(UTC) - mem.created_at).days < 7
2514
- )
2515
- analysis.append(f"Recent activity: {recent_memories} memories in the last week")
2516
-
2517
- return "\n".join(analysis) if analysis else "No significant patterns detected."
2518
-
2519
- def _extract_analytical_points(self, memories: list[Memory]) -> list[str]:
2520
- """Extract analytical points from memories."""
2521
- points = []
2522
-
2523
- # Look for high-importance memories
2524
- high_importance = [
2525
- mem
2526
- for mem in memories
2527
- if hasattr(mem, "importance") and str(mem.importance).lower() in ["high", "critical"]
2528
- ]
2529
-
2530
- if high_importance:
2531
- points.append(f"{len(high_importance)} high-priority items identified")
2532
-
2533
- # Look for recurring themes
2534
- contents = [mem.content.lower() for mem in memories]
2535
- common_words = {}
2536
- for content in contents:
2537
- words = content.split()
2538
- for word in words:
2539
- if len(word) > 5: # Focus on meaningful words
2540
- common_words[word] = common_words.get(word, 0) + 1
2541
-
2542
- top_words = sorted(common_words.items(), key=lambda x: x[1], reverse=True)[:3]
2543
- if top_words:
2544
- points.append(f"Key themes: {', '.join([word for word, _ in top_words])}")
2545
-
2546
- return points
2547
-
2548
- def _generate_insights_synthesis(self, _contents: list[str], memories: list[Memory]) -> str:
2549
- """Generate insights synthesis."""
2550
- insights = []
2551
-
2552
- # Team knowledge synthesis
2553
- total_contributors = len({mem.user_id for mem in memories if mem.user_id})
2554
- insights.append(f"Team knowledge built from {total_contributors} contributors")
2555
-
2556
- # Knowledge scope analysis
2557
- categories = set()
2558
- for mem in memories:
2559
- cat = mem.category.value if hasattr(mem.category, "value") else str(mem.category)
2560
- categories.add(cat)
2561
-
2562
- insights.append(
2563
- f"Knowledge spans {len(categories)} categories: {', '.join(list(categories)[:3])}"
2564
- )
2565
-
2566
- # Activity level
2567
- if memories:
2568
- time_span = max(mem.created_at for mem in memories if mem.created_at) - min(
2569
- mem.created_at for mem in memories if mem.created_at
2570
- )
2571
- insights.append(f"Knowledge accumulated over {time_span.days} days")
2572
-
2573
- return "\n".join(insights)
2574
-
2575
- def _extract_insight_points(self, memories: list[Memory]) -> list[str]:
2576
- """Extract insight points from memories."""
2577
- points = []
2578
-
2579
- # Collaboration insights
2580
- team_memories = sum(1 for mem in memories if mem.team_id)
2581
- if team_memories > 0:
2582
- points.append(f"{team_memories} memories shared with team")
2583
-
2584
- # Knowledge diversity
2585
- categories = set()
2586
- for mem in memories:
2587
- cat = mem.category.value if hasattr(mem.category, "value") else str(mem.category)
2588
- categories.add(cat)
2589
- points.append(f"Knowledge diversity: {len(categories)} categories")
2590
-
2591
- # Recent activity
2592
- recent = sum(
2593
- 1
2594
- for mem in memories
2595
- if mem.created_at and (datetime.now(UTC) - mem.created_at).days < 7
2596
- )
2597
- points.append(f"Recent contributions: {recent} memories this week")
2598
-
2599
- return points
2600
-
2601
- def _generate_action_items(self, _synthesis: str, memories: list[Memory]) -> list[str]:
2602
- """Generate action items based on synthesis."""
2603
- action_items = []
2604
-
2605
- # Based on memory volume
2606
- if len(memories) < 10:
2607
- action_items.append("Increase documentation frequency to build team knowledge base")
2608
-
2609
- # Based on contributor diversity
2610
- contributors = len({mem.user_id for mem in memories if mem.user_id})
2611
- if contributors < 3:
2612
- action_items.append("Encourage more team members to share their knowledge")
2613
-
2614
- # Based on recency
2615
- recent = sum(
2616
- 1
2617
- for mem in memories
2618
- if mem.created_at and (datetime.now(UTC) - mem.created_at).days < 7
2619
- )
2620
- if recent < 2:
2621
- action_items.append("Schedule regular knowledge sharing sessions")
2622
-
2623
- # Based on categories
2624
- categories = set()
2625
- for mem in memories:
2626
- cat = mem.category.value if hasattr(mem.category, "value") else str(mem.category)
2627
- categories.add(cat)
2628
-
2629
- if len(categories) < 3:
2630
- action_items.append("Diversify knowledge documentation across different areas")
2631
-
2632
- return action_items[:5] # Limit to 5 action items
2633
-
2634
- def _calculate_synthesis_confidence(self, _contents: list[str], memories: list[Memory]) -> float:
2635
- """Calculate confidence score for synthesis."""
2636
- if not memories:
2637
- return 0.0
2638
-
2639
- confidence = 0.5 # Base confidence
2640
-
2641
- # More memories = higher confidence
2642
- memory_factor = min(1.0, len(memories) / 50.0)
2643
- confidence += memory_factor * 0.3
2644
-
2645
- # More contributors = higher confidence
2646
- contributors = len({mem.user_id for mem in memories if mem.user_id})
2647
- contributor_factor = min(1.0, contributors / 5.0)
2648
- confidence += contributor_factor * 0.2
2649
-
2650
- return min(1.0, confidence)
2651
-
2652
- # Analytics Methods (delegated to MemoryAdminService)
2653
- def _build_analytics_cache_key(self, *args, **kwargs) -> str:
2654
- """Delegates to MemoryAdminService."""
2655
- return self._get_admin_svc()._build_analytics_cache_key(*args, **kwargs)
2656
-
2657
- async def get_analytics(self, *args, **kwargs) -> Analytics:
2658
- """Delegates to MemoryAdminService."""
2659
- return await self._get_admin_svc().get_analytics(*args, **kwargs)
2660
-
2661
- async def _gather_session_analytics(self, *args, **kwargs):
2662
- """Delegates to MemoryAdminService."""
2663
- await self._get_admin_svc()._gather_session_analytics(*args, **kwargs)
2664
-
2665
- async def _gather_memory_analytics(self, *args, **kwargs):
2666
- """Delegates to MemoryAdminService."""
2667
- await self._get_admin_svc()._gather_memory_analytics(*args, **kwargs)
2668
-
2669
- async def _gather_operation_analytics(self, *args, **kwargs):
2670
- """Delegates to MemoryAdminService."""
2671
- await self._get_admin_svc()._gather_operation_analytics(*args, **kwargs)
2672
-
2673
- async def _gather_pattern_analytics(self, *args, **kwargs):
2674
- """Delegates to MemoryAdminService."""
2675
- await self._get_admin_svc()._gather_pattern_analytics(*args, **kwargs)
2676
-
2677
- async def aggregate_analytics(self, *args, **kwargs):
2678
- """Delegates to MemoryAdminService."""
2679
- return await self._get_admin_svc().aggregate_analytics(*args, **kwargs)
2680
-
2681
- # Memory CRUD Parity (Mem0 + Postgres + Redis)
2682
- async def get_memory(self, *args, **kwargs):
2683
- """Delegates to MemoryCRUDService."""
2684
- return await self._get_crud_svc().get_memory(*args, **kwargs)
2685
-
2686
- async def update_memory(self, *args, **kwargs):
2687
- """Delegates to MemoryCRUDService."""
2688
- return await self._get_crud_svc().update_memory(*args, **kwargs)
2689
-
2690
- async def delete_memory(self, *args, **kwargs):
2691
- """Delegates to MemoryCRUDService."""
2692
- return await self._get_crud_svc().delete_memory(*args, **kwargs)
2693
-
2694
- async def batch_create_memories(self, *args, **kwargs):
2695
- """Delegates to MemoryCRUDService."""
2696
- return await self._get_crud_svc().batch_create_memories(*args, **kwargs)
2697
-
2698
- async def batch_update_memories(self, *args, **kwargs):
2699
- """Delegates to MemoryCRUDService."""
2700
- return await self._get_crud_svc().batch_update_memories(*args, **kwargs)
2701
-
2702
- async def batch_delete_memories(self, *args, **kwargs):
2703
- """Delegates to MemoryCRUDService."""
2704
- return await self._get_crud_svc().batch_delete_memories(*args, **kwargs)
2705
-
2706
- async def delete_memories_by_filter(self, *args, **kwargs):
2707
- """Delegates to MemoryCRUDService."""
2708
- return await self._get_crud_svc().delete_memories_by_filter(*args, **kwargs)
2709
-
2710
- async def create_memory_export(self, *args, **kwargs):
2711
- """Delegates to MemoryAdminService."""
2712
- return await self._get_admin_svc().create_memory_export(*args, **kwargs)
2713
-
2714
- async def get_memory_export(self, *args, **kwargs):
2715
- """Delegates to MemoryAdminService."""
2716
- return await self._get_admin_svc().get_memory_export(*args, **kwargs)
2717
-
2718
- async def get_memory_history(self, *args, **kwargs):
2719
- """Delegates to MemoryAdminService."""
2720
- return await self._get_admin_svc().get_memory_history(*args, **kwargs)
2721
-
2722
- async def submit_memory_feedback(self, *args, **kwargs):
2723
- """Delegates to MemoryAdminService."""
2724
- return await self._get_admin_svc().submit_memory_feedback(*args, **kwargs)
2725
-
2726
- async def _record_mem0_fallback_metrics(self, search_mode: str) -> None:
2727
- """Delegates to MemorySearchService."""
2728
- await self._get_search_svc()._record_mem0_fallback_metrics(search_mode)
2729
-
2730
- # Statistics helpers (TSK-4.07)
2731
-
2732
- async def count_memories(self, *args, **kwargs) -> int:
2733
- """Delegates to MemoryAdminService."""
2734
- return await self._get_admin_svc().count_memories(*args, **kwargs)
2735
-
2736
- async def count_active_sessions(self, *args, **kwargs) -> int:
2737
- """Delegates to MemoryAdminService."""
2738
- return await self._get_admin_svc().count_active_sessions(*args, **kwargs)
2739
-
2740
- # Health Check
2741
- async def health_check(self, *args, **kwargs):
2742
- """Delegates to MemoryAdminService."""
2743
- return await self._get_admin_svc().health_check(*args, **kwargs)
2744
-
2745
-
2746
- # Global service instance
2747
- ai_memory_service = VDSAIMemoryService()
2748
-
2749
-
2750
- async def get_ai_memory_service() -> VDSAIMemoryService:
2751
- """Get the global AI memory service instance."""
2752
- if not ai_memory_service._redis_service:
2753
- await ai_memory_service.initialize()
2754
- return ai_memory_service