@contractspec/example.agent-console 3.7.6 → 3.7.7

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 (175) hide show
  1. package/.turbo/turbo-build.log +18 -18
  2. package/AGENTS.md +50 -31
  3. package/README.md +69 -77
  4. package/dist/agent/agent.event.js +1 -1
  5. package/dist/agent/agent.operation.js +1 -1
  6. package/dist/agent/index.d.ts +5 -5
  7. package/dist/agent/index.js +1 -1
  8. package/dist/browser/agent/agent.event.js +1 -1
  9. package/dist/browser/agent/agent.operation.js +1 -1
  10. package/dist/browser/agent/index.js +1 -1
  11. package/dist/browser/index.js +2145 -2145
  12. package/dist/browser/presentations/index.js +4 -4
  13. package/dist/browser/run/index.js +536 -536
  14. package/dist/browser/run/run.event.js +2 -2
  15. package/dist/browser/run/run.presentation.js +2 -2
  16. package/dist/browser/tool/index.js +260 -260
  17. package/dist/browser/tool/tool.event.js +1 -1
  18. package/dist/browser/tool/tool.presentation.js +2 -2
  19. package/dist/browser/ui/AgentDashboard.js +956 -956
  20. package/dist/browser/ui/AgentRunList.js +16 -16
  21. package/dist/browser/ui/AgentToolRegistry.js +9 -9
  22. package/dist/browser/ui/hooks/index.js +153 -153
  23. package/dist/browser/ui/hooks/useAgentList.js +1 -1
  24. package/dist/browser/ui/hooks/useAgentMutations.js +1 -1
  25. package/dist/browser/ui/hooks/useRunList.js +1 -1
  26. package/dist/browser/ui/hooks/useToolList.js +1 -1
  27. package/dist/browser/ui/index.js +1222 -1222
  28. package/dist/browser/ui/modals/AgentActionsModal.js +13 -13
  29. package/dist/browser/ui/modals/CreateAgentModal.js +15 -15
  30. package/dist/browser/ui/modals/index.js +297 -297
  31. package/dist/browser/ui/renderers/agent-list.renderer.js +7 -7
  32. package/dist/browser/ui/renderers/index.js +157 -157
  33. package/dist/browser/ui/views/AgentListView.js +7 -7
  34. package/dist/browser/ui/views/RunListView.js +16 -16
  35. package/dist/browser/ui/views/ToolRegistryView.js +9 -9
  36. package/dist/browser/ui/views/index.js +97 -97
  37. package/dist/handlers/index.d.ts +1 -1
  38. package/dist/index.d.ts +4 -4
  39. package/dist/index.js +2145 -2145
  40. package/dist/node/agent/agent.event.js +1 -1
  41. package/dist/node/agent/agent.operation.js +1 -1
  42. package/dist/node/agent/index.js +1 -1
  43. package/dist/node/index.js +2145 -2145
  44. package/dist/node/presentations/index.js +4 -4
  45. package/dist/node/run/index.js +536 -536
  46. package/dist/node/run/run.event.js +2 -2
  47. package/dist/node/run/run.presentation.js +2 -2
  48. package/dist/node/tool/index.js +260 -260
  49. package/dist/node/tool/tool.event.js +1 -1
  50. package/dist/node/tool/tool.presentation.js +2 -2
  51. package/dist/node/ui/AgentDashboard.js +956 -956
  52. package/dist/node/ui/AgentRunList.js +16 -16
  53. package/dist/node/ui/AgentToolRegistry.js +9 -9
  54. package/dist/node/ui/hooks/index.js +153 -153
  55. package/dist/node/ui/hooks/useAgentList.js +1 -1
  56. package/dist/node/ui/hooks/useAgentMutations.js +1 -1
  57. package/dist/node/ui/hooks/useRunList.js +1 -1
  58. package/dist/node/ui/hooks/useToolList.js +1 -1
  59. package/dist/node/ui/index.js +1222 -1222
  60. package/dist/node/ui/modals/AgentActionsModal.js +13 -13
  61. package/dist/node/ui/modals/CreateAgentModal.js +15 -15
  62. package/dist/node/ui/modals/index.js +297 -297
  63. package/dist/node/ui/renderers/agent-list.renderer.js +7 -7
  64. package/dist/node/ui/renderers/index.js +157 -157
  65. package/dist/node/ui/views/AgentListView.js +7 -7
  66. package/dist/node/ui/views/RunListView.js +16 -16
  67. package/dist/node/ui/views/ToolRegistryView.js +9 -9
  68. package/dist/node/ui/views/index.js +97 -97
  69. package/dist/presentations/index.d.ts +3 -5
  70. package/dist/presentations/index.js +4 -4
  71. package/dist/run/index.d.ts +7 -7
  72. package/dist/run/index.js +536 -536
  73. package/dist/run/run.event.js +2 -2
  74. package/dist/run/run.handler.d.ts +3 -0
  75. package/dist/run/run.presentation.js +2 -2
  76. package/dist/shared/index.d.ts +1 -1
  77. package/dist/tool/index.d.ts +7 -7
  78. package/dist/tool/index.js +260 -260
  79. package/dist/tool/tool.event.js +1 -1
  80. package/dist/tool/tool.handler.d.ts +1 -1
  81. package/dist/tool/tool.presentation.js +2 -2
  82. package/dist/ui/AgentDashboard.js +956 -956
  83. package/dist/ui/AgentRunList.js +16 -16
  84. package/dist/ui/AgentToolRegistry.js +9 -9
  85. package/dist/ui/hooks/index.d.ts +4 -4
  86. package/dist/ui/hooks/index.js +153 -153
  87. package/dist/ui/hooks/useAgentList.d.ts +5 -0
  88. package/dist/ui/hooks/useAgentList.js +1 -1
  89. package/dist/ui/hooks/useAgentMutations.d.ts +9 -2
  90. package/dist/ui/hooks/useAgentMutations.js +1 -1
  91. package/dist/ui/hooks/useRunList.d.ts +5 -0
  92. package/dist/ui/hooks/useRunList.js +1 -1
  93. package/dist/ui/hooks/useToolList.d.ts +5 -0
  94. package/dist/ui/hooks/useToolList.js +1 -1
  95. package/dist/ui/index.d.ts +3 -3
  96. package/dist/ui/index.js +1222 -1222
  97. package/dist/ui/modals/AgentActionsModal.js +13 -13
  98. package/dist/ui/modals/CreateAgentModal.js +15 -15
  99. package/dist/ui/modals/index.d.ts +1 -1
  100. package/dist/ui/modals/index.js +297 -297
  101. package/dist/ui/renderers/agent-list.markdown.d.ts +5 -0
  102. package/dist/ui/renderers/agent-list.renderer.js +7 -7
  103. package/dist/ui/renderers/dashboard.markdown.d.ts +5 -0
  104. package/dist/ui/renderers/index.d.ts +2 -2
  105. package/dist/ui/renderers/index.js +157 -157
  106. package/dist/ui/renderers/run-list.markdown.d.ts +5 -0
  107. package/dist/ui/renderers/tool-registry.markdown.d.ts +5 -0
  108. package/dist/ui/views/AgentListView.js +7 -7
  109. package/dist/ui/views/RunListView.js +16 -16
  110. package/dist/ui/views/ToolRegistryView.js +9 -9
  111. package/dist/ui/views/index.js +97 -97
  112. package/package.json +6 -6
  113. package/src/agent/agent.entity.ts +111 -111
  114. package/src/agent/agent.enum.ts +12 -12
  115. package/src/agent/agent.event.ts +91 -91
  116. package/src/agent/agent.handler.ts +123 -123
  117. package/src/agent/agent.operation.ts +400 -400
  118. package/src/agent/agent.presentation.ts +62 -62
  119. package/src/agent/agent.schema.ts +175 -175
  120. package/src/agent/agent.test-spec.ts +48 -48
  121. package/src/agent/index.ts +46 -51
  122. package/src/agent.capability.ts +11 -11
  123. package/src/agent.feature.ts +131 -131
  124. package/src/docs/agent-console.docblock.ts +42 -42
  125. package/src/example.ts +35 -35
  126. package/src/handlers/agent.handlers.ts +522 -521
  127. package/src/handlers/index.ts +12 -12
  128. package/src/index.ts +8 -9
  129. package/src/presentations/index.ts +11 -13
  130. package/src/run/index.ts +49 -54
  131. package/src/run/run.entity.ts +137 -137
  132. package/src/run/run.enum.ts +18 -18
  133. package/src/run/run.event.ts +174 -174
  134. package/src/run/run.handler.ts +92 -91
  135. package/src/run/run.operation.ts +474 -474
  136. package/src/run/run.presentation.ts +42 -42
  137. package/src/run/run.schema.ts +126 -126
  138. package/src/run/run.test-spec.ts +48 -48
  139. package/src/seeders/index.ts +21 -21
  140. package/src/shared/index.ts +1 -1
  141. package/src/shared/mock-agents.ts +76 -76
  142. package/src/shared/mock-runs.ts +102 -102
  143. package/src/shared/mock-tools.ts +140 -140
  144. package/src/shared/overlay-types.ts +23 -23
  145. package/src/tool/index.ts +39 -44
  146. package/src/tool/tool.entity.ts +73 -73
  147. package/src/tool/tool.enum.ts +13 -13
  148. package/src/tool/tool.event.ts +80 -80
  149. package/src/tool/tool.handler.ts +102 -102
  150. package/src/tool/tool.operation.ts +328 -328
  151. package/src/tool/tool.presentation.ts +43 -43
  152. package/src/tool/tool.schema.ts +106 -106
  153. package/src/tool/tool.test-spec.ts +48 -48
  154. package/src/ui/AgentDashboard.tsx +348 -348
  155. package/src/ui/hooks/index.ts +7 -7
  156. package/src/ui/hooks/useAgentList.ts +57 -56
  157. package/src/ui/hooks/useAgentMutations.ts +160 -159
  158. package/src/ui/hooks/useRunList.ts +58 -57
  159. package/src/ui/hooks/useToolList.ts +102 -101
  160. package/src/ui/index.ts +6 -9
  161. package/src/ui/modals/AgentActionsModal.tsx +262 -262
  162. package/src/ui/modals/CreateAgentModal.tsx +232 -232
  163. package/src/ui/modals/index.ts +1 -1
  164. package/src/ui/overlays/demo-overlays.ts +52 -52
  165. package/src/ui/renderers/agent-list.markdown.ts +61 -60
  166. package/src/ui/renderers/agent-list.renderer.tsx +14 -14
  167. package/src/ui/renderers/dashboard.markdown.ts +140 -139
  168. package/src/ui/renderers/index.ts +3 -4
  169. package/src/ui/renderers/run-list.markdown.ts +48 -47
  170. package/src/ui/renderers/tool-registry.markdown.ts +66 -65
  171. package/src/ui/views/AgentListView.tsx +90 -90
  172. package/src/ui/views/RunListView.tsx +141 -141
  173. package/src/ui/views/ToolRegistryView.tsx +113 -113
  174. package/tsconfig.json +7 -8
  175. package/tsdown.config.js +7 -3
@@ -1,6 +1,6 @@
1
1
  import {
2
- StabilityEnum,
3
- definePresentation,
2
+ definePresentation,
3
+ StabilityEnum,
4
4
  } from '@contractspec/lib.contracts-spec';
5
5
  import { RunSummaryModel } from './run.schema';
6
6
 
@@ -8,50 +8,50 @@ import { RunSummaryModel } from './run.schema';
8
8
  * Presentation for displaying a list of agent runs.
9
9
  */
10
10
  export const RunListPresentation = definePresentation({
11
- meta: {
12
- key: 'agent-console.run.list',
13
- version: '1.0.0',
14
- title: 'Run List',
15
- description:
16
- 'List view of agent runs with status, tokens, and duration info',
17
- goal: 'Provide an overview of agent execution history and performance.',
18
- context: 'Run history dashboard.',
19
- domain: 'agent-console',
20
- owners: ['@agent-console-team'],
21
- tags: ['run', 'list', 'dashboard'],
22
- stability: StabilityEnum.Experimental,
23
- },
24
- source: {
25
- type: 'component',
26
- framework: 'react',
27
- componentKey: 'RunListView',
28
- props: RunSummaryModel,
29
- },
30
- targets: ['react', 'markdown', 'application/json'],
31
- policy: { flags: ['agent-console.enabled'] },
11
+ meta: {
12
+ key: 'agent-console.run.list',
13
+ version: '1.0.0',
14
+ title: 'Run List',
15
+ description:
16
+ 'List view of agent runs with status, tokens, and duration info',
17
+ goal: 'Provide an overview of agent execution history and performance.',
18
+ context: 'Run history dashboard.',
19
+ domain: 'agent-console',
20
+ owners: ['@agent-console-team'],
21
+ tags: ['run', 'list', 'dashboard'],
22
+ stability: StabilityEnum.Experimental,
23
+ },
24
+ source: {
25
+ type: 'component',
26
+ framework: 'react',
27
+ componentKey: 'RunListView',
28
+ props: RunSummaryModel,
29
+ },
30
+ targets: ['react', 'markdown', 'application/json'],
31
+ policy: { flags: ['agent-console.enabled'] },
32
32
  });
33
33
 
34
34
  /**
35
35
  * Presentation for run detail view.
36
36
  */
37
37
  export const RunDetailPresentation = definePresentation({
38
- meta: {
39
- key: 'agent-console.run.detail',
40
- version: '1.0.0',
41
- title: 'Run Details',
42
- description: 'Detailed view of an agent run with steps, logs, and metrics',
43
- goal: 'Allow users to inspect and debug a specific agent run.',
44
- context: 'Detailed view of an agent run.',
45
- domain: 'agent-console',
46
- owners: ['@agent-console-team'],
47
- tags: ['run', 'detail'],
48
- stability: StabilityEnum.Experimental,
49
- },
50
- source: {
51
- type: 'component',
52
- framework: 'react',
53
- componentKey: 'RunDetailView',
54
- },
55
- targets: ['react', 'markdown'],
56
- policy: { flags: ['agent-console.enabled'] },
38
+ meta: {
39
+ key: 'agent-console.run.detail',
40
+ version: '1.0.0',
41
+ title: 'Run Details',
42
+ description: 'Detailed view of an agent run with steps, logs, and metrics',
43
+ goal: 'Allow users to inspect and debug a specific agent run.',
44
+ context: 'Detailed view of an agent run.',
45
+ domain: 'agent-console',
46
+ owners: ['@agent-console-team'],
47
+ tags: ['run', 'detail'],
48
+ stability: StabilityEnum.Experimental,
49
+ },
50
+ source: {
51
+ type: 'component',
52
+ framework: 'react',
53
+ componentKey: 'RunDetailView',
54
+ },
55
+ targets: ['react', 'markdown'],
56
+ policy: { flags: ['agent-console.enabled'] },
57
57
  });
@@ -1,169 +1,169 @@
1
1
  import { defineSchemaModel, ScalarTypeEnum } from '@contractspec/lib.schema';
2
- import { RunStatusEnum, RunStepTypeEnum, LogLevelEnum } from './run.enum';
2
+ import { LogLevelEnum, RunStatusEnum, RunStepTypeEnum } from './run.enum';
3
3
 
4
4
  /**
5
5
  * Input data for agent execution.
6
6
  */
7
7
  export const RunInputModel = defineSchemaModel({
8
- name: 'RunInput',
9
- description: 'Input data for agent execution',
10
- fields: {
11
- message: { type: ScalarTypeEnum.NonEmptyString(), isOptional: false },
12
- context: { type: ScalarTypeEnum.JSONObject(), isOptional: true },
13
- },
8
+ name: 'RunInput',
9
+ description: 'Input data for agent execution',
10
+ fields: {
11
+ message: { type: ScalarTypeEnum.NonEmptyString(), isOptional: false },
12
+ context: { type: ScalarTypeEnum.JSONObject(), isOptional: true },
13
+ },
14
14
  });
15
15
 
16
16
  /**
17
17
  * Individual step within a run.
18
18
  */
19
19
  export const RunStepModel = defineSchemaModel({
20
- name: 'RunStep',
21
- description: 'Individual step within a run',
22
- fields: {
23
- id: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
24
- stepNumber: { type: ScalarTypeEnum.Int_unsecure(), isOptional: false },
25
- type: { type: RunStepTypeEnum, isOptional: false },
26
- toolId: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },
27
- toolName: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },
28
- input: { type: ScalarTypeEnum.JSONObject(), isOptional: true },
29
- output: { type: ScalarTypeEnum.JSONObject(), isOptional: true },
30
- status: { type: RunStatusEnum, isOptional: false },
31
- errorMessage: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },
32
- tokensUsed: {
33
- type: ScalarTypeEnum.Int_unsecure(),
34
- isOptional: false,
35
- defaultValue: 0,
36
- },
37
- durationMs: { type: ScalarTypeEnum.Int_unsecure(), isOptional: true },
38
- startedAt: { type: ScalarTypeEnum.DateTime(), isOptional: false },
39
- completedAt: { type: ScalarTypeEnum.DateTime(), isOptional: true },
40
- },
20
+ name: 'RunStep',
21
+ description: 'Individual step within a run',
22
+ fields: {
23
+ id: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
24
+ stepNumber: { type: ScalarTypeEnum.Int_unsecure(), isOptional: false },
25
+ type: { type: RunStepTypeEnum, isOptional: false },
26
+ toolId: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },
27
+ toolName: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },
28
+ input: { type: ScalarTypeEnum.JSONObject(), isOptional: true },
29
+ output: { type: ScalarTypeEnum.JSONObject(), isOptional: true },
30
+ status: { type: RunStatusEnum, isOptional: false },
31
+ errorMessage: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },
32
+ tokensUsed: {
33
+ type: ScalarTypeEnum.Int_unsecure(),
34
+ isOptional: false,
35
+ defaultValue: 0,
36
+ },
37
+ durationMs: { type: ScalarTypeEnum.Int_unsecure(), isOptional: true },
38
+ startedAt: { type: ScalarTypeEnum.DateTime(), isOptional: false },
39
+ completedAt: { type: ScalarTypeEnum.DateTime(), isOptional: true },
40
+ },
41
41
  });
42
42
 
43
43
  /**
44
44
  * Execution log entry.
45
45
  */
46
46
  export const RunLogModel = defineSchemaModel({
47
- name: 'RunLog',
48
- description: 'Execution log entry',
49
- fields: {
50
- id: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
51
- stepId: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },
52
- level: { type: LogLevelEnum, isOptional: false },
53
- message: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
54
- data: { type: ScalarTypeEnum.JSONObject(), isOptional: true },
55
- source: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },
56
- traceId: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },
57
- spanId: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },
58
- timestamp: { type: ScalarTypeEnum.DateTime(), isOptional: false },
59
- },
47
+ name: 'RunLog',
48
+ description: 'Execution log entry',
49
+ fields: {
50
+ id: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
51
+ stepId: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },
52
+ level: { type: LogLevelEnum, isOptional: false },
53
+ message: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
54
+ data: { type: ScalarTypeEnum.JSONObject(), isOptional: true },
55
+ source: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },
56
+ traceId: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },
57
+ spanId: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },
58
+ timestamp: { type: ScalarTypeEnum.DateTime(), isOptional: false },
59
+ },
60
60
  });
61
61
 
62
62
  /**
63
63
  * Agent reference in a run.
64
64
  */
65
65
  export const RunAgentRefModel = defineSchemaModel({
66
- name: 'RunAgentRef',
67
- description: 'Agent reference in a run',
68
- fields: {
69
- id: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
70
- name: { type: ScalarTypeEnum.NonEmptyString(), isOptional: false },
71
- modelProvider: {
72
- type: ScalarTypeEnum.String_unsecure(),
73
- isOptional: false,
74
- },
75
- modelName: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
76
- },
66
+ name: 'RunAgentRef',
67
+ description: 'Agent reference in a run',
68
+ fields: {
69
+ id: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
70
+ name: { type: ScalarTypeEnum.NonEmptyString(), isOptional: false },
71
+ modelProvider: {
72
+ type: ScalarTypeEnum.String_unsecure(),
73
+ isOptional: false,
74
+ },
75
+ modelName: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
76
+ },
77
77
  });
78
78
 
79
79
  /**
80
80
  * Agent execution instance.
81
81
  */
82
82
  export const RunModel = defineSchemaModel({
83
- name: 'Run',
84
- description: 'Agent execution instance',
85
- fields: {
86
- id: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
87
- organizationId: {
88
- type: ScalarTypeEnum.String_unsecure(),
89
- isOptional: false,
90
- },
91
- agentId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
92
- userId: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },
93
- sessionId: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },
94
- input: { type: ScalarTypeEnum.JSONObject(), isOptional: false },
95
- output: { type: ScalarTypeEnum.JSONObject(), isOptional: true },
96
- status: { type: RunStatusEnum, isOptional: false },
97
- errorMessage: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },
98
- errorCode: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },
99
- totalTokens: {
100
- type: ScalarTypeEnum.Int_unsecure(),
101
- isOptional: false,
102
- defaultValue: 0,
103
- },
104
- promptTokens: {
105
- type: ScalarTypeEnum.Int_unsecure(),
106
- isOptional: false,
107
- defaultValue: 0,
108
- },
109
- completionTokens: {
110
- type: ScalarTypeEnum.Int_unsecure(),
111
- isOptional: false,
112
- defaultValue: 0,
113
- },
114
- totalIterations: {
115
- type: ScalarTypeEnum.Int_unsecure(),
116
- isOptional: false,
117
- defaultValue: 0,
118
- },
119
- durationMs: { type: ScalarTypeEnum.Int_unsecure(), isOptional: true },
120
- estimatedCostUsd: {
121
- type: ScalarTypeEnum.Float_unsecure(),
122
- isOptional: true,
123
- },
124
- queuedAt: { type: ScalarTypeEnum.DateTime(), isOptional: false },
125
- startedAt: { type: ScalarTypeEnum.DateTime(), isOptional: true },
126
- completedAt: { type: ScalarTypeEnum.DateTime(), isOptional: true },
127
- metadata: { type: ScalarTypeEnum.JSONObject(), isOptional: true },
128
- steps: { type: RunStepModel, isArray: true, isOptional: true },
129
- logs: { type: RunLogModel, isArray: true, isOptional: true },
130
- agent: { type: RunAgentRefModel, isOptional: true },
131
- },
83
+ name: 'Run',
84
+ description: 'Agent execution instance',
85
+ fields: {
86
+ id: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
87
+ organizationId: {
88
+ type: ScalarTypeEnum.String_unsecure(),
89
+ isOptional: false,
90
+ },
91
+ agentId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
92
+ userId: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },
93
+ sessionId: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },
94
+ input: { type: ScalarTypeEnum.JSONObject(), isOptional: false },
95
+ output: { type: ScalarTypeEnum.JSONObject(), isOptional: true },
96
+ status: { type: RunStatusEnum, isOptional: false },
97
+ errorMessage: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },
98
+ errorCode: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },
99
+ totalTokens: {
100
+ type: ScalarTypeEnum.Int_unsecure(),
101
+ isOptional: false,
102
+ defaultValue: 0,
103
+ },
104
+ promptTokens: {
105
+ type: ScalarTypeEnum.Int_unsecure(),
106
+ isOptional: false,
107
+ defaultValue: 0,
108
+ },
109
+ completionTokens: {
110
+ type: ScalarTypeEnum.Int_unsecure(),
111
+ isOptional: false,
112
+ defaultValue: 0,
113
+ },
114
+ totalIterations: {
115
+ type: ScalarTypeEnum.Int_unsecure(),
116
+ isOptional: false,
117
+ defaultValue: 0,
118
+ },
119
+ durationMs: { type: ScalarTypeEnum.Int_unsecure(), isOptional: true },
120
+ estimatedCostUsd: {
121
+ type: ScalarTypeEnum.Float_unsecure(),
122
+ isOptional: true,
123
+ },
124
+ queuedAt: { type: ScalarTypeEnum.DateTime(), isOptional: false },
125
+ startedAt: { type: ScalarTypeEnum.DateTime(), isOptional: true },
126
+ completedAt: { type: ScalarTypeEnum.DateTime(), isOptional: true },
127
+ metadata: { type: ScalarTypeEnum.JSONObject(), isOptional: true },
128
+ steps: { type: RunStepModel, isArray: true, isOptional: true },
129
+ logs: { type: RunLogModel, isArray: true, isOptional: true },
130
+ agent: { type: RunAgentRefModel, isOptional: true },
131
+ },
132
132
  });
133
133
 
134
134
  /**
135
135
  * Summary of a run for list views.
136
136
  */
137
137
  export const RunSummaryModel = defineSchemaModel({
138
- name: 'RunSummary',
139
- description: 'Summary of a run for list views',
140
- fields: {
141
- id: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
142
- agentId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
143
- agentName: { type: ScalarTypeEnum.NonEmptyString(), isOptional: false },
144
- status: { type: RunStatusEnum, isOptional: false },
145
- totalTokens: { type: ScalarTypeEnum.Int_unsecure(), isOptional: false },
146
- durationMs: { type: ScalarTypeEnum.Int_unsecure(), isOptional: true },
147
- estimatedCostUsd: {
148
- type: ScalarTypeEnum.Float_unsecure(),
149
- isOptional: true,
150
- },
151
- queuedAt: { type: ScalarTypeEnum.DateTime(), isOptional: false },
152
- completedAt: { type: ScalarTypeEnum.DateTime(), isOptional: true },
153
- },
138
+ name: 'RunSummary',
139
+ description: 'Summary of a run for list views',
140
+ fields: {
141
+ id: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
142
+ agentId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
143
+ agentName: { type: ScalarTypeEnum.NonEmptyString(), isOptional: false },
144
+ status: { type: RunStatusEnum, isOptional: false },
145
+ totalTokens: { type: ScalarTypeEnum.Int_unsecure(), isOptional: false },
146
+ durationMs: { type: ScalarTypeEnum.Int_unsecure(), isOptional: true },
147
+ estimatedCostUsd: {
148
+ type: ScalarTypeEnum.Float_unsecure(),
149
+ isOptional: true,
150
+ },
151
+ queuedAt: { type: ScalarTypeEnum.DateTime(), isOptional: false },
152
+ completedAt: { type: ScalarTypeEnum.DateTime(), isOptional: true },
153
+ },
154
154
  });
155
155
 
156
156
  /**
157
157
  * Timeline data point for metrics.
158
158
  */
159
159
  export const TimelineDataPointModel = defineSchemaModel({
160
- name: 'TimelineDataPoint',
161
- description: 'Timeline data point for metrics',
162
- fields: {
163
- period: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
164
- runs: { type: ScalarTypeEnum.Int_unsecure(), isOptional: false },
165
- tokens: { type: ScalarTypeEnum.Int_unsecure(), isOptional: false },
166
- costUsd: { type: ScalarTypeEnum.Float_unsecure(), isOptional: false },
167
- avgDurationMs: { type: ScalarTypeEnum.Float_unsecure(), isOptional: false },
168
- },
160
+ name: 'TimelineDataPoint',
161
+ description: 'Timeline data point for metrics',
162
+ fields: {
163
+ period: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
164
+ runs: { type: ScalarTypeEnum.Int_unsecure(), isOptional: false },
165
+ tokens: { type: ScalarTypeEnum.Int_unsecure(), isOptional: false },
166
+ costUsd: { type: ScalarTypeEnum.Float_unsecure(), isOptional: false },
167
+ avgDurationMs: { type: ScalarTypeEnum.Float_unsecure(), isOptional: false },
168
+ },
169
169
  });
@@ -1,55 +1,55 @@
1
1
  import { defineTestSpec } from '@contractspec/lib.contracts-spec/tests';
2
2
 
3
3
  export const runListTest = defineTestSpec({
4
- meta: {
5
- key: 'test.agent.run.list',
6
- version: '1.0.0',
7
- owners: ['@agent-console-team'],
8
- description: 'Test for listing runs',
9
- stability: 'stable',
10
- tags: ['test'],
11
- },
12
- target: {
13
- type: 'operation',
14
- operation: { key: 'agent.run.list', version: '1.0.0' },
15
- },
16
- scenarios: [
17
- {
18
- key: 'success',
19
- when: { operation: { key: 'agent.run.list' } },
20
- then: [{ type: 'expectOutput', match: {} }],
21
- },
22
- {
23
- key: 'error',
24
- when: { operation: { key: 'agent.run.list' } },
25
- then: [{ type: 'expectError' }],
26
- },
27
- ],
4
+ meta: {
5
+ key: 'test.agent.run.list',
6
+ version: '1.0.0',
7
+ owners: ['@agent-console-team'],
8
+ description: 'Test for listing runs',
9
+ stability: 'stable',
10
+ tags: ['test'],
11
+ },
12
+ target: {
13
+ type: 'operation',
14
+ operation: { key: 'agent.run.list', version: '1.0.0' },
15
+ },
16
+ scenarios: [
17
+ {
18
+ key: 'success',
19
+ when: { operation: { key: 'agent.run.list' } },
20
+ then: [{ type: 'expectOutput', match: {} }],
21
+ },
22
+ {
23
+ key: 'error',
24
+ when: { operation: { key: 'agent.run.list' } },
25
+ then: [{ type: 'expectError' }],
26
+ },
27
+ ],
28
28
  });
29
29
 
30
30
  export const runGetTest = defineTestSpec({
31
- meta: {
32
- key: 'test.agent.run.get',
33
- version: '1.0.0',
34
- owners: ['@agent-console-team'],
35
- description: 'Test for getting run',
36
- stability: 'stable',
37
- tags: ['test'],
38
- },
39
- target: {
40
- type: 'operation',
41
- operation: { key: 'agent.run.get', version: '1.0.0' },
42
- },
43
- scenarios: [
44
- {
45
- key: 'success',
46
- when: { operation: { key: 'agent.run.get' } },
47
- then: [{ type: 'expectOutput', match: {} }],
48
- },
49
- {
50
- key: 'error',
51
- when: { operation: { key: 'agent.run.get' } },
52
- then: [{ type: 'expectError' }],
53
- },
54
- ],
31
+ meta: {
32
+ key: 'test.agent.run.get',
33
+ version: '1.0.0',
34
+ owners: ['@agent-console-team'],
35
+ description: 'Test for getting run',
36
+ stability: 'stable',
37
+ tags: ['test'],
38
+ },
39
+ target: {
40
+ type: 'operation',
41
+ operation: { key: 'agent.run.get', version: '1.0.0' },
42
+ },
43
+ scenarios: [
44
+ {
45
+ key: 'success',
46
+ when: { operation: { key: 'agent.run.get' } },
47
+ then: [{ type: 'expectOutput', match: {} }],
48
+ },
49
+ {
50
+ key: 'error',
51
+ when: { operation: { key: 'agent.run.get' } },
52
+ then: [{ type: 'expectError' }],
53
+ },
54
+ ],
55
55
  });
@@ -1,29 +1,29 @@
1
1
  import type { DatabasePort } from '@contractspec/lib.runtime-sandbox';
2
2
 
3
3
  export async function seedAgentConsole(params: {
4
- projectId: string;
5
- db: DatabasePort;
4
+ projectId: string;
5
+ db: DatabasePort;
6
6
  }) {
7
- const { projectId, db } = params;
7
+ const { projectId, db } = params;
8
8
 
9
- const existing = await db.query(
10
- `SELECT COUNT(*) as count FROM agent_definition WHERE "projectId" = $1`,
11
- [projectId]
12
- );
13
- if ((existing.rows[0]?.count as number) > 0) return;
9
+ const existing = await db.query(
10
+ `SELECT COUNT(*) as count FROM agent_definition WHERE "projectId" = $1`,
11
+ [projectId]
12
+ );
13
+ if ((existing.rows[0]?.count as number) > 0) return;
14
14
 
15
- await db.execute(
16
- `INSERT INTO agent_definition (id, "projectId", "organizationId", name, description, "modelProvider", "modelName", status)
15
+ await db.execute(
16
+ `INSERT INTO agent_definition (id, "projectId", "organizationId", name, description, "modelProvider", "modelName", status)
17
17
  VALUES ($1, $2, $3, $4, $5, $6, $7, $8)`,
18
- [
19
- 'agent_1',
20
- projectId,
21
- 'org_demo',
22
- 'Demo Agent',
23
- 'A demo AI agent',
24
- 'openai',
25
- 'gpt-4',
26
- 'ACTIVE',
27
- ]
28
- );
18
+ [
19
+ 'agent_1',
20
+ projectId,
21
+ 'org_demo',
22
+ 'Demo Agent',
23
+ 'A demo AI agent',
24
+ 'openai',
25
+ 'gpt-4',
26
+ 'ACTIVE',
27
+ ]
28
+ );
29
29
  }
@@ -2,5 +2,5 @@
2
2
  * Shared utilities and mock data.
3
3
  */
4
4
  export { MOCK_AGENTS } from './mock-agents';
5
- export { MOCK_TOOLS } from './mock-tools';
6
5
  export { MOCK_RUNS } from './mock-runs';
6
+ export { MOCK_TOOLS } from './mock-tools';