@cat-factory/app 0.35.0 → 0.37.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (87) hide show
  1. package/app/components/auth/UserMenu.vue +11 -1
  2. package/app/components/brainstorm/BrainstormWindow.vue +2 -1
  3. package/app/components/clarity/ClarityReviewWindow.vue +2 -1
  4. package/app/components/gates/GateResultView.vue +107 -12
  5. package/app/components/layout/IntegrationBackTitle.vue +12 -7
  6. package/app/components/layout/IntegrationsHub.vue +191 -43
  7. package/app/components/layout/NotificationsInbox.vue +16 -0
  8. package/app/components/layout/PersonalSetupModal.vue +141 -0
  9. package/app/components/pipeline/PipelineBuilder.vue +1 -1
  10. package/app/components/providers/VendorCredentialsModal.vue +7 -2
  11. package/app/components/slack/SlackPanel.vue +1 -0
  12. package/app/composables/api/accounts.ts +36 -51
  13. package/app/composables/api/auth.ts +20 -19
  14. package/app/composables/api/board.ts +60 -40
  15. package/app/composables/api/bootstrap.ts +25 -22
  16. package/app/composables/api/client.ts +102 -0
  17. package/app/composables/api/context.ts +25 -6
  18. package/app/composables/api/documents.ts +36 -34
  19. package/app/composables/api/execution.ts +65 -48
  20. package/app/composables/api/followUps.ts +26 -26
  21. package/app/composables/api/fragments.ts +47 -34
  22. package/app/composables/api/github.ts +65 -45
  23. package/app/composables/api/humanReview.ts +19 -0
  24. package/app/composables/api/humanTest.ts +15 -11
  25. package/app/composables/api/kaizen.ts +8 -6
  26. package/app/composables/api/localSettings.ts +5 -4
  27. package/app/composables/api/models.ts +58 -51
  28. package/app/composables/api/notifications.ts +13 -7
  29. package/app/composables/api/presets.ts +34 -28
  30. package/app/composables/api/providerConnections.ts +68 -26
  31. package/app/composables/api/recurring.ts +40 -30
  32. package/app/composables/api/releaseHealth.ts +28 -26
  33. package/app/composables/api/reviews.ts +136 -114
  34. package/app/composables/api/sandbox.ts +52 -34
  35. package/app/composables/api/slack.ts +22 -25
  36. package/app/composables/api/spec.ts +3 -3
  37. package/app/composables/api/tasks.ts +42 -41
  38. package/app/composables/api/userSecrets.ts +12 -17
  39. package/app/composables/api/workspaces.ts +21 -15
  40. package/app/composables/useApi.ts +11 -1
  41. package/app/composables/useIntegrationBack.ts +9 -3
  42. package/app/pages/index.vue +2 -0
  43. package/app/stores/auth.ts +2 -1
  44. package/app/stores/board.ts +2 -1
  45. package/app/stores/brainstorm.ts +2 -2
  46. package/app/stores/clarity.ts +6 -2
  47. package/app/stores/execution.ts +3 -2
  48. package/app/stores/github.ts +1 -2
  49. package/app/stores/humanReview.ts +41 -0
  50. package/app/stores/mergePresets.ts +2 -6
  51. package/app/stores/pipelines.ts +1 -1
  52. package/app/stores/recurringPipelines.ts +2 -7
  53. package/app/stores/sandbox.ts +1 -2
  54. package/app/stores/ui.ts +62 -19
  55. package/app/types/accountSettings.ts +11 -36
  56. package/app/types/accounts.ts +16 -71
  57. package/app/types/bootstrap.ts +13 -75
  58. package/app/types/brainstorm.ts +13 -38
  59. package/app/types/clarity.ts +12 -43
  60. package/app/types/consensus.ts +16 -89
  61. package/app/types/documents.ts +19 -94
  62. package/app/types/domain.ts +54 -582
  63. package/app/types/execution.ts +48 -499
  64. package/app/types/fragments.ts +15 -83
  65. package/app/types/github.ts +25 -161
  66. package/app/types/incidentEnrichment.ts +10 -25
  67. package/app/types/localModels.ts +11 -61
  68. package/app/types/localSettings.ts +9 -26
  69. package/app/types/merge.ts +10 -68
  70. package/app/types/model-presets.ts +7 -28
  71. package/app/types/models.ts +16 -164
  72. package/app/types/notifications.ts +18 -76
  73. package/app/types/openrouter.ts +8 -34
  74. package/app/types/providerConnections.ts +21 -41
  75. package/app/types/provisioningLogs.ts +9 -29
  76. package/app/types/recurring.ts +10 -63
  77. package/app/types/releaseHealth.ts +15 -39
  78. package/app/types/requirements.ts +14 -84
  79. package/app/types/sandbox.ts +45 -161
  80. package/app/types/services.ts +3 -22
  81. package/app/types/slack.ts +10 -47
  82. package/app/types/spec.ts +15 -68
  83. package/app/types/tasks.ts +15 -111
  84. package/app/types/tracker.ts +9 -24
  85. package/app/types/userSecrets.ts +12 -47
  86. package/app/utils/catalog.ts +12 -0
  87. package/package.json +9 -2
@@ -1,91 +1,18 @@
1
1
  // Frontend mirror of the consensus + task-estimate wire contracts in
2
2
  // `@cat-factory/contracts` (src/consensus.ts). Hand-synced, like the other type mirrors.
3
-
4
- export type ConsensusStrategy = 'specialist-panel' | 'debate' | 'ranked-voting'
5
-
6
- export interface ConsensusParticipant {
7
- id: string
8
- role: string
9
- systemFraming?: string
10
- modelId?: string
11
- }
12
-
13
- export interface ConsensusGating {
14
- enabled: boolean
15
- minComplexity?: number
16
- minRisk?: number
17
- minImpact?: number
18
- onMissingEstimate?: 'consensus' | 'standard'
19
- }
20
-
21
- /**
22
- * Estimate-based gating of whether a pipeline STEP runs at all (the same three axes as
23
- * {@link ConsensusGating}). When enabled the step runs only if ANY supplied axis is met or
24
- * exceeded; otherwise it is skipped at runtime. Used to make a companion conditional on how
25
- * heavy the task is. A step with enabled gating requires a `task-estimator` earlier in the
26
- * pipeline.
27
- */
28
- export interface StepGating {
29
- enabled: boolean
30
- minComplexity?: number
31
- minRisk?: number
32
- minImpact?: number
33
- onMissingEstimate?: 'run' | 'skip'
34
- }
35
-
36
- export interface ConsensusStepConfig {
37
- enabled: boolean
38
- strategy: ConsensusStrategy
39
- participants: ConsensusParticipant[]
40
- synthesizerModelId?: string
41
- rounds?: number
42
- gating?: ConsensusGating
43
- }
44
-
45
- /** The task-estimator's triage of a task (each axis 0..1). */
46
- export interface TaskEstimate {
47
- complexity: number
48
- risk: number
49
- impact: number
50
- rationale: string
51
- model?: string | null
52
- createdAt: number
53
- }
54
-
55
- export interface ConsensusScore {
56
- dimension: string
57
- value: number
58
- rationale?: string
59
- }
60
-
61
- export interface ConsensusContribution {
62
- participantId: string
63
- text: string
64
- scores?: ConsensusScore[]
65
- }
66
-
67
- export interface ConsensusRound {
68
- index: number
69
- kind?: 'draft' | 'critique' | 'score'
70
- contributions: ConsensusContribution[]
71
- }
72
-
73
- export type ConsensusSessionStatus = 'running' | 'synthesizing' | 'done' | 'failed'
74
-
75
- export interface ConsensusSession {
76
- id: string
77
- blockId: string
78
- executionId: string | null
79
- stepIndex: number
80
- agentKind: string
81
- strategy: ConsensusStrategy
82
- status: ConsensusSessionStatus
83
- participants: ConsensusParticipant[]
84
- rounds: ConsensusRound[]
85
- synthesis: string | null
86
- confidence?: number | null
87
- dissent?: string[]
88
- error?: string | null
89
- createdAt: number
90
- updatedAt: number
91
- }
3
+ //
4
+ // All wire shapes are sourced from @cat-factory/contracts (single source of truth).
5
+
6
+ export type {
7
+ ConsensusStrategy,
8
+ ConsensusParticipant,
9
+ ConsensusGating,
10
+ StepGating,
11
+ ConsensusStepConfig,
12
+ TaskEstimate,
13
+ ConsensusScore,
14
+ ConsensusContribution,
15
+ ConsensusRound,
16
+ ConsensusSessionStatus,
17
+ ConsensusSession,
18
+ } from '@cat-factory/contracts'
@@ -1,102 +1,27 @@
1
1
  // ---------------------------------------------------------------------------
2
2
  // Document-source integration. Requirements / RFCs / PRDs imported from external
3
3
  // sources (Confluence, Notion, …) can be expanded into board structure or
4
- // attached to a task as agent context. These mirror the `@cat-factory/contracts`
5
- // document schemas; the abstraction is source-agnostic, keyed by `source`.
4
+ // attached to a task as agent context.
5
+ //
6
+ // All wire shapes are sourced from @cat-factory/contracts (single source of
7
+ // truth). `SpawnResult` has no exported contract type (the contract models it
8
+ // inline), so it stays frontend-only below.
6
9
  // ---------------------------------------------------------------------------
7
10
 
8
- import type { BlockType } from './domain'
9
-
10
- /** The external document sources cat-factory can link to. */
11
- export type DocumentSourceKind = 'confluence' | 'notion' | 'github'
12
-
13
- /** One credential a provider needs to connect (rendered as a form field). */
14
- export interface CredentialField {
15
- key: string
16
- label: string
17
- help?: string
18
- placeholder?: string
19
- secret?: boolean
20
- }
21
-
22
- /** A source's self-description: drives the generic connect + import UI. */
23
- export interface DocumentSourceDescriptor {
24
- source: DocumentSourceKind
25
- label: string
26
- /** Lucide icon name for the source. */
27
- icon: string
28
- credentialFields: CredentialField[]
29
- refLabel: string
30
- refPlaceholder: string
31
- /** Whether the source supports searching its catalogue by title/content. */
32
- searchable?: boolean
33
- }
34
-
35
- /** A workspace's connection to a document source (never carries credentials). */
36
- export interface DocumentConnection {
37
- source: DocumentSourceKind
38
- /** Human-friendly label for what we're connected to (site URL, workspace name). */
39
- label: string
40
- /** When the connection was established (epoch ms). */
41
- connectedAt: number
42
- }
43
-
44
- /** A page imported from a source into the workspace. */
45
- export interface SourceDocument {
46
- source: DocumentSourceKind
47
- /** The source's stable id for the page. */
48
- externalId: string
49
- title: string
50
- url: string
51
- /** Short plain-text preview of the page body. */
52
- excerpt: string
53
- /** The board block this document is attached to as context, if any. */
54
- linkedBlockId: string | null
55
- syncedAt: number
56
- }
57
-
58
- /** A lean hit from searching a document source's catalogue (not yet imported). */
59
- export interface DocumentSearchResult {
60
- source: DocumentSourceKind
61
- /** The source's stable id for the page (re-usable as an import ref). */
62
- externalId: string
63
- title: string
64
- url: string
65
- /** Short plain-text preview (may be empty). */
66
- excerpt: string
67
- }
68
-
69
- /** A proposed task within a planned frame/module. */
70
- export interface PlanTask {
71
- title: string
72
- description?: string
73
- }
74
-
75
- /** A proposed module grouping tasks within a planned frame. */
76
- export interface PlanModule {
77
- name: string
78
- tasks: PlanTask[]
79
- }
80
-
81
- /** A proposed top-level frame with its modules and loose tasks. */
82
- export interface PlanFrame {
83
- type: BlockType
84
- title: string
85
- description?: string
86
- modules: PlanModule[]
87
- tasks: PlanTask[]
88
- }
89
-
90
- /** A board structure extracted from an imported document. */
91
- export interface DocumentBoardPlan {
92
- source: DocumentSourceKind
93
- externalId: string
94
- /** Whether an LLM produced the plan or the deterministic heading parser did. */
95
- planner: 'llm' | 'headings'
96
- frames: PlanFrame[]
97
- }
98
-
99
- /** Counts of blocks created by spawning a plan onto the board. */
11
+ export type {
12
+ DocumentSourceKind,
13
+ CredentialField,
14
+ DocumentSourceDescriptor,
15
+ DocumentConnection,
16
+ SourceDocument,
17
+ DocumentSearchResult,
18
+ PlanTask,
19
+ PlanModule,
20
+ PlanFrame,
21
+ DocumentBoardPlan,
22
+ } from '@cat-factory/contracts'
23
+
24
+ /** Counts of blocks created by spawning a plan onto the board. Frontend-only. */
100
25
  export interface SpawnResult {
101
26
  frames: number
102
27
  modules: number