specweave 0.33.2 → 0.33.4

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 (101) hide show
  1. package/CLAUDE.md +133 -19
  2. package/dist/plugins/specweave-ado/lib/per-us-sync.d.ts +120 -0
  3. package/dist/plugins/specweave-ado/lib/per-us-sync.d.ts.map +1 -0
  4. package/dist/plugins/specweave-ado/lib/per-us-sync.js +276 -0
  5. package/dist/plugins/specweave-ado/lib/per-us-sync.js.map +1 -0
  6. package/dist/plugins/specweave-github/lib/github-client-v2.d.ts +4 -1
  7. package/dist/plugins/specweave-github/lib/github-client-v2.d.ts.map +1 -1
  8. package/dist/plugins/specweave-github/lib/github-client-v2.js +13 -3
  9. package/dist/plugins/specweave-github/lib/github-client-v2.js.map +1 -1
  10. package/dist/plugins/specweave-github/lib/per-us-sync.d.ts +97 -0
  11. package/dist/plugins/specweave-github/lib/per-us-sync.d.ts.map +1 -0
  12. package/dist/plugins/specweave-github/lib/per-us-sync.js +274 -0
  13. package/dist/plugins/specweave-github/lib/per-us-sync.js.map +1 -0
  14. package/dist/plugins/specweave-jira/lib/per-us-sync.d.ts +113 -0
  15. package/dist/plugins/specweave-jira/lib/per-us-sync.d.ts.map +1 -0
  16. package/dist/plugins/specweave-jira/lib/per-us-sync.js +254 -0
  17. package/dist/plugins/specweave-jira/lib/per-us-sync.js.map +1 -0
  18. package/dist/src/cli/cleanup-zombies.js +8 -5
  19. package/dist/src/cli/cleanup-zombies.js.map +1 -1
  20. package/dist/src/config/types.d.ts +203 -1208
  21. package/dist/src/config/types.d.ts.map +1 -1
  22. package/dist/src/core/config/config-manager.d.ts.map +1 -1
  23. package/dist/src/core/config/config-manager.js +58 -0
  24. package/dist/src/core/config/config-manager.js.map +1 -1
  25. package/dist/src/core/config/types.d.ts +80 -0
  26. package/dist/src/core/config/types.d.ts.map +1 -1
  27. package/dist/src/core/config/types.js.map +1 -1
  28. package/dist/src/core/living-docs/cross-project-sync.d.ts +87 -15
  29. package/dist/src/core/living-docs/cross-project-sync.d.ts.map +1 -1
  30. package/dist/src/core/living-docs/cross-project-sync.js +147 -28
  31. package/dist/src/core/living-docs/cross-project-sync.js.map +1 -1
  32. package/dist/src/core/living-docs/living-docs-sync.d.ts.map +1 -1
  33. package/dist/src/core/living-docs/living-docs-sync.js +26 -22
  34. package/dist/src/core/living-docs/living-docs-sync.js.map +1 -1
  35. package/dist/src/core/living-docs/types.d.ts +24 -3
  36. package/dist/src/core/living-docs/types.d.ts.map +1 -1
  37. package/dist/src/core/types/config.d.ts +79 -0
  38. package/dist/src/core/types/config.d.ts.map +1 -1
  39. package/dist/src/core/types/config.js.map +1 -1
  40. package/dist/src/importers/jira-importer.d.ts +10 -0
  41. package/dist/src/importers/jira-importer.d.ts.map +1 -1
  42. package/dist/src/importers/jira-importer.js +55 -5
  43. package/dist/src/importers/jira-importer.js.map +1 -1
  44. package/dist/src/init/architecture/types.d.ts +33 -140
  45. package/dist/src/init/architecture/types.d.ts.map +1 -1
  46. package/dist/src/init/compliance/types.d.ts +30 -27
  47. package/dist/src/init/compliance/types.d.ts.map +1 -1
  48. package/dist/src/init/repo/types.d.ts +11 -34
  49. package/dist/src/init/repo/types.d.ts.map +1 -1
  50. package/dist/src/init/research/src/config/types.d.ts +15 -82
  51. package/dist/src/init/research/src/config/types.d.ts.map +1 -1
  52. package/dist/src/init/research/types.d.ts +38 -93
  53. package/dist/src/init/research/types.d.ts.map +1 -1
  54. package/dist/src/init/team/types.d.ts +4 -42
  55. package/dist/src/init/team/types.d.ts.map +1 -1
  56. package/dist/src/sync/closure-metrics.d.ts +102 -0
  57. package/dist/src/sync/closure-metrics.d.ts.map +1 -0
  58. package/dist/src/sync/closure-metrics.js +267 -0
  59. package/dist/src/sync/closure-metrics.js.map +1 -0
  60. package/dist/src/sync/sync-coordinator.d.ts +49 -0
  61. package/dist/src/sync/sync-coordinator.d.ts.map +1 -1
  62. package/dist/src/sync/sync-coordinator.js +399 -37
  63. package/dist/src/sync/sync-coordinator.js.map +1 -1
  64. package/dist/src/utils/notification-constants.d.ts +85 -0
  65. package/dist/src/utils/notification-constants.d.ts.map +1 -0
  66. package/dist/src/utils/notification-constants.js +129 -0
  67. package/dist/src/utils/notification-constants.js.map +1 -0
  68. package/dist/src/utils/platform-utils.d.ts +13 -3
  69. package/dist/src/utils/platform-utils.d.ts.map +1 -1
  70. package/dist/src/utils/platform-utils.js +17 -6
  71. package/dist/src/utils/platform-utils.js.map +1 -1
  72. package/dist/src/utils/project-resolver.d.ts +156 -0
  73. package/dist/src/utils/project-resolver.d.ts.map +1 -0
  74. package/dist/src/utils/project-resolver.js +587 -0
  75. package/dist/src/utils/project-resolver.js.map +1 -0
  76. package/package.json +1 -1
  77. package/plugins/specweave/commands/specweave-increment.md +46 -0
  78. package/plugins/specweave/commands/specweave-jobs.md +153 -8
  79. package/plugins/specweave/hooks/hooks.json +10 -0
  80. package/plugins/specweave/hooks/spec-project-validator.sh +24 -2
  81. package/plugins/specweave/hooks/universal/hook-wrapper.cmd +26 -26
  82. package/plugins/specweave/hooks/universal/session-start.cmd +16 -16
  83. package/plugins/specweave/hooks/universal/session-start.ps1 +16 -16
  84. package/plugins/specweave/hooks/user-prompt-submit.sh +105 -3
  85. package/plugins/specweave/hooks/v2/guards/per-us-project-validator.sh +281 -0
  86. package/plugins/specweave/hooks/v2/handlers/living-specs-handler.sh +29 -0
  87. package/plugins/specweave/scripts/session-watchdog.sh +278 -130
  88. package/plugins/specweave/skills/increment-planner/SKILL.md +48 -18
  89. package/plugins/specweave/skills/increment-planner/templates/spec-multi-project.md +27 -14
  90. package/plugins/specweave/skills/increment-planner/templates/spec-single-project.md +16 -5
  91. package/plugins/specweave/skills/spec-generator/SKILL.md +74 -15
  92. package/plugins/specweave-ado/lib/per-us-sync.js +247 -0
  93. package/plugins/specweave-ado/lib/per-us-sync.ts +410 -0
  94. package/plugins/specweave-github/lib/github-client-v2.js +10 -3
  95. package/plugins/specweave-github/lib/github-client-v2.ts +15 -3
  96. package/plugins/specweave-github/lib/per-us-sync.js +241 -0
  97. package/plugins/specweave-github/lib/per-us-sync.ts +375 -0
  98. package/plugins/specweave-jira/lib/per-us-sync.js +224 -0
  99. package/plugins/specweave-jira/lib/per-us-sync.ts +366 -0
  100. package/plugins/specweave-github/hooks/.specweave/logs/hooks-debug.log +0 -738
  101. package/plugins/specweave-release/hooks/.specweave/logs/dora-tracking.log +0 -1107
@@ -57,35 +57,38 @@ export interface ComplianceDetectionResult {
57
57
  export declare const ComplianceStandardSchema: z.ZodObject<{
58
58
  id: z.ZodString;
59
59
  name: z.ZodString;
60
- dataTypes: z.ZodArray<z.ZodEnum<["healthcare", "payment", "personal", "government", "student", "financial", "biometric", "location", "children", "sensitive"]>, "many">;
61
- regions: z.ZodArray<z.ZodString, "many">;
62
- teamImpact: z.ZodArray<z.ZodEnum<["auth-team", "data-team", "devsecops-team", "ciso", "dpo", "privacy-engineering", "payments-team", "compliance-team"]>, "many">;
60
+ dataTypes: z.ZodArray<z.ZodEnum<{
61
+ healthcare: "healthcare";
62
+ personal: "personal";
63
+ payment: "payment";
64
+ location: "location";
65
+ financial: "financial";
66
+ government: "government";
67
+ student: "student";
68
+ biometric: "biometric";
69
+ children: "children";
70
+ sensitive: "sensitive";
71
+ }>>;
72
+ regions: z.ZodArray<z.ZodString>;
73
+ teamImpact: z.ZodArray<z.ZodEnum<{
74
+ "auth-team": "auth-team";
75
+ "data-team": "data-team";
76
+ "devsecops-team": "devsecops-team";
77
+ ciso: "ciso";
78
+ dpo: "dpo";
79
+ "privacy-engineering": "privacy-engineering";
80
+ "payments-team": "payments-team";
81
+ "compliance-team": "compliance-team";
82
+ }>>;
63
83
  costImpact: z.ZodString;
64
84
  certificationRequired: z.ZodBoolean;
65
- auditFrequency: z.ZodEnum<["annual", "quarterly", "continuous", "none"]>;
85
+ auditFrequency: z.ZodEnum<{
86
+ none: "none";
87
+ annual: "annual";
88
+ quarterly: "quarterly";
89
+ continuous: "continuous";
90
+ }>;
66
91
  description: z.ZodOptional<z.ZodString>;
67
92
  documentationUrl: z.ZodOptional<z.ZodString>;
68
- }, "strip", z.ZodTypeAny, {
69
- name?: string;
70
- description?: string;
71
- id?: string;
72
- dataTypes?: ("healthcare" | "personal" | "payment" | "location" | "financial" | "government" | "student" | "biometric" | "children" | "sensitive")[];
73
- regions?: string[];
74
- teamImpact?: ("auth-team" | "data-team" | "devsecops-team" | "ciso" | "dpo" | "privacy-engineering" | "payments-team" | "compliance-team")[];
75
- costImpact?: string;
76
- certificationRequired?: boolean;
77
- auditFrequency?: "none" | "annual" | "quarterly" | "continuous";
78
- documentationUrl?: string;
79
- }, {
80
- name?: string;
81
- description?: string;
82
- id?: string;
83
- dataTypes?: ("healthcare" | "personal" | "payment" | "location" | "financial" | "government" | "student" | "biometric" | "children" | "sensitive")[];
84
- regions?: string[];
85
- teamImpact?: ("auth-team" | "data-team" | "devsecops-team" | "ciso" | "dpo" | "privacy-engineering" | "payments-team" | "compliance-team")[];
86
- costImpact?: string;
87
- certificationRequired?: boolean;
88
- auditFrequency?: "none" | "annual" | "quarterly" | "continuous";
89
- documentationUrl?: string;
90
- }>;
93
+ }, z.core.$strip>;
91
94
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/init/compliance/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;GAEG;AACH,MAAM,MAAM,QAAQ,GAChB,YAAY,GACZ,SAAS,GACT,UAAU,GACV,YAAY,GACZ,SAAS,GACT,WAAW,GACX,WAAW,GACX,UAAU,GACV,UAAU,GACV,WAAW,CAAC;AAEhB;;GAEG;AACH,MAAM,MAAM,eAAe,GACvB,WAAW,GACX,WAAW,GACX,gBAAgB,GAChB,MAAM,GACN,KAAK,GACL,qBAAqB,GACrB,eAAe,GACf,iBAAiB,CAAC;AAEtB;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,wCAAwC;IACxC,EAAE,EAAE,MAAM,CAAC;IAEX,gCAAgC;IAChC,IAAI,EAAE,MAAM,CAAC;IAEb,4CAA4C;IAC5C,SAAS,EAAE,QAAQ,EAAE,CAAC;IAEtB,0CAA0C;IAC1C,OAAO,EAAE,MAAM,EAAE,CAAC;IAElB,uCAAuC;IACvC,UAAU,EAAE,eAAe,EAAE,CAAC;IAE9B,4BAA4B;IAC5B,UAAU,EAAE,MAAM,CAAC;IAEnB,wCAAwC;IACxC,qBAAqB,EAAE,OAAO,CAAC;IAE/B,sBAAsB;IACtB,cAAc,EAAE,QAAQ,GAAG,WAAW,GAAG,YAAY,GAAG,MAAM,CAAC;IAE/D,uCAAuC;IACvC,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,iCAAiC;IACjC,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACxC,6BAA6B;IAC7B,SAAS,EAAE,kBAAkB,EAAE,CAAC;IAEhC,oDAAoD;IACpD,gBAAgB,EAAE,eAAe,EAAE,CAAC;IAEpC,6CAA6C;IAC7C,iBAAiB,EAAE,MAAM,CAAC;IAE1B,+BAA+B;IAC/B,eAAe,EAAE,MAAM,EAAE,CAAC;CAC3B;AAED;;GAEG;AACH,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA+BnC,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/init/compliance/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;GAEG;AACH,MAAM,MAAM,QAAQ,GAChB,YAAY,GACZ,SAAS,GACT,UAAU,GACV,YAAY,GACZ,SAAS,GACT,WAAW,GACX,WAAW,GACX,UAAU,GACV,UAAU,GACV,WAAW,CAAC;AAEhB;;GAEG;AACH,MAAM,MAAM,eAAe,GACvB,WAAW,GACX,WAAW,GACX,gBAAgB,GAChB,MAAM,GACN,KAAK,GACL,qBAAqB,GACrB,eAAe,GACf,iBAAiB,CAAC;AAEtB;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,wCAAwC;IACxC,EAAE,EAAE,MAAM,CAAC;IAEX,gCAAgC;IAChC,IAAI,EAAE,MAAM,CAAC;IAEb,4CAA4C;IAC5C,SAAS,EAAE,QAAQ,EAAE,CAAC;IAEtB,0CAA0C;IAC1C,OAAO,EAAE,MAAM,EAAE,CAAC;IAElB,uCAAuC;IACvC,UAAU,EAAE,eAAe,EAAE,CAAC;IAE9B,4BAA4B;IAC5B,UAAU,EAAE,MAAM,CAAC;IAEnB,wCAAwC;IACxC,qBAAqB,EAAE,OAAO,CAAC;IAE/B,sBAAsB;IACtB,cAAc,EAAE,QAAQ,GAAG,WAAW,GAAG,YAAY,GAAG,MAAM,CAAC;IAE/D,uCAAuC;IACvC,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,iCAAiC;IACjC,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACxC,6BAA6B;IAC7B,SAAS,EAAE,kBAAkB,EAAE,CAAC;IAEhC,oDAAoD;IACpD,gBAAgB,EAAE,eAAe,EAAE,CAAC;IAEpC,6CAA6C;IAC7C,iBAAiB,EAAE,MAAM,CAAC;IAE1B,+BAA+B;IAC/B,eAAe,EAAE,MAAM,EAAE,CAAC;CAC3B;AAED;;GAEG;AACH,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA+BnC,CAAC"}
@@ -46,21 +46,18 @@ export interface RepositoryMetadata {
46
46
  * Zod schemas
47
47
  */
48
48
  export declare const RepositorySelectionRuleSchema: z.ZodObject<{
49
- type: z.ZodEnum<["all", "prefix", "owner", "keyword", "combined", "manual"]>;
49
+ type: z.ZodEnum<{
50
+ manual: "manual";
51
+ all: "all";
52
+ keyword: "keyword";
53
+ owner: "owner";
54
+ prefix: "prefix";
55
+ combined: "combined";
56
+ }>;
50
57
  pattern: z.ZodOptional<z.ZodString>;
51
58
  owner: z.ZodOptional<z.ZodString>;
52
- excludePatterns: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
53
- }, "strip", z.ZodTypeAny, {
54
- type?: "manual" | "all" | "keyword" | "owner" | "prefix" | "combined";
55
- pattern?: string;
56
- owner?: string;
57
- excludePatterns?: string[];
58
- }, {
59
- type?: "manual" | "all" | "keyword" | "owner" | "prefix" | "combined";
60
- pattern?: string;
61
- owner?: string;
62
- excludePatterns?: string[];
63
- }>;
59
+ excludePatterns: z.ZodOptional<z.ZodArray<z.ZodString>>;
60
+ }, z.core.$strip>;
64
61
  export declare const RepositoryMetadataSchema: z.ZodObject<{
65
62
  name: z.ZodString;
66
63
  url: z.ZodString;
@@ -71,25 +68,5 @@ export declare const RepositoryMetadataSchema: z.ZodObject<{
71
68
  lastUpdated: z.ZodDate;
72
69
  private: z.ZodOptional<z.ZodBoolean>;
73
70
  defaultBranch: z.ZodOptional<z.ZodString>;
74
- }, "strip", z.ZodTypeAny, {
75
- name?: string;
76
- description?: string;
77
- language?: string;
78
- owner?: string;
79
- url?: string;
80
- lastUpdated?: Date;
81
- private?: boolean;
82
- stars?: number;
83
- defaultBranch?: string;
84
- }, {
85
- name?: string;
86
- description?: string;
87
- language?: string;
88
- owner?: string;
89
- url?: string;
90
- lastUpdated?: Date;
91
- private?: boolean;
92
- stars?: number;
93
- defaultBranch?: string;
94
- }>;
71
+ }, z.core.$strip>;
95
72
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/init/repo/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;GAEG;AACH,MAAM,MAAM,aAAa,GACrB,KAAK,GACL,QAAQ,GACR,OAAO,GACP,SAAS,GACT,UAAU,GACV,QAAQ,CAAC;AAEb;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,qBAAqB;IACrB,IAAI,EAAE,aAAa,CAAC;IAEpB,0CAA0C;IAC1C,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,qBAAqB;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,yBAAyB;IACzB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;CAC5B;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,sBAAsB;IACtB,IAAI,EAAE,MAAM,CAAC;IAEb,0BAA0B;IAC1B,GAAG,EAAE,MAAM,CAAC;IAEZ,yBAAyB;IACzB,KAAK,EAAE,MAAM,CAAC;IAEd,6BAA6B;IAC7B,WAAW,EAAE,MAAM,CAAC;IAEpB,uBAAuB;IACvB,QAAQ,EAAE,MAAM,CAAC;IAEjB,iBAAiB;IACjB,KAAK,EAAE,MAAM,CAAC;IAEd,6BAA6B;IAC7B,WAAW,EAAE,IAAI,CAAC;IAElB,iBAAiB;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB,qBAAqB;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;GAEG;AACH,eAAO,MAAM,6BAA6B;;;;;;;;;;;;;;;EAKxC,CAAC;AAEH,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAUnC,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/init/repo/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;GAEG;AACH,MAAM,MAAM,aAAa,GACrB,KAAK,GACL,QAAQ,GACR,OAAO,GACP,SAAS,GACT,UAAU,GACV,QAAQ,CAAC;AAEb;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,qBAAqB;IACrB,IAAI,EAAE,aAAa,CAAC;IAEpB,0CAA0C;IAC1C,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,qBAAqB;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,yBAAyB;IACzB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;CAC5B;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,sBAAsB;IACtB,IAAI,EAAE,MAAM,CAAC;IAEb,0BAA0B;IAC1B,GAAG,EAAE,MAAM,CAAC;IAEZ,yBAAyB;IACzB,KAAK,EAAE,MAAM,CAAC;IAEd,6BAA6B;IAC7B,WAAW,EAAE,MAAM,CAAC;IAEpB,uBAAuB;IACvB,QAAQ,EAAE,MAAM,CAAC;IAEjB,iBAAiB;IACjB,KAAK,EAAE,MAAM,CAAC;IAEd,6BAA6B;IAC7B,WAAW,EAAE,IAAI,CAAC;IAElB,iBAAiB;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB,qBAAqB;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;GAEG;AACH,eAAO,MAAM,6BAA6B;;;;;;;;;;;;iBAKxC,CAAC;AAEH,eAAO,MAAM,wBAAwB;;;;;;;;;;iBAUnC,CAAC"}
@@ -4,99 +4,32 @@
4
4
  import { z } from 'zod';
5
5
  export declare const ResearchConfigSchema: z.ZodOptional<z.ZodObject<{
6
6
  vision: z.ZodOptional<z.ZodAny>;
7
- compliance: z.ZodOptional<z.ZodArray<z.ZodAny, "many">>;
8
- teams: z.ZodOptional<z.ZodArray<z.ZodAny, "many">>;
9
- repositories: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
7
+ compliance: z.ZodOptional<z.ZodArray<z.ZodAny>>;
8
+ teams: z.ZodOptional<z.ZodArray<z.ZodAny>>;
9
+ repositories: z.ZodOptional<z.ZodArray<z.ZodString>>;
10
10
  architecture: z.ZodOptional<z.ZodAny>;
11
- }, "strip", z.ZodTypeAny, {
12
- architecture?: any;
13
- teams?: any[];
14
- repositories?: string[];
15
- vision?: any;
16
- compliance?: any[];
17
- }, {
18
- architecture?: any;
19
- teams?: any[];
20
- repositories?: string[];
21
- vision?: any;
22
- compliance?: any[];
23
- }>>;
11
+ }, z.core.$strip>>;
24
12
  export declare const SpecWeaveConfigSchema: z.ZodObject<{
25
13
  version: z.ZodString;
26
14
  project: z.ZodObject<{
27
15
  name: z.ZodString;
28
- type: z.ZodEnum<["single", "multi"]>;
29
- }, "strip", z.ZodTypeAny, {
30
- name?: string;
31
- type?: "single" | "multi";
32
- }, {
33
- name?: string;
34
- type?: "single" | "multi";
35
- }>;
16
+ type: z.ZodEnum<{
17
+ single: "single";
18
+ multi: "multi";
19
+ }>;
20
+ }, z.core.$strip>;
36
21
  research: z.ZodOptional<z.ZodObject<{
37
22
  vision: z.ZodOptional<z.ZodAny>;
38
- compliance: z.ZodOptional<z.ZodArray<z.ZodAny, "many">>;
39
- teams: z.ZodOptional<z.ZodArray<z.ZodAny, "many">>;
40
- repositories: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
23
+ compliance: z.ZodOptional<z.ZodArray<z.ZodAny>>;
24
+ teams: z.ZodOptional<z.ZodArray<z.ZodAny>>;
25
+ repositories: z.ZodOptional<z.ZodArray<z.ZodString>>;
41
26
  architecture: z.ZodOptional<z.ZodAny>;
42
- }, "strip", z.ZodTypeAny, {
43
- architecture?: any;
44
- teams?: any[];
45
- repositories?: string[];
46
- vision?: any;
47
- compliance?: any[];
48
- }, {
49
- architecture?: any;
50
- teams?: any[];
51
- repositories?: string[];
52
- vision?: any;
53
- compliance?: any[];
54
- }>>;
27
+ }, z.core.$strip>>;
55
28
  livingDocs: z.ZodOptional<z.ZodObject<{
56
29
  enabled: z.ZodBoolean;
57
30
  baseDir: z.ZodString;
58
- }, "strip", z.ZodTypeAny, {
59
- enabled?: boolean;
60
- baseDir?: string;
61
- }, {
62
- enabled?: boolean;
63
- baseDir?: string;
64
- }>>;
65
- }, "strip", z.ZodTypeAny, {
66
- version?: string;
67
- project?: {
68
- name?: string;
69
- type?: "single" | "multi";
70
- };
71
- livingDocs?: {
72
- enabled?: boolean;
73
- baseDir?: string;
74
- };
75
- research?: {
76
- architecture?: any;
77
- teams?: any[];
78
- repositories?: string[];
79
- vision?: any;
80
- compliance?: any[];
81
- };
82
- }, {
83
- version?: string;
84
- project?: {
85
- name?: string;
86
- type?: "single" | "multi";
87
- };
88
- livingDocs?: {
89
- enabled?: boolean;
90
- baseDir?: string;
91
- };
92
- research?: {
93
- architecture?: any;
94
- teams?: any[];
95
- repositories?: string[];
96
- vision?: any;
97
- compliance?: any[];
98
- };
99
- }>;
31
+ }, z.core.$strip>>;
32
+ }, z.core.$strip>;
100
33
  export type ResearchConfig = z.infer<typeof ResearchConfigSchema>;
101
34
  export type SpecWeaveConfig = z.infer<typeof SpecWeaveConfigSchema>;
102
35
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../../src/init/research/src/config/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;GAMpB,CAAC;AAEd,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAWhC,CAAC;AAEH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAClE,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../../src/init/research/src/config/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,oBAAoB;;;;;;kBAMpB,CAAC;AAEd,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;iBAWhC,CAAC;AAEH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAClE,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC"}
@@ -65,119 +65,64 @@ export interface VisionInsights {
65
65
  * Zod schema for VisionInsights validation
66
66
  */
67
67
  export declare const VisionInsightsSchema: z.ZodObject<{
68
- keywords: z.ZodArray<z.ZodString, "many">;
69
- market: z.ZodEnum<["productivity-saas", "healthcare", "fintech", "e-commerce", "education", "gaming", "social-network", "enterprise-b2b", "consumer-b2c", "marketplace", "iot", "blockchain", "ai-ml", "unknown"]>;
68
+ keywords: z.ZodArray<z.ZodString>;
69
+ market: z.ZodEnum<{
70
+ unknown: "unknown";
71
+ healthcare: "healthcare";
72
+ fintech: "fintech";
73
+ education: "education";
74
+ iot: "iot";
75
+ gaming: "gaming";
76
+ marketplace: "marketplace";
77
+ "productivity-saas": "productivity-saas";
78
+ "e-commerce": "e-commerce";
79
+ "social-network": "social-network";
80
+ "enterprise-b2b": "enterprise-b2b";
81
+ "consumer-b2c": "consumer-b2c";
82
+ blockchain: "blockchain";
83
+ "ai-ml": "ai-ml";
84
+ }>;
70
85
  competitors: z.ZodArray<z.ZodObject<{
71
86
  name: z.ZodString;
72
87
  url: z.ZodOptional<z.ZodString>;
73
- strengths: z.ZodArray<z.ZodString, "many">;
74
- weaknesses: z.ZodArray<z.ZodString, "many">;
75
- }, "strip", z.ZodTypeAny, {
76
- name?: string;
77
- url?: string;
78
- strengths?: string[];
79
- weaknesses?: string[];
80
- }, {
81
- name?: string;
82
- url?: string;
83
- strengths?: string[];
84
- weaknesses?: string[];
85
- }>, "many">;
88
+ strengths: z.ZodArray<z.ZodString>;
89
+ weaknesses: z.ZodArray<z.ZodString>;
90
+ }, z.core.$strip>>;
86
91
  opportunityScore: z.ZodNumber;
87
92
  viralPotential: z.ZodBoolean;
88
93
  followUpQuestions: z.ZodArray<z.ZodObject<{
89
94
  question: z.ZodString;
90
- type: z.ZodEnum<["open", "multiple-choice", "scale"]>;
91
- options: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
95
+ type: z.ZodEnum<{
96
+ open: "open";
97
+ "multiple-choice": "multiple-choice";
98
+ scale: "scale";
99
+ }>;
100
+ options: z.ZodOptional<z.ZodArray<z.ZodString>>;
92
101
  rationale: z.ZodString;
93
- }, "strip", z.ZodTypeAny, {
94
- type?: "open" | "multiple-choice" | "scale";
95
- options?: string[];
96
- question?: string;
97
- rationale?: string;
98
- }, {
99
- type?: "open" | "multiple-choice" | "scale";
100
- options?: string[];
101
- question?: string;
102
- rationale?: string;
103
- }>, "many">;
102
+ }, z.core.$strip>>;
104
103
  confidence: z.ZodOptional<z.ZodNumber>;
105
104
  rawVision: z.ZodString;
106
- }, "strip", z.ZodTypeAny, {
107
- keywords?: string[];
108
- confidence?: number;
109
- market?: "unknown" | "healthcare" | "fintech" | "education" | "iot" | "gaming" | "marketplace" | "productivity-saas" | "e-commerce" | "social-network" | "enterprise-b2b" | "consumer-b2c" | "blockchain" | "ai-ml";
110
- competitors?: {
111
- name?: string;
112
- url?: string;
113
- strengths?: string[];
114
- weaknesses?: string[];
115
- }[];
116
- opportunityScore?: number;
117
- viralPotential?: boolean;
118
- followUpQuestions?: {
119
- type?: "open" | "multiple-choice" | "scale";
120
- options?: string[];
121
- question?: string;
122
- rationale?: string;
123
- }[];
124
- rawVision?: string;
125
- }, {
126
- keywords?: string[];
127
- confidence?: number;
128
- market?: "unknown" | "healthcare" | "fintech" | "education" | "iot" | "gaming" | "marketplace" | "productivity-saas" | "e-commerce" | "social-network" | "enterprise-b2b" | "consumer-b2c" | "blockchain" | "ai-ml";
129
- competitors?: {
130
- name?: string;
131
- url?: string;
132
- strengths?: string[];
133
- weaknesses?: string[];
134
- }[];
135
- opportunityScore?: number;
136
- viralPotential?: boolean;
137
- followUpQuestions?: {
138
- type?: "open" | "multiple-choice" | "scale";
139
- options?: string[];
140
- question?: string;
141
- rationale?: string;
142
- }[];
143
- rawVision?: string;
144
- }>;
105
+ }, z.core.$strip>;
145
106
  /**
146
107
  * Zod schema for Competitor validation
147
108
  */
148
109
  export declare const CompetitorSchema: z.ZodObject<{
149
110
  name: z.ZodString;
150
111
  url: z.ZodOptional<z.ZodString>;
151
- strengths: z.ZodArray<z.ZodString, "many">;
152
- weaknesses: z.ZodArray<z.ZodString, "many">;
153
- }, "strip", z.ZodTypeAny, {
154
- name?: string;
155
- url?: string;
156
- strengths?: string[];
157
- weaknesses?: string[];
158
- }, {
159
- name?: string;
160
- url?: string;
161
- strengths?: string[];
162
- weaknesses?: string[];
163
- }>;
112
+ strengths: z.ZodArray<z.ZodString>;
113
+ weaknesses: z.ZodArray<z.ZodString>;
114
+ }, z.core.$strip>;
164
115
  /**
165
116
  * Zod schema for Question validation
166
117
  */
167
118
  export declare const QuestionSchema: z.ZodObject<{
168
119
  question: z.ZodString;
169
- type: z.ZodEnum<["open", "multiple-choice", "scale"]>;
170
- options: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
120
+ type: z.ZodEnum<{
121
+ open: "open";
122
+ "multiple-choice": "multiple-choice";
123
+ scale: "scale";
124
+ }>;
125
+ options: z.ZodOptional<z.ZodArray<z.ZodString>>;
171
126
  rationale: z.ZodString;
172
- }, "strip", z.ZodTypeAny, {
173
- type?: "open" | "multiple-choice" | "scale";
174
- options?: string[];
175
- question?: string;
176
- rationale?: string;
177
- }, {
178
- type?: "open" | "multiple-choice" | "scale";
179
- options?: string[];
180
- question?: string;
181
- rationale?: string;
182
- }>;
127
+ }, z.core.$strip>;
183
128
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/init/research/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;GAIG;AACH,MAAM,MAAM,cAAc,GACtB,mBAAmB,GACnB,YAAY,GACZ,SAAS,GACT,YAAY,GACZ,WAAW,GACX,QAAQ,GACR,gBAAgB,GAChB,gBAAgB,GAChB,cAAc,GACd,aAAa,GACb,KAAK,GACL,YAAY,GACZ,OAAO,GACP,SAAS,CAAC;AAEd;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,8BAA8B;IAC9B,IAAI,EAAE,MAAM,CAAC;IAEb,6BAA6B;IAC7B,GAAG,CAAC,EAAE,MAAM,CAAC;IAEb,sCAAsC;IACtC,SAAS,EAAE,MAAM,EAAE,CAAC;IAEpB,6BAA6B;IAC7B,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,oBAAoB;IACpB,QAAQ,EAAE,MAAM,CAAC;IAEjB,wDAAwD;IACxD,IAAI,EAAE,MAAM,GAAG,iBAAiB,GAAG,OAAO,CAAC;IAE3C,4CAA4C;IAC5C,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IAEnB,uCAAuC;IACvC,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC7B,0DAA0D;IAC1D,QAAQ,EAAE,MAAM,EAAE,CAAC;IAEnB,+BAA+B;IAC/B,MAAM,EAAE,cAAc,CAAC;IAEvB,4CAA4C;IAC5C,WAAW,EAAE,UAAU,EAAE,CAAC;IAE1B,4CAA4C;IAC5C,gBAAgB,EAAE,MAAM,CAAC;IAEzB,iDAAiD;IACjD,cAAc,EAAE,OAAO,CAAC;IAExB,mDAAmD;IACnD,iBAAiB,EAAE,QAAQ,EAAE,CAAC;IAE9B,kDAAkD;IAClD,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,uCAAuC;IACvC,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAsC/B,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;EAK3B,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;EAKzB,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/init/research/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;GAIG;AACH,MAAM,MAAM,cAAc,GACtB,mBAAmB,GACnB,YAAY,GACZ,SAAS,GACT,YAAY,GACZ,WAAW,GACX,QAAQ,GACR,gBAAgB,GAChB,gBAAgB,GAChB,cAAc,GACd,aAAa,GACb,KAAK,GACL,YAAY,GACZ,OAAO,GACP,SAAS,CAAC;AAEd;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,8BAA8B;IAC9B,IAAI,EAAE,MAAM,CAAC;IAEb,6BAA6B;IAC7B,GAAG,CAAC,EAAE,MAAM,CAAC;IAEb,sCAAsC;IACtC,SAAS,EAAE,MAAM,EAAE,CAAC;IAEpB,6BAA6B;IAC7B,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,oBAAoB;IACpB,QAAQ,EAAE,MAAM,CAAC;IAEjB,wDAAwD;IACxD,IAAI,EAAE,MAAM,GAAG,iBAAiB,GAAG,OAAO,CAAC;IAE3C,4CAA4C;IAC5C,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IAEnB,uCAAuC;IACvC,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC7B,0DAA0D;IAC1D,QAAQ,EAAE,MAAM,EAAE,CAAC;IAEnB,+BAA+B;IAC/B,MAAM,EAAE,cAAc,CAAC;IAEvB,4CAA4C;IAC5C,WAAW,EAAE,UAAU,EAAE,CAAC;IAE1B,4CAA4C;IAC5C,gBAAgB,EAAE,MAAM,CAAC;IAEzB,iDAAiD;IACjD,cAAc,EAAE,OAAO,CAAC;IAExB,mDAAmD;IACnD,iBAAiB,EAAE,QAAQ,EAAE,CAAC;IAE9B,kDAAkD;IAClD,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,uCAAuC;IACvC,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAsC/B,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,gBAAgB;;;;;iBAK3B,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,cAAc;;;;;;;;;iBAKzB,CAAC"}
@@ -45,51 +45,13 @@ export declare const TeamRecommendationSchema: z.ZodObject<{
45
45
  required: z.ZodBoolean;
46
46
  reason: z.ZodString;
47
47
  size: z.ZodString;
48
- skills: z.ZodArray<z.ZodString, "many">;
48
+ skills: z.ZodArray<z.ZodString>;
49
49
  serverlessAlternative: z.ZodOptional<z.ZodObject<{
50
50
  service: z.ZodString;
51
51
  costSavings: z.ZodNumber;
52
- tradeoffs: z.ZodArray<z.ZodString, "many">;
52
+ tradeoffs: z.ZodArray<z.ZodString>;
53
53
  pricingModel: z.ZodOptional<z.ZodString>;
54
- }, "strip", z.ZodTypeAny, {
55
- service?: string;
56
- costSavings?: number;
57
- tradeoffs?: string[];
58
- pricingModel?: string;
59
- }, {
60
- service?: string;
61
- costSavings?: number;
62
- tradeoffs?: string[];
63
- pricingModel?: string;
64
- }>>;
54
+ }, z.core.$strip>>;
65
55
  priority: z.ZodOptional<z.ZodNumber>;
66
- }, "strip", z.ZodTypeAny, {
67
- skills?: string[];
68
- reason?: string;
69
- priority?: number;
70
- size?: string;
71
- role?: string;
72
- teamName?: string;
73
- required?: boolean;
74
- serverlessAlternative?: {
75
- service?: string;
76
- costSavings?: number;
77
- tradeoffs?: string[];
78
- pricingModel?: string;
79
- };
80
- }, {
81
- skills?: string[];
82
- reason?: string;
83
- priority?: number;
84
- size?: string;
85
- role?: string;
86
- teamName?: string;
87
- required?: boolean;
88
- serverlessAlternative?: {
89
- service?: string;
90
- costSavings?: number;
91
- tradeoffs?: string[];
92
- pricingModel?: string;
93
- };
94
- }>;
56
+ }, z.core.$strip>;
95
57
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/init/team/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,mDAAmD;IACnD,OAAO,EAAE,MAAM,CAAC;IAEhB,gDAAgD;IAChD,WAAW,EAAE,MAAM,CAAC;IAEpB,oCAAoC;IACpC,SAAS,EAAE,MAAM,EAAE,CAAC;IAEpB,oBAAoB;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,2BAA2B;IAC3B,QAAQ,EAAE,MAAM,CAAC;IAEjB,0BAA0B;IAC1B,IAAI,EAAE,MAAM,CAAC;IAEb,+DAA+D;IAC/D,QAAQ,EAAE,OAAO,CAAC;IAElB,8BAA8B;IAC9B,MAAM,EAAE,MAAM,CAAC;IAEf,4BAA4B;IAC5B,IAAI,EAAE,MAAM,CAAC;IAEb,oCAAoC;IACpC,MAAM,EAAE,MAAM,EAAE,CAAC;IAEjB,6CAA6C;IAC7C,qBAAqB,CAAC,EAAE,qBAAqB,CAAC;IAE9C,yCAAyC;IACzC,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAcnC,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/init/team/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,mDAAmD;IACnD,OAAO,EAAE,MAAM,CAAC;IAEhB,gDAAgD;IAChD,WAAW,EAAE,MAAM,CAAC;IAEpB,oCAAoC;IACpC,SAAS,EAAE,MAAM,EAAE,CAAC;IAEpB,oBAAoB;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,2BAA2B;IAC3B,QAAQ,EAAE,MAAM,CAAC;IAEjB,0BAA0B;IAC1B,IAAI,EAAE,MAAM,CAAC;IAEb,+DAA+D;IAC/D,QAAQ,EAAE,OAAO,CAAC;IAElB,8BAA8B;IAC9B,MAAM,EAAE,MAAM,CAAC;IAEf,4BAA4B;IAC5B,IAAI,EAAE,MAAM,CAAC;IAEb,oCAAoC;IACpC,MAAM,EAAE,MAAM,EAAE,CAAC;IAEjB,6CAA6C;IAC7C,qBAAqB,CAAC,EAAE,qBAAqB,CAAC;IAE9C,yCAAyC;IACzC,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;iBAcnC,CAAC"}
@@ -0,0 +1,102 @@
1
+ /**
2
+ * Closure Metrics - Telemetry for External Tool Sync Operations (v0.34.0)
3
+ *
4
+ * Tracks closure success/failure rates for GitHub, JIRA, and ADO.
5
+ * Persists metrics to .specweave/state/closure-metrics.json
6
+ *
7
+ * Usage:
8
+ * const metrics = new ClosureMetrics(projectRoot);
9
+ * metrics.recordClosure('github', 100, true); // Success
10
+ * metrics.recordClosure('jira', 'TEST-123', false, 'Rate limited'); // Failure
11
+ * metrics.getSummary(); // Get aggregated stats
12
+ */
13
+ import { Logger } from '../utils/logger.js';
14
+ export type ExternalTool = 'github' | 'jira' | 'ado';
15
+ export interface ClosureRecord {
16
+ tool: ExternalTool;
17
+ itemId: string | number;
18
+ incrementId: string;
19
+ success: boolean;
20
+ error?: string;
21
+ timestamp: string;
22
+ durationMs?: number;
23
+ }
24
+ export interface ToolMetrics {
25
+ totalAttempts: number;
26
+ successful: number;
27
+ failed: number;
28
+ successRate: number;
29
+ lastSuccess?: string;
30
+ lastFailure?: string;
31
+ avgDurationMs?: number;
32
+ recentErrors: string[];
33
+ }
34
+ export interface ClosureMetricsSummary {
35
+ github: ToolMetrics;
36
+ jira: ToolMetrics;
37
+ ado: ToolMetrics;
38
+ overall: {
39
+ totalAttempts: number;
40
+ successful: number;
41
+ failed: number;
42
+ successRate: number;
43
+ };
44
+ lastUpdated: string;
45
+ }
46
+ export declare class ClosureMetrics {
47
+ private projectRoot;
48
+ private metricsFile;
49
+ private logger;
50
+ private currentIncrementId;
51
+ private operationStartTime;
52
+ constructor(options: {
53
+ projectRoot: string;
54
+ incrementId?: string;
55
+ logger?: Logger;
56
+ });
57
+ /**
58
+ * Start timing an operation
59
+ */
60
+ startOperation(): void;
61
+ /**
62
+ * Record a closure operation result
63
+ */
64
+ recordClosure(tool: ExternalTool, itemId: string | number, success: boolean, error?: string): void;
65
+ /**
66
+ * Record multiple closures in batch
67
+ */
68
+ recordBatch(tool: ExternalTool, results: Array<{
69
+ itemId: string | number;
70
+ success: boolean;
71
+ error?: string;
72
+ }>): void;
73
+ /**
74
+ * Get metrics summary
75
+ */
76
+ getSummary(): ClosureMetricsSummary;
77
+ /**
78
+ * Get recent failures for alerting
79
+ */
80
+ getRecentFailures(hours?: number): ClosureRecord[];
81
+ /**
82
+ * Check if failure rate exceeds threshold (for alerting)
83
+ */
84
+ isFailureRateHigh(tool: ExternalTool, threshold?: number): boolean;
85
+ /**
86
+ * Format summary for display
87
+ */
88
+ formatSummary(): string;
89
+ /**
90
+ * Reset metrics (for testing or fresh start)
91
+ */
92
+ reset(): void;
93
+ private loadMetrics;
94
+ private saveMetrics;
95
+ private createEmptyMetrics;
96
+ private updateSummary;
97
+ }
98
+ /**
99
+ * Factory function for creating metrics instance
100
+ */
101
+ export declare function createClosureMetrics(projectRoot: string, incrementId?: string, logger?: Logger): ClosureMetrics;
102
+ //# sourceMappingURL=closure-metrics.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"closure-metrics.d.ts","sourceRoot":"","sources":["../../../src/sync/closure-metrics.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAIH,OAAO,EAAE,MAAM,EAAiB,MAAM,oBAAoB,CAAC;AAE3D,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,MAAM,GAAG,KAAK,CAAC;AAErD,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,YAAY,CAAC;IACnB,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,WAAW;IAC1B,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB;AAED,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,WAAW,CAAC;IACpB,IAAI,EAAE,WAAW,CAAC;IAClB,GAAG,EAAE,WAAW,CAAC;IACjB,OAAO,EAAE;QACP,aAAa,EAAE,MAAM,CAAC;QACtB,UAAU,EAAE,MAAM,CAAC;QACnB,MAAM,EAAE,MAAM,CAAC;QACf,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;IACF,WAAW,EAAE,MAAM,CAAC;CACrB;AAYD,qBAAa,cAAc;IACzB,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,kBAAkB,CAAS;IACnC,OAAO,CAAC,kBAAkB,CAAa;gBAE3B,OAAO,EAAE;QACnB,WAAW,EAAE,MAAM,CAAC;QACpB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB;IAYD;;OAEG;IACH,cAAc,IAAI,IAAI;IAItB;;OAEG;IACH,aAAa,CACX,IAAI,EAAE,YAAY,EAClB,MAAM,EAAE,MAAM,GAAG,MAAM,EACvB,OAAO,EAAE,OAAO,EAChB,KAAK,CAAC,EAAE,MAAM,GACb,IAAI;IAgCP;;OAEG;IACH,WAAW,CACT,IAAI,EAAE,YAAY,EAClB,OAAO,EAAE,KAAK,CAAC;QAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;QAAC,OAAO,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,GAC5E,IAAI;IAwBP;;OAEG;IACH,UAAU,IAAI,qBAAqB;IAKnC;;OAEG;IACH,iBAAiB,CAAC,KAAK,GAAE,MAAW,GAAG,aAAa,EAAE;IAStD;;OAEG;IACH,iBAAiB,CAAC,IAAI,EAAE,YAAY,EAAE,SAAS,GAAE,MAAY,GAAG,OAAO;IAavE;;OAEG;IACH,aAAa,IAAI,MAAM;IA2CvB;;OAEG;IACH,KAAK,IAAI,IAAI;IASb,OAAO,CAAC,WAAW;IAsBnB,OAAO,CAAC,WAAW;IAQnB,OAAO,CAAC,kBAAkB;IA2B1B,OAAO,CAAC,aAAa;CAyDtB;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,WAAW,EAAE,MAAM,EACnB,WAAW,CAAC,EAAE,MAAM,EACpB,MAAM,CAAC,EAAE,MAAM,GACd,cAAc,CAEhB"}