@cratis/ai 2.14.2 → 2.16.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 (111) hide show
  1. package/dist/cjs/generated/Harnesses/Harness.js +1 -1
  2. package/dist/cjs/generated/Harnesses/Harness.js.map +1 -1
  3. package/dist/cjs/generated/Providers/Adding/AddAnthropicProvider.js +75 -0
  4. package/dist/cjs/generated/Providers/Adding/AddAnthropicProvider.js.map +1 -0
  5. package/dist/cjs/generated/Providers/Adding/AddAzureOpenAIProvider.js +86 -0
  6. package/dist/cjs/generated/Providers/Adding/AddAzureOpenAIProvider.js.map +1 -0
  7. package/dist/cjs/generated/Providers/Adding/AddOpenAICompatibleProvider.js +86 -0
  8. package/dist/cjs/generated/Providers/Adding/AddOpenAICompatibleProvider.js.map +1 -0
  9. package/dist/cjs/generated/Providers/Adding/AddOpenAIProvider.js +75 -0
  10. package/dist/cjs/generated/Providers/Adding/AddOpenAIProvider.js.map +1 -0
  11. package/dist/cjs/generated/Providers/Adding/AddZAIProvider.js +86 -0
  12. package/dist/cjs/generated/Providers/Adding/AddZAIProvider.js.map +1 -0
  13. package/dist/cjs/generated/Providers/Removing/RemoveAIProvider.js +45 -0
  14. package/dist/cjs/generated/Providers/Removing/RemoveAIProvider.js.map +1 -0
  15. package/dist/cjs/generated/Providers/Renaming/RenameAIProvider.js +56 -0
  16. package/dist/cjs/generated/Providers/Renaming/RenameAIProvider.js.map +1 -0
  17. package/dist/cjs/generated/Usage/Daily/AgentUsageByDay.js +14 -0
  18. package/dist/cjs/generated/Usage/Daily/AgentUsageByDay.js.map +1 -1
  19. package/dist/cjs/generated/Usage/Daily/LastYear.js +1 -1
  20. package/dist/cjs/generated/Usage/Daily/LastYear.js.map +1 -1
  21. package/dist/cjs/generated/Usage/RecordAgentSessionUsage.js +1 -1
  22. package/dist/cjs/generated/Usage/RecordAgentSessionUsage.js.map +1 -1
  23. package/dist/cjs/generated/Usage/Trends/AgentUsageByMonth.js.map +1 -1
  24. package/dist/cjs/generated/Usage/Trends/AgentUsageByWeek.js.map +1 -1
  25. package/dist/cjs/generated/Usage/Trends/RecentMonths.js +1 -1
  26. package/dist/cjs/generated/Usage/Trends/RecentMonths.js.map +1 -1
  27. package/dist/cjs/generated/Usage/Trends/RecentWeeks.js +1 -1
  28. package/dist/cjs/generated/Usage/Trends/RecentWeeks.js.map +1 -1
  29. package/dist/cjs/index.js +19 -0
  30. package/dist/cjs/index.js.map +1 -1
  31. package/dist/esm/generated/Harnesses/Harness.js +1 -1
  32. package/dist/esm/generated/Harnesses/Harness.js.map +1 -1
  33. package/dist/esm/generated/Providers/Adding/AddAnthropicProvider.d.ts +32 -0
  34. package/dist/esm/generated/Providers/Adding/AddAnthropicProvider.d.ts.map +1 -0
  35. package/dist/esm/generated/Providers/Adding/AddAnthropicProvider.js +72 -0
  36. package/dist/esm/generated/Providers/Adding/AddAnthropicProvider.js.map +1 -0
  37. package/dist/esm/generated/Providers/Adding/AddAzureOpenAIProvider.d.ts +36 -0
  38. package/dist/esm/generated/Providers/Adding/AddAzureOpenAIProvider.d.ts.map +1 -0
  39. package/dist/esm/generated/Providers/Adding/AddAzureOpenAIProvider.js +83 -0
  40. package/dist/esm/generated/Providers/Adding/AddAzureOpenAIProvider.js.map +1 -0
  41. package/dist/esm/generated/Providers/Adding/AddOpenAICompatibleProvider.d.ts +36 -0
  42. package/dist/esm/generated/Providers/Adding/AddOpenAICompatibleProvider.d.ts.map +1 -0
  43. package/dist/esm/generated/Providers/Adding/AddOpenAICompatibleProvider.js +83 -0
  44. package/dist/esm/generated/Providers/Adding/AddOpenAICompatibleProvider.js.map +1 -0
  45. package/dist/esm/generated/Providers/Adding/AddOpenAIProvider.d.ts +32 -0
  46. package/dist/esm/generated/Providers/Adding/AddOpenAIProvider.d.ts.map +1 -0
  47. package/dist/esm/generated/Providers/Adding/AddOpenAIProvider.js +72 -0
  48. package/dist/esm/generated/Providers/Adding/AddOpenAIProvider.js.map +1 -0
  49. package/dist/esm/generated/Providers/Adding/AddZAIProvider.d.ts +36 -0
  50. package/dist/esm/generated/Providers/Adding/AddZAIProvider.d.ts.map +1 -0
  51. package/dist/esm/generated/Providers/Adding/AddZAIProvider.js +83 -0
  52. package/dist/esm/generated/Providers/Adding/AddZAIProvider.js.map +1 -0
  53. package/dist/esm/generated/Providers/Adding/index.d.ts +6 -0
  54. package/dist/esm/generated/Providers/Adding/index.d.ts.map +1 -0
  55. package/dist/esm/generated/Providers/Adding/index.js +6 -0
  56. package/dist/esm/generated/Providers/Adding/index.js.map +1 -0
  57. package/dist/esm/generated/Providers/Removing/RemoveAIProvider.d.ts +20 -0
  58. package/dist/esm/generated/Providers/Removing/RemoveAIProvider.d.ts.map +1 -0
  59. package/dist/esm/generated/Providers/Removing/RemoveAIProvider.js +43 -0
  60. package/dist/esm/generated/Providers/Removing/RemoveAIProvider.js.map +1 -0
  61. package/dist/esm/generated/Providers/Removing/index.d.ts +2 -0
  62. package/dist/esm/generated/Providers/Removing/index.d.ts.map +1 -0
  63. package/dist/esm/generated/Providers/Removing/index.js +2 -0
  64. package/dist/esm/generated/Providers/Removing/index.js.map +1 -0
  65. package/dist/esm/generated/Providers/Renaming/RenameAIProvider.d.ts +24 -0
  66. package/dist/esm/generated/Providers/Renaming/RenameAIProvider.d.ts.map +1 -0
  67. package/dist/esm/generated/Providers/Renaming/RenameAIProvider.js +54 -0
  68. package/dist/esm/generated/Providers/Renaming/RenameAIProvider.js.map +1 -0
  69. package/dist/esm/generated/Providers/Renaming/index.d.ts +2 -0
  70. package/dist/esm/generated/Providers/Renaming/index.d.ts.map +1 -0
  71. package/dist/esm/generated/Providers/Renaming/index.js +2 -0
  72. package/dist/esm/generated/Providers/Renaming/index.js.map +1 -0
  73. package/dist/esm/generated/Usage/Daily/AgentUsageByDay.d.ts +2 -0
  74. package/dist/esm/generated/Usage/Daily/AgentUsageByDay.d.ts.map +1 -1
  75. package/dist/esm/generated/Usage/Daily/AgentUsageByDay.js +14 -0
  76. package/dist/esm/generated/Usage/Daily/AgentUsageByDay.js.map +1 -1
  77. package/dist/esm/generated/Usage/Daily/LastYear.js +1 -1
  78. package/dist/esm/generated/Usage/Daily/LastYear.js.map +1 -1
  79. package/dist/esm/generated/Usage/RecordAgentSessionUsage.js +1 -1
  80. package/dist/esm/generated/Usage/RecordAgentSessionUsage.js.map +1 -1
  81. package/dist/esm/generated/Usage/Trends/AgentUsageByMonth.js.map +1 -1
  82. package/dist/esm/generated/Usage/Trends/AgentUsageByWeek.js.map +1 -1
  83. package/dist/esm/generated/Usage/Trends/RecentMonths.js +1 -1
  84. package/dist/esm/generated/Usage/Trends/RecentMonths.js.map +1 -1
  85. package/dist/esm/generated/Usage/Trends/RecentWeeks.js +1 -1
  86. package/dist/esm/generated/Usage/Trends/RecentWeeks.js.map +1 -1
  87. package/dist/esm/index.d.ts +3 -0
  88. package/dist/esm/index.d.ts.map +1 -1
  89. package/dist/esm/index.js +7 -0
  90. package/dist/esm/index.js.map +1 -1
  91. package/dist/esm/tsconfig.tsbuildinfo +1 -1
  92. package/generated/Harnesses/Harness.ts +1 -1
  93. package/generated/Providers/Adding/AddAnthropicProvider.ts +108 -0
  94. package/generated/Providers/Adding/AddAzureOpenAIProvider.ts +126 -0
  95. package/generated/Providers/Adding/AddOpenAICompatibleProvider.ts +126 -0
  96. package/generated/Providers/Adding/AddOpenAIProvider.ts +108 -0
  97. package/generated/Providers/Adding/AddZAIProvider.ts +126 -0
  98. package/generated/Providers/Adding/index.ts +5 -0
  99. package/generated/Providers/Removing/RemoveAIProvider.ts +65 -0
  100. package/generated/Providers/Removing/index.ts +1 -0
  101. package/generated/Providers/Renaming/RenameAIProvider.ts +83 -0
  102. package/generated/Providers/Renaming/index.ts +1 -0
  103. package/generated/Usage/Daily/AgentUsageByDay.ts +13 -1
  104. package/generated/Usage/Daily/LastYear.ts +1 -1
  105. package/generated/Usage/RecordAgentSessionUsage.ts +1 -1
  106. package/generated/Usage/Trends/AgentUsageByMonth.ts +1 -1
  107. package/generated/Usage/Trends/AgentUsageByWeek.ts +1 -1
  108. package/generated/Usage/Trends/RecentMonths.ts +1 -1
  109. package/generated/Usage/Trends/RecentWeeks.ts +1 -1
  110. package/index.ts +3 -0
  111. package/package.json +1 -1
@@ -1,4 +1,4 @@
1
- // @generated by Cratis. Source: Cratis.AI.Harnesses.Harness. Time: 2026-09-15T10:09:54.5261233Z. Hash: 998FE1093B65276DB88F2E4904A3A48FB362909D1A150190218015501F903174
1
+ // @generated by Cratis. Source: Cratis.AI.Harnesses.Harness. Time: 2026-09-15T16:07:35.1519026Z. Hash: 998FE1093B65276DB88F2E4904A3A48FB362909D1A150190218015501F903174
2
2
  /*---------------------------------------------------------------------------------------------
3
3
  * **DO NOT EDIT** - This file is an automatically generated file.
4
4
  *--------------------------------------------------------------------------------------------*/
@@ -0,0 +1,108 @@
1
+ // @generated by Cratis. Source: Cratis.AI.Providers.Adding.AddAnthropicProvider. Time: 2026-09-15T16:07:34.9586641Z. Hash: 45C4374EF90677C9573682C70DC0914E035118CA581A3D6ED904A059A5DEF8D8
2
+ /*---------------------------------------------------------------------------------------------
3
+ * **DO NOT EDIT** - This file is an automatically generated file.
4
+ *--------------------------------------------------------------------------------------------*/
5
+
6
+ /* eslint-disable sort-imports */
7
+ /* eslint-disable @typescript-eslint/no-empty-interface */
8
+ // eslint-disable-next-line header/header
9
+ import { Command, CommandValidator } from '@cratis/arc/commands';
10
+ import { useCommand, SetCommandValues, ClearCommandValues } from '@cratis/arc.react/commands';
11
+ import { PropertyDescriptor } from '@cratis/arc/reflection';
12
+ import { Guid } from '@cratis/fundamentals';
13
+
14
+ /**
15
+ * Command for adding an Anthropic AI provider - a named API key, callable from any agent that picks it. Ported from Direct's `AIProviders.Adding.AddAnthropicProvider` (plan Section 5.2 step 4), rewired onto the package's own {@link ISecretProtector} in place of Direct's tenant-scoped `ISecurityTokenProtector`.
16
+ */
17
+ export interface IAddAnthropicProvider {
18
+
19
+ /**
20
+ * The Anthropic API key.
21
+ */
22
+ apiKey?: string;
23
+
24
+ /**
25
+ * How many worker sessions may run on it at once - zero for no limit.
26
+ */
27
+ maxConcurrentJobs?: number;
28
+
29
+ /**
30
+ * The provider's display name.
31
+ */
32
+ name?: string;
33
+ }
34
+
35
+ export class AddAnthropicProviderValidator extends CommandValidator<IAddAnthropicProvider> {
36
+ constructor() {
37
+ super();
38
+ this.ruleFor(c => c.maxConcurrentJobs).greaterThanOrEqual(0).withMessage('A concurrency limit cannot be negative - use zero for no limit');
39
+ }
40
+ }
41
+
42
+ /**
43
+ * Command for adding an Anthropic AI provider - a named API key, callable from any agent that picks it. Ported from Direct's `AIProviders.Adding.AddAnthropicProvider` (plan Section 5.2 step 4), rewired onto the package's own {@link ISecretProtector} in place of Direct's tenant-scoped `ISecurityTokenProtector`.
44
+ */
45
+ export class AddAnthropicProvider extends Command<IAddAnthropicProvider, Guid> implements IAddAnthropicProvider {
46
+ readonly route: string = '/api/a-i/providers/adding/add-anthropic-provider';
47
+ readonly validation: CommandValidator = new AddAnthropicProviderValidator();
48
+ readonly treatWarningsAsErrors: boolean = false;
49
+ readonly roles: string[] = [];
50
+ readonly propertyDescriptors: PropertyDescriptor[] = [
51
+ new PropertyDescriptor('apiKey', String, false),
52
+ new PropertyDescriptor('maxConcurrentJobs', Number, false),
53
+ new PropertyDescriptor('name', String, false),
54
+ ];
55
+
56
+ private _apiKey!: string;
57
+ private _maxConcurrentJobs!: number;
58
+ private _name!: string;
59
+
60
+ constructor() {
61
+ super(Guid, false);
62
+ }
63
+
64
+ get requestParameters(): string[] {
65
+ return [
66
+ ];
67
+ }
68
+
69
+ /**
70
+ * The Anthropic API key.
71
+ */
72
+ get apiKey(): string {
73
+ return this._apiKey;
74
+ }
75
+
76
+ set apiKey(value: string) {
77
+ this._apiKey = value;
78
+ this.propertyChanged('apiKey');
79
+ }
80
+ /**
81
+ * How many worker sessions may run on it at once - zero for no limit.
82
+ */
83
+ get maxConcurrentJobs(): number {
84
+ return this._maxConcurrentJobs;
85
+ }
86
+
87
+ set maxConcurrentJobs(value: number) {
88
+ this._maxConcurrentJobs = value;
89
+ this.propertyChanged('maxConcurrentJobs');
90
+ }
91
+ /**
92
+ * The provider's display name.
93
+ */
94
+ get name(): string {
95
+ return this._name;
96
+ }
97
+
98
+ set name(value: string) {
99
+ this._name = value;
100
+ this.propertyChanged('name');
101
+ }
102
+
103
+ static use(initialValues?: IAddAnthropicProvider): [AddAnthropicProvider, SetCommandValues<IAddAnthropicProvider>, ClearCommandValues] {
104
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
105
+ // @ts-ignore
106
+ return useCommand<AddAnthropicProvider, IAddAnthropicProvider>(AddAnthropicProvider, initialValues);
107
+ }
108
+ }
@@ -0,0 +1,126 @@
1
+ // @generated by Cratis. Source: Cratis.AI.Providers.Adding.AddAzureOpenAIProvider. Time: 2026-09-15T16:07:34.9586641Z. Hash: A27E326198BFC90872E61300D2494450CE3FB921477188F0EFD0368813387A8C
2
+ /*---------------------------------------------------------------------------------------------
3
+ * **DO NOT EDIT** - This file is an automatically generated file.
4
+ *--------------------------------------------------------------------------------------------*/
5
+
6
+ /* eslint-disable sort-imports */
7
+ /* eslint-disable @typescript-eslint/no-empty-interface */
8
+ // eslint-disable-next-line header/header
9
+ import { Command, CommandValidator } from '@cratis/arc/commands';
10
+ import { useCommand, SetCommandValues, ClearCommandValues } from '@cratis/arc.react/commands';
11
+ import { PropertyDescriptor } from '@cratis/arc/reflection';
12
+ import { Guid } from '@cratis/fundamentals';
13
+
14
+ /**
15
+ * Command for adding an Azure OpenAI AI provider - a named deployment at a tenant-specific endpoint. Ported from Direct's `AIProviders.Adding.AddAzureOpenAIProvider` (plan Section 5.2 step 4).
16
+ */
17
+ export interface IAddAzureOpenAIProvider {
18
+
19
+ /**
20
+ * The Azure OpenAI API key.
21
+ */
22
+ apiKey?: string;
23
+
24
+ /**
25
+ * The Azure OpenAI resource endpoint.
26
+ */
27
+ endpoint?: string;
28
+
29
+ /**
30
+ * How many worker sessions may run on it at once - zero for no limit.
31
+ */
32
+ maxConcurrentJobs?: number;
33
+
34
+ /**
35
+ * The provider's display name.
36
+ */
37
+ name?: string;
38
+ }
39
+
40
+ export class AddAzureOpenAIProviderValidator extends CommandValidator<IAddAzureOpenAIProvider> {
41
+ constructor() {
42
+ super();
43
+ this.ruleFor(c => c.maxConcurrentJobs).greaterThanOrEqual(0).withMessage('A concurrency limit cannot be negative - use zero for no limit');
44
+ }
45
+ }
46
+
47
+ /**
48
+ * Command for adding an Azure OpenAI AI provider - a named deployment at a tenant-specific endpoint. Ported from Direct's `AIProviders.Adding.AddAzureOpenAIProvider` (plan Section 5.2 step 4).
49
+ */
50
+ export class AddAzureOpenAIProvider extends Command<IAddAzureOpenAIProvider, Guid> implements IAddAzureOpenAIProvider {
51
+ readonly route: string = '/api/a-i/providers/adding/add-azure-open-a-i-provider';
52
+ readonly validation: CommandValidator = new AddAzureOpenAIProviderValidator();
53
+ readonly treatWarningsAsErrors: boolean = false;
54
+ readonly roles: string[] = [];
55
+ readonly propertyDescriptors: PropertyDescriptor[] = [
56
+ new PropertyDescriptor('apiKey', String, false),
57
+ new PropertyDescriptor('endpoint', String, false),
58
+ new PropertyDescriptor('maxConcurrentJobs', Number, false),
59
+ new PropertyDescriptor('name', String, false),
60
+ ];
61
+
62
+ private _apiKey!: string;
63
+ private _endpoint!: string;
64
+ private _maxConcurrentJobs!: number;
65
+ private _name!: string;
66
+
67
+ constructor() {
68
+ super(Guid, false);
69
+ }
70
+
71
+ get requestParameters(): string[] {
72
+ return [
73
+ ];
74
+ }
75
+
76
+ /**
77
+ * The Azure OpenAI API key.
78
+ */
79
+ get apiKey(): string {
80
+ return this._apiKey;
81
+ }
82
+
83
+ set apiKey(value: string) {
84
+ this._apiKey = value;
85
+ this.propertyChanged('apiKey');
86
+ }
87
+ /**
88
+ * The Azure OpenAI resource endpoint.
89
+ */
90
+ get endpoint(): string {
91
+ return this._endpoint;
92
+ }
93
+
94
+ set endpoint(value: string) {
95
+ this._endpoint = value;
96
+ this.propertyChanged('endpoint');
97
+ }
98
+ /**
99
+ * How many worker sessions may run on it at once - zero for no limit.
100
+ */
101
+ get maxConcurrentJobs(): number {
102
+ return this._maxConcurrentJobs;
103
+ }
104
+
105
+ set maxConcurrentJobs(value: number) {
106
+ this._maxConcurrentJobs = value;
107
+ this.propertyChanged('maxConcurrentJobs');
108
+ }
109
+ /**
110
+ * The provider's display name.
111
+ */
112
+ get name(): string {
113
+ return this._name;
114
+ }
115
+
116
+ set name(value: string) {
117
+ this._name = value;
118
+ this.propertyChanged('name');
119
+ }
120
+
121
+ static use(initialValues?: IAddAzureOpenAIProvider): [AddAzureOpenAIProvider, SetCommandValues<IAddAzureOpenAIProvider>, ClearCommandValues] {
122
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
123
+ // @ts-ignore
124
+ return useCommand<AddAzureOpenAIProvider, IAddAzureOpenAIProvider>(AddAzureOpenAIProvider, initialValues);
125
+ }
126
+ }
@@ -0,0 +1,126 @@
1
+ // @generated by Cratis. Source: Cratis.AI.Providers.Adding.AddOpenAICompatibleProvider. Time: 2026-09-15T16:07:34.9586641Z. Hash: D971DCDC59215AA87BDC6CBB0505C8847C16E4748EC20FD0F46AAE473EF20B8C
2
+ /*---------------------------------------------------------------------------------------------
3
+ * **DO NOT EDIT** - This file is an automatically generated file.
4
+ *--------------------------------------------------------------------------------------------*/
5
+
6
+ /* eslint-disable sort-imports */
7
+ /* eslint-disable @typescript-eslint/no-empty-interface */
8
+ // eslint-disable-next-line header/header
9
+ import { Command, CommandValidator } from '@cratis/arc/commands';
10
+ import { useCommand, SetCommandValues, ClearCommandValues } from '@cratis/arc.react/commands';
11
+ import { PropertyDescriptor } from '@cratis/arc/reflection';
12
+ import { Guid } from '@cratis/fundamentals';
13
+
14
+ /**
15
+ * Command for adding an OpenAI-compatible AI provider - a self-hosted or third-party endpoint that speaks OpenAI's chat-completions API shape (Ollama, LocalAI, and similar). The API key is optional: many local gateways accept requests unauthenticated. Ported from Direct's `AIProviders.Adding.AddOpenAICompatibleProvider` (plan Section 5.2 step 4).
16
+ */
17
+ export interface IAddOpenAICompatibleProvider {
18
+
19
+ /**
20
+ * The API key, when the endpoint requires one.
21
+ */
22
+ apiKey?: string;
23
+
24
+ /**
25
+ * The endpoint to send chat-completions requests to.
26
+ */
27
+ endpoint?: string;
28
+
29
+ /**
30
+ * How many worker sessions may run on it at once - zero for no limit.
31
+ */
32
+ maxConcurrentJobs?: number;
33
+
34
+ /**
35
+ * The provider's display name.
36
+ */
37
+ name?: string;
38
+ }
39
+
40
+ export class AddOpenAICompatibleProviderValidator extends CommandValidator<IAddOpenAICompatibleProvider> {
41
+ constructor() {
42
+ super();
43
+ this.ruleFor(c => c.maxConcurrentJobs).greaterThanOrEqual(0).withMessage('A concurrency limit cannot be negative - use zero for no limit');
44
+ }
45
+ }
46
+
47
+ /**
48
+ * Command for adding an OpenAI-compatible AI provider - a self-hosted or third-party endpoint that speaks OpenAI's chat-completions API shape (Ollama, LocalAI, and similar). The API key is optional: many local gateways accept requests unauthenticated. Ported from Direct's `AIProviders.Adding.AddOpenAICompatibleProvider` (plan Section 5.2 step 4).
49
+ */
50
+ export class AddOpenAICompatibleProvider extends Command<IAddOpenAICompatibleProvider, Guid> implements IAddOpenAICompatibleProvider {
51
+ readonly route: string = '/api/a-i/providers/adding/add-open-a-i-compatible-provider';
52
+ readonly validation: CommandValidator = new AddOpenAICompatibleProviderValidator();
53
+ readonly treatWarningsAsErrors: boolean = false;
54
+ readonly roles: string[] = [];
55
+ readonly propertyDescriptors: PropertyDescriptor[] = [
56
+ new PropertyDescriptor('apiKey', String, false),
57
+ new PropertyDescriptor('endpoint', String, false),
58
+ new PropertyDescriptor('maxConcurrentJobs', Number, false),
59
+ new PropertyDescriptor('name', String, false),
60
+ ];
61
+
62
+ private _apiKey!: string;
63
+ private _endpoint!: string;
64
+ private _maxConcurrentJobs!: number;
65
+ private _name!: string;
66
+
67
+ constructor() {
68
+ super(Guid, false);
69
+ }
70
+
71
+ get requestParameters(): string[] {
72
+ return [
73
+ ];
74
+ }
75
+
76
+ /**
77
+ * The API key, when the endpoint requires one.
78
+ */
79
+ get apiKey(): string {
80
+ return this._apiKey;
81
+ }
82
+
83
+ set apiKey(value: string) {
84
+ this._apiKey = value;
85
+ this.propertyChanged('apiKey');
86
+ }
87
+ /**
88
+ * The endpoint to send chat-completions requests to.
89
+ */
90
+ get endpoint(): string {
91
+ return this._endpoint;
92
+ }
93
+
94
+ set endpoint(value: string) {
95
+ this._endpoint = value;
96
+ this.propertyChanged('endpoint');
97
+ }
98
+ /**
99
+ * How many worker sessions may run on it at once - zero for no limit.
100
+ */
101
+ get maxConcurrentJobs(): number {
102
+ return this._maxConcurrentJobs;
103
+ }
104
+
105
+ set maxConcurrentJobs(value: number) {
106
+ this._maxConcurrentJobs = value;
107
+ this.propertyChanged('maxConcurrentJobs');
108
+ }
109
+ /**
110
+ * The provider's display name.
111
+ */
112
+ get name(): string {
113
+ return this._name;
114
+ }
115
+
116
+ set name(value: string) {
117
+ this._name = value;
118
+ this.propertyChanged('name');
119
+ }
120
+
121
+ static use(initialValues?: IAddOpenAICompatibleProvider): [AddOpenAICompatibleProvider, SetCommandValues<IAddOpenAICompatibleProvider>, ClearCommandValues] {
122
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
123
+ // @ts-ignore
124
+ return useCommand<AddOpenAICompatibleProvider, IAddOpenAICompatibleProvider>(AddOpenAICompatibleProvider, initialValues);
125
+ }
126
+ }
@@ -0,0 +1,108 @@
1
+ // @generated by Cratis. Source: Cratis.AI.Providers.Adding.AddOpenAIProvider. Time: 2026-09-15T16:07:34.9586641Z. Hash: 5B29A32955557EC709EC2FDFA77F01DDAA837E0D151A0FC999C712904AC771BF
2
+ /*---------------------------------------------------------------------------------------------
3
+ * **DO NOT EDIT** - This file is an automatically generated file.
4
+ *--------------------------------------------------------------------------------------------*/
5
+
6
+ /* eslint-disable sort-imports */
7
+ /* eslint-disable @typescript-eslint/no-empty-interface */
8
+ // eslint-disable-next-line header/header
9
+ import { Command, CommandValidator } from '@cratis/arc/commands';
10
+ import { useCommand, SetCommandValues, ClearCommandValues } from '@cratis/arc.react/commands';
11
+ import { PropertyDescriptor } from '@cratis/arc/reflection';
12
+ import { Guid } from '@cratis/fundamentals';
13
+
14
+ /**
15
+ * Command for adding an OpenAI AI provider - a named API key against OpenAI's public API. Ported from Direct's `AIProviders.Adding.AddOpenAIProvider` (plan Section 5.2 step 4) - deliberately without Direct's own subscription-credential-kind classification event (`OpenAICredentialKind.EventFor`), which belongs to the not-yet-ported Codex/harness credential subsystem (plan Section 5.6). A ChatGPT subscription pasted here is still accepted - see {@link OpenAICredential} - it is simply not yet separately recorded as its own fact the way Direct's donor does.
16
+ */
17
+ export interface IAddOpenAIProvider {
18
+
19
+ /**
20
+ * The OpenAI API key.
21
+ */
22
+ apiKey?: string;
23
+
24
+ /**
25
+ * How many worker sessions may run on it at once - zero for no limit.
26
+ */
27
+ maxConcurrentJobs?: number;
28
+
29
+ /**
30
+ * The provider's display name.
31
+ */
32
+ name?: string;
33
+ }
34
+
35
+ export class AddOpenAIProviderValidator extends CommandValidator<IAddOpenAIProvider> {
36
+ constructor() {
37
+ super();
38
+ this.ruleFor(c => c.maxConcurrentJobs).greaterThanOrEqual(0).withMessage('A concurrency limit cannot be negative - use zero for no limit');
39
+ }
40
+ }
41
+
42
+ /**
43
+ * Command for adding an OpenAI AI provider - a named API key against OpenAI's public API. Ported from Direct's `AIProviders.Adding.AddOpenAIProvider` (plan Section 5.2 step 4) - deliberately without Direct's own subscription-credential-kind classification event (`OpenAICredentialKind.EventFor`), which belongs to the not-yet-ported Codex/harness credential subsystem (plan Section 5.6). A ChatGPT subscription pasted here is still accepted - see {@link OpenAICredential} - it is simply not yet separately recorded as its own fact the way Direct's donor does.
44
+ */
45
+ export class AddOpenAIProvider extends Command<IAddOpenAIProvider, Guid> implements IAddOpenAIProvider {
46
+ readonly route: string = '/api/a-i/providers/adding/add-open-a-i-provider';
47
+ readonly validation: CommandValidator = new AddOpenAIProviderValidator();
48
+ readonly treatWarningsAsErrors: boolean = false;
49
+ readonly roles: string[] = [];
50
+ readonly propertyDescriptors: PropertyDescriptor[] = [
51
+ new PropertyDescriptor('apiKey', String, false),
52
+ new PropertyDescriptor('maxConcurrentJobs', Number, false),
53
+ new PropertyDescriptor('name', String, false),
54
+ ];
55
+
56
+ private _apiKey!: string;
57
+ private _maxConcurrentJobs!: number;
58
+ private _name!: string;
59
+
60
+ constructor() {
61
+ super(Guid, false);
62
+ }
63
+
64
+ get requestParameters(): string[] {
65
+ return [
66
+ ];
67
+ }
68
+
69
+ /**
70
+ * The OpenAI API key.
71
+ */
72
+ get apiKey(): string {
73
+ return this._apiKey;
74
+ }
75
+
76
+ set apiKey(value: string) {
77
+ this._apiKey = value;
78
+ this.propertyChanged('apiKey');
79
+ }
80
+ /**
81
+ * How many worker sessions may run on it at once - zero for no limit.
82
+ */
83
+ get maxConcurrentJobs(): number {
84
+ return this._maxConcurrentJobs;
85
+ }
86
+
87
+ set maxConcurrentJobs(value: number) {
88
+ this._maxConcurrentJobs = value;
89
+ this.propertyChanged('maxConcurrentJobs');
90
+ }
91
+ /**
92
+ * The provider's display name.
93
+ */
94
+ get name(): string {
95
+ return this._name;
96
+ }
97
+
98
+ set name(value: string) {
99
+ this._name = value;
100
+ this.propertyChanged('name');
101
+ }
102
+
103
+ static use(initialValues?: IAddOpenAIProvider): [AddOpenAIProvider, SetCommandValues<IAddOpenAIProvider>, ClearCommandValues] {
104
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
105
+ // @ts-ignore
106
+ return useCommand<AddOpenAIProvider, IAddOpenAIProvider>(AddOpenAIProvider, initialValues);
107
+ }
108
+ }
@@ -0,0 +1,126 @@
1
+ // @generated by Cratis. Source: Cratis.AI.Providers.Adding.AddZAIProvider. Time: 2026-09-15T16:07:34.9586641Z. Hash: 06FBD795E3651AF33623DBF53D1EA56073428F79FABA05A651CB734CF2C90E8D
2
+ /*---------------------------------------------------------------------------------------------
3
+ * **DO NOT EDIT** - This file is an automatically generated file.
4
+ *--------------------------------------------------------------------------------------------*/
5
+
6
+ /* eslint-disable sort-imports */
7
+ /* eslint-disable @typescript-eslint/no-empty-interface */
8
+ // eslint-disable-next-line header/header
9
+ import { Command, CommandValidator } from '@cratis/arc/commands';
10
+ import { useCommand, SetCommandValues, ClearCommandValues } from '@cratis/arc.react/commands';
11
+ import { PropertyDescriptor } from '@cratis/arc/reflection';
12
+ import { Guid } from '@cratis/fundamentals';
13
+
14
+ /**
15
+ * Command for adding a Z.ai AI provider - a GLM account reached through Z.ai's Anthropic-compatible API at a configurable endpoint. Ported from Direct's `AIProviders.Adding.AddZAIProvider` (plan Section 5.2 step 4).
16
+ */
17
+ export interface IAddZAIProvider {
18
+
19
+ /**
20
+ * The Z.ai API key.
21
+ */
22
+ apiKey?: string;
23
+
24
+ /**
25
+ * The Z.ai endpoint - the base URL the Anthropic-compatible API sits under.
26
+ */
27
+ endpoint?: string;
28
+
29
+ /**
30
+ * How many worker sessions may run on it at once - zero for no limit.
31
+ */
32
+ maxConcurrentJobs?: number;
33
+
34
+ /**
35
+ * The provider's display name.
36
+ */
37
+ name?: string;
38
+ }
39
+
40
+ export class AddZAIProviderValidator extends CommandValidator<IAddZAIProvider> {
41
+ constructor() {
42
+ super();
43
+ this.ruleFor(c => c.maxConcurrentJobs).greaterThanOrEqual(0).withMessage('A concurrency limit cannot be negative - use zero for no limit');
44
+ }
45
+ }
46
+
47
+ /**
48
+ * Command for adding a Z.ai AI provider - a GLM account reached through Z.ai's Anthropic-compatible API at a configurable endpoint. Ported from Direct's `AIProviders.Adding.AddZAIProvider` (plan Section 5.2 step 4).
49
+ */
50
+ export class AddZAIProvider extends Command<IAddZAIProvider, Guid> implements IAddZAIProvider {
51
+ readonly route: string = '/api/a-i/providers/adding/add-z-a-i-provider';
52
+ readonly validation: CommandValidator = new AddZAIProviderValidator();
53
+ readonly treatWarningsAsErrors: boolean = false;
54
+ readonly roles: string[] = [];
55
+ readonly propertyDescriptors: PropertyDescriptor[] = [
56
+ new PropertyDescriptor('apiKey', String, false),
57
+ new PropertyDescriptor('endpoint', String, false),
58
+ new PropertyDescriptor('maxConcurrentJobs', Number, false),
59
+ new PropertyDescriptor('name', String, false),
60
+ ];
61
+
62
+ private _apiKey!: string;
63
+ private _endpoint!: string;
64
+ private _maxConcurrentJobs!: number;
65
+ private _name!: string;
66
+
67
+ constructor() {
68
+ super(Guid, false);
69
+ }
70
+
71
+ get requestParameters(): string[] {
72
+ return [
73
+ ];
74
+ }
75
+
76
+ /**
77
+ * The Z.ai API key.
78
+ */
79
+ get apiKey(): string {
80
+ return this._apiKey;
81
+ }
82
+
83
+ set apiKey(value: string) {
84
+ this._apiKey = value;
85
+ this.propertyChanged('apiKey');
86
+ }
87
+ /**
88
+ * The Z.ai endpoint - the base URL the Anthropic-compatible API sits under.
89
+ */
90
+ get endpoint(): string {
91
+ return this._endpoint;
92
+ }
93
+
94
+ set endpoint(value: string) {
95
+ this._endpoint = value;
96
+ this.propertyChanged('endpoint');
97
+ }
98
+ /**
99
+ * How many worker sessions may run on it at once - zero for no limit.
100
+ */
101
+ get maxConcurrentJobs(): number {
102
+ return this._maxConcurrentJobs;
103
+ }
104
+
105
+ set maxConcurrentJobs(value: number) {
106
+ this._maxConcurrentJobs = value;
107
+ this.propertyChanged('maxConcurrentJobs');
108
+ }
109
+ /**
110
+ * The provider's display name.
111
+ */
112
+ get name(): string {
113
+ return this._name;
114
+ }
115
+
116
+ set name(value: string) {
117
+ this._name = value;
118
+ this.propertyChanged('name');
119
+ }
120
+
121
+ static use(initialValues?: IAddZAIProvider): [AddZAIProvider, SetCommandValues<IAddZAIProvider>, ClearCommandValues] {
122
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
123
+ // @ts-ignore
124
+ return useCommand<AddZAIProvider, IAddZAIProvider>(AddZAIProvider, initialValues);
125
+ }
126
+ }
@@ -0,0 +1,5 @@
1
+ export * from './AddAnthropicProvider';
2
+ export * from './AddAzureOpenAIProvider';
3
+ export * from './AddOpenAICompatibleProvider';
4
+ export * from './AddOpenAIProvider';
5
+ export * from './AddZAIProvider';
@@ -0,0 +1,65 @@
1
+ // @generated by Cratis. Source: Cratis.AI.Providers.Removing.RemoveAIProvider. Time: 2026-09-15T16:07:34.9586641Z. Hash: FC6C6B28E182282A3EDCB8319142BE8A543EAE3A6E9D8BB08A0503E2F5543875
2
+ /*---------------------------------------------------------------------------------------------
3
+ * **DO NOT EDIT** - This file is an automatically generated file.
4
+ *--------------------------------------------------------------------------------------------*/
5
+
6
+ /* eslint-disable sort-imports */
7
+ /* eslint-disable @typescript-eslint/no-empty-interface */
8
+ // eslint-disable-next-line header/header
9
+ import { Command } from '@cratis/arc/commands';
10
+ import { useCommand, SetCommandValues, ClearCommandValues } from '@cratis/arc.react/commands';
11
+ import { PropertyDescriptor } from '@cratis/arc/reflection';
12
+ import { Guid } from '@cratis/fundamentals';
13
+
14
+ /**
15
+ * Command for removing a configured AI provider. A pool member or an agent naming it as its provider falls back the next time it resolves - nothing here reaches into either to clear the reference. Ported from Direct's `AIProviders.Removing.RemoveAIProvider` (plan Section 5.2 step 4).
16
+ */
17
+ export interface IRemoveAIProvider {
18
+
19
+ /**
20
+ * The identity of the provider to remove.
21
+ */
22
+ provider?: Guid;
23
+ }
24
+
25
+
26
+ /**
27
+ * Command for removing a configured AI provider. A pool member or an agent naming it as its provider falls back the next time it resolves - nothing here reaches into either to clear the reference. Ported from Direct's `AIProviders.Removing.RemoveAIProvider` (plan Section 5.2 step 4).
28
+ */
29
+ export class RemoveAIProvider extends Command<IRemoveAIProvider, Guid> implements IRemoveAIProvider {
30
+ readonly route: string = '/api/a-i/providers/removing';
31
+ readonly treatWarningsAsErrors: boolean = false;
32
+ readonly roles: string[] = [];
33
+ readonly propertyDescriptors: PropertyDescriptor[] = [
34
+ new PropertyDescriptor('provider', Guid, false),
35
+ ];
36
+
37
+ private _provider!: Guid;
38
+
39
+ constructor() {
40
+ super(Guid, false);
41
+ }
42
+
43
+ get requestParameters(): string[] {
44
+ return [
45
+ ];
46
+ }
47
+
48
+ /**
49
+ * The identity of the provider to remove.
50
+ */
51
+ get provider(): Guid {
52
+ return this._provider;
53
+ }
54
+
55
+ set provider(value: Guid) {
56
+ this._provider = value;
57
+ this.propertyChanged('provider');
58
+ }
59
+
60
+ static use(initialValues?: IRemoveAIProvider): [RemoveAIProvider, SetCommandValues<IRemoveAIProvider>, ClearCommandValues] {
61
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
62
+ // @ts-ignore
63
+ return useCommand<RemoveAIProvider, IRemoveAIProvider>(RemoveAIProvider, initialValues);
64
+ }
65
+ }
@@ -0,0 +1 @@
1
+ export * from './RemoveAIProvider';