@loxtep/sdk 0.2.3 → 0.4.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 (239) hide show
  1. package/CHANGELOG.md +68 -0
  2. package/README.md +255 -4
  3. package/dist/authoring/agent.d.ts +164 -0
  4. package/dist/authoring/agent.d.ts.map +1 -0
  5. package/dist/authoring/agent.js +376 -0
  6. package/dist/authoring/agent.js.map +1 -0
  7. package/dist/authoring/compiler.d.ts +103 -0
  8. package/dist/authoring/compiler.d.ts.map +1 -0
  9. package/dist/authoring/compiler.js +305 -0
  10. package/dist/authoring/compiler.js.map +1 -0
  11. package/dist/authoring/define-data-workflow.d.ts +24 -0
  12. package/dist/authoring/define-data-workflow.d.ts.map +1 -0
  13. package/dist/authoring/define-data-workflow.js +93 -0
  14. package/dist/authoring/define-data-workflow.js.map +1 -0
  15. package/dist/authoring/index.d.ts +19 -0
  16. package/dist/authoring/index.d.ts.map +1 -0
  17. package/dist/authoring/index.js +15 -0
  18. package/dist/authoring/index.js.map +1 -0
  19. package/dist/authoring/toolbox.d.ts +133 -0
  20. package/dist/authoring/toolbox.d.ts.map +1 -0
  21. package/dist/authoring/toolbox.js +166 -0
  22. package/dist/authoring/toolbox.js.map +1 -0
  23. package/dist/authoring/triggers.d.ts +41 -0
  24. package/dist/authoring/triggers.d.ts.map +1 -0
  25. package/dist/authoring/triggers.js +60 -0
  26. package/dist/authoring/triggers.js.map +1 -0
  27. package/dist/authoring/types.d.ts +111 -0
  28. package/dist/authoring/types.d.ts.map +1 -0
  29. package/dist/authoring/types.js +9 -0
  30. package/dist/authoring/types.js.map +1 -0
  31. package/dist/cli/commands/activity-cmd.d.ts +28 -0
  32. package/dist/cli/commands/activity-cmd.d.ts.map +1 -0
  33. package/dist/cli/commands/activity-cmd.js +78 -0
  34. package/dist/cli/commands/activity-cmd.js.map +1 -0
  35. package/dist/cli/commands/attach-cmd.d.ts +38 -0
  36. package/dist/cli/commands/attach-cmd.d.ts.map +1 -0
  37. package/dist/cli/commands/attach-cmd.js +141 -0
  38. package/dist/cli/commands/attach-cmd.js.map +1 -0
  39. package/dist/cli/commands/data-contracts-cmd.d.ts +8 -0
  40. package/dist/cli/commands/data-contracts-cmd.d.ts.map +1 -1
  41. package/dist/cli/commands/data-contracts-cmd.js +11 -0
  42. package/dist/cli/commands/data-contracts-cmd.js.map +1 -1
  43. package/dist/cli/commands/data-products-cmd.d.ts +2 -0
  44. package/dist/cli/commands/data-products-cmd.d.ts.map +1 -1
  45. package/dist/cli/commands/data-products-cmd.js +35 -0
  46. package/dist/cli/commands/data-products-cmd.js.map +1 -1
  47. package/dist/cli/commands/deploy-cmd.d.ts +101 -0
  48. package/dist/cli/commands/deploy-cmd.d.ts.map +1 -0
  49. package/dist/cli/commands/deploy-cmd.js +461 -0
  50. package/dist/cli/commands/deploy-cmd.js.map +1 -0
  51. package/dist/cli/commands/generate-cmd.d.ts +35 -0
  52. package/dist/cli/commands/generate-cmd.d.ts.map +1 -0
  53. package/dist/cli/commands/generate-cmd.js +134 -0
  54. package/dist/cli/commands/generate-cmd.js.map +1 -0
  55. package/dist/cli/commands/improvements-cmd.d.ts +44 -0
  56. package/dist/cli/commands/improvements-cmd.d.ts.map +1 -0
  57. package/dist/cli/commands/improvements-cmd.js +215 -0
  58. package/dist/cli/commands/improvements-cmd.js.map +1 -0
  59. package/dist/cli/commands/init-cmd.d.ts +78 -0
  60. package/dist/cli/commands/init-cmd.d.ts.map +1 -0
  61. package/dist/cli/commands/init-cmd.js +250 -0
  62. package/dist/cli/commands/init-cmd.js.map +1 -0
  63. package/dist/cli/commands/instances-cmd.d.ts +37 -0
  64. package/dist/cli/commands/instances-cmd.d.ts.map +1 -0
  65. package/dist/cli/commands/instances-cmd.js +150 -0
  66. package/dist/cli/commands/instances-cmd.js.map +1 -0
  67. package/dist/cli/commands/test-cmd.d.ts +89 -0
  68. package/dist/cli/commands/test-cmd.d.ts.map +1 -0
  69. package/dist/cli/commands/test-cmd.js +378 -0
  70. package/dist/cli/commands/test-cmd.js.map +1 -0
  71. package/dist/cli/index.d.ts +5 -2
  72. package/dist/cli/index.d.ts.map +1 -1
  73. package/dist/cli/index.js +240 -8
  74. package/dist/cli/index.js.map +1 -1
  75. package/dist/cli/project-context.d.ts +153 -0
  76. package/dist/cli/project-context.d.ts.map +1 -0
  77. package/dist/cli/project-context.js +190 -0
  78. package/dist/cli/project-context.js.map +1 -0
  79. package/dist/client/activity-types.d.ts +66 -0
  80. package/dist/client/activity-types.d.ts.map +1 -0
  81. package/dist/client/activity-types.js +9 -0
  82. package/dist/client/activity-types.js.map +1 -0
  83. package/dist/client/activity.d.ts +22 -0
  84. package/dist/client/activity.d.ts.map +1 -0
  85. package/dist/client/activity.js +43 -0
  86. package/dist/client/activity.js.map +1 -0
  87. package/dist/client/data-products-types.d.ts +23 -0
  88. package/dist/client/data-products-types.d.ts.map +1 -1
  89. package/dist/client/data-products.d.ts +3 -1
  90. package/dist/client/data-products.d.ts.map +1 -1
  91. package/dist/client/data-products.js +20 -98
  92. package/dist/client/data-products.js.map +1 -1
  93. package/dist/client/{consumptions-types.d.ts → delivery-types.d.ts} +25 -8
  94. package/dist/client/delivery-types.d.ts.map +1 -0
  95. package/dist/client/delivery-types.js +10 -0
  96. package/dist/client/delivery-types.js.map +1 -0
  97. package/dist/client/delivery.d.ts +23 -0
  98. package/dist/client/delivery.d.ts.map +1 -0
  99. package/dist/client/delivery.js +105 -0
  100. package/dist/client/delivery.js.map +1 -0
  101. package/dist/client/flow-types.d.ts +4 -2
  102. package/dist/client/flow-types.d.ts.map +1 -1
  103. package/dist/client/flows.d.ts +1 -1
  104. package/dist/client/flows.d.ts.map +1 -1
  105. package/dist/client/flows.js +49 -124
  106. package/dist/client/flows.js.map +1 -1
  107. package/dist/client/improvements-types.d.ts +55 -0
  108. package/dist/client/improvements-types.d.ts.map +1 -0
  109. package/dist/client/improvements-types.js +9 -0
  110. package/dist/client/improvements-types.js.map +1 -0
  111. package/dist/client/improvements.d.ts +29 -0
  112. package/dist/client/improvements.d.ts.map +1 -0
  113. package/dist/client/improvements.js +50 -0
  114. package/dist/client/improvements.js.map +1 -0
  115. package/dist/client/index.d.ts +8 -3
  116. package/dist/client/index.d.ts.map +1 -1
  117. package/dist/client/index.js.map +1 -1
  118. package/dist/client/instances-types.d.ts +92 -0
  119. package/dist/client/instances-types.d.ts.map +1 -1
  120. package/dist/client/instances.d.ts +26 -4
  121. package/dist/client/instances.d.ts.map +1 -1
  122. package/dist/client/instances.js +94 -3
  123. package/dist/client/instances.js.map +1 -1
  124. package/dist/client/loxtep-client.d.ts +48 -3
  125. package/dist/client/loxtep-client.d.ts.map +1 -1
  126. package/dist/client/loxtep-client.js +73 -5
  127. package/dist/client/loxtep-client.js.map +1 -1
  128. package/dist/client/projects-types.d.ts +25 -0
  129. package/dist/client/projects-types.d.ts.map +1 -1
  130. package/dist/client/projects.d.ts +2 -1
  131. package/dist/client/projects.d.ts.map +1 -1
  132. package/dist/client/projects.js +17 -0
  133. package/dist/client/projects.js.map +1 -1
  134. package/dist/client/promises.d.ts +11 -0
  135. package/dist/client/promises.d.ts.map +1 -1
  136. package/dist/client/promises.js +11 -0
  137. package/dist/client/promises.js.map +1 -1
  138. package/dist/client/queue-types.d.ts +15 -2
  139. package/dist/client/queue-types.d.ts.map +1 -1
  140. package/dist/client/queues.d.ts.map +1 -1
  141. package/dist/client/queues.js +3 -14
  142. package/dist/client/queues.js.map +1 -1
  143. package/dist/client/schemas.d.ts +1 -0
  144. package/dist/client/schemas.d.ts.map +1 -1
  145. package/dist/client/schemas.js +4 -0
  146. package/dist/client/schemas.js.map +1 -1
  147. package/dist/client/thesaurus.d.ts +5 -0
  148. package/dist/client/thesaurus.d.ts.map +1 -1
  149. package/dist/client/thesaurus.js +12 -0
  150. package/dist/client/thesaurus.js.map +1 -1
  151. package/dist/codegen/emit.d.ts +25 -0
  152. package/dist/codegen/emit.d.ts.map +1 -0
  153. package/dist/codegen/emit.js +158 -0
  154. package/dist/codegen/emit.js.map +1 -0
  155. package/dist/codegen/index.d.ts +17 -0
  156. package/dist/codegen/index.d.ts.map +1 -0
  157. package/dist/codegen/index.js +16 -0
  158. package/dist/codegen/index.js.map +1 -0
  159. package/dist/codegen/load-workspace-context.d.ts +30 -0
  160. package/dist/codegen/load-workspace-context.d.ts.map +1 -0
  161. package/dist/codegen/load-workspace-context.js +127 -0
  162. package/dist/codegen/load-workspace-context.js.map +1 -0
  163. package/dist/codegen/normalize.d.ts +35 -0
  164. package/dist/codegen/normalize.d.ts.map +1 -0
  165. package/dist/codegen/normalize.js +77 -0
  166. package/dist/codegen/normalize.js.map +1 -0
  167. package/dist/codegen/types.d.ts +89 -0
  168. package/dist/codegen/types.d.ts.map +1 -0
  169. package/dist/codegen/types.js +9 -0
  170. package/dist/codegen/types.js.map +1 -0
  171. package/dist/codegen/write-artifact.d.ts +40 -0
  172. package/dist/codegen/write-artifact.d.ts.map +1 -0
  173. package/dist/codegen/write-artifact.js +74 -0
  174. package/dist/codegen/write-artifact.js.map +1 -0
  175. package/dist/config/index.d.ts +1 -0
  176. package/dist/config/index.d.ts.map +1 -1
  177. package/dist/config/index.js +1 -0
  178. package/dist/config/index.js.map +1 -1
  179. package/dist/config/workspace-config.d.ts +76 -0
  180. package/dist/config/workspace-config.d.ts.map +1 -0
  181. package/dist/config/workspace-config.js +129 -0
  182. package/dist/config/workspace-config.js.map +1 -0
  183. package/dist/index.d.ts +3 -0
  184. package/dist/index.d.ts.map +1 -1
  185. package/dist/index.js +3 -0
  186. package/dist/index.js.map +1 -1
  187. package/dist/rstreams/event-bridge.d.ts +16 -2
  188. package/dist/rstreams/event-bridge.d.ts.map +1 -1
  189. package/dist/rstreams/event-bridge.js +38 -5
  190. package/dist/rstreams/event-bridge.js.map +1 -1
  191. package/dist/skills/check-scope.d.ts +42 -0
  192. package/dist/skills/check-scope.d.ts.map +1 -0
  193. package/dist/skills/check-scope.js +84 -0
  194. package/dist/skills/check-scope.js.map +1 -0
  195. package/dist/skills/index.d.ts +14 -0
  196. package/dist/skills/index.d.ts.map +1 -0
  197. package/dist/skills/index.js +12 -0
  198. package/dist/skills/index.js.map +1 -0
  199. package/dist/skills/loader.d.ts +79 -0
  200. package/dist/skills/loader.d.ts.map +1 -0
  201. package/dist/skills/loader.js +102 -0
  202. package/dist/skills/loader.js.map +1 -0
  203. package/dist/skills/types.d.ts +55 -0
  204. package/dist/skills/types.d.ts.map +1 -0
  205. package/dist/skills/types.js +9 -0
  206. package/dist/skills/types.js.map +1 -0
  207. package/dist/skills/validate-references.d.ts +54 -0
  208. package/dist/skills/validate-references.d.ts.map +1 -0
  209. package/dist/skills/validate-references.js +80 -0
  210. package/dist/skills/validate-references.js.map +1 -0
  211. package/docs/getting-started.md +7 -0
  212. package/package.json +7 -5
  213. package/dist/cli/commands/data-assets-cmd.d.ts +0 -12
  214. package/dist/cli/commands/data-assets-cmd.d.ts.map +0 -1
  215. package/dist/cli/commands/data-assets-cmd.js +0 -75
  216. package/dist/cli/commands/data-assets-cmd.js.map +0 -1
  217. package/dist/cli/commands/pipelines-cmd.d.ts +0 -17
  218. package/dist/cli/commands/pipelines-cmd.d.ts.map +0 -1
  219. package/dist/cli/commands/pipelines-cmd.js +0 -52
  220. package/dist/cli/commands/pipelines-cmd.js.map +0 -1
  221. package/dist/cli/commands/promises-cmd.d.ts +0 -11
  222. package/dist/cli/commands/promises-cmd.d.ts.map +0 -1
  223. package/dist/cli/commands/promises-cmd.js +0 -53
  224. package/dist/cli/commands/promises-cmd.js.map +0 -1
  225. package/dist/client/consumptions-types.d.ts.map +0 -1
  226. package/dist/client/consumptions-types.js +0 -5
  227. package/dist/client/consumptions-types.js.map +0 -1
  228. package/dist/client/consumptions.d.ts +0 -14
  229. package/dist/client/consumptions.d.ts.map +0 -1
  230. package/dist/client/consumptions.js +0 -47
  231. package/dist/client/consumptions.js.map +0 -1
  232. package/dist/client/data-assets-types.d.ts +0 -150
  233. package/dist/client/data-assets-types.d.ts.map +0 -1
  234. package/dist/client/data-assets-types.js +0 -5
  235. package/dist/client/data-assets-types.js.map +0 -1
  236. package/dist/client/data-assets.d.ts +0 -31
  237. package/dist/client/data-assets.d.ts.map +0 -1
  238. package/dist/client/data-assets.js +0 -182
  239. package/dist/client/data-assets.js.map +0 -1
@@ -0,0 +1,190 @@
1
+ /**
2
+ * Project-local workspace context for the `loxtep` CLI lifecycle commands.
3
+ *
4
+ * Resolves `.loxtep/project.json` from the working directory upward and enforces
5
+ * the command-ordering preconditions shared by `generate` / `test` / `deploy`
6
+ * (and surfaced by `attach` / `init` / `improvements apply`):
7
+ *
8
+ * - {@link requireProject} fails with `NO_PROJECT` (R1.7) → "run loxtep init first".
9
+ * - {@link requireAttachedProject} fails with `NOT_ATTACHED` (R1.10) →
10
+ * "run loxtep attach first" when `instance_id`/`api_url` are not yet resolved.
11
+ *
12
+ * Writes go through the atomic build-validate-write-once {@link writeProjectConfig}
13
+ * helper used by `attach` / `generate` / `improvements apply`, so a failed command
14
+ * leaves the prior `.loxtep/project.json` bytes intact (R1.9, R17.2).
15
+ *
16
+ * All field names are snake_case per backend conventions.
17
+ */
18
+ import { existsSync, readFileSync } from 'node:fs';
19
+ import { mkdir, writeFile, rename, rm } from 'node:fs/promises';
20
+ import { dirname, join, parse as parsePath } from 'node:path';
21
+ import { z } from 'zod';
22
+ import { ValidationError } from '../errors/validation.js';
23
+ /** Workspace config directory name: `.loxtep`. */
24
+ export const PROJECT_DIR_NAME = '.loxtep';
25
+ /** Workspace project file name: `project.json`. */
26
+ export const PROJECT_FILE_NAME = 'project.json';
27
+ const ProjectRepositorySchema = z.object({
28
+ url: z.string().min(1, 'repository.url is required'),
29
+ name: z.string().min(1, 'repository.name is required'),
30
+ subpath: z.string().optional(),
31
+ // Branch defaults to `main` when unspecified (R17.1).
32
+ branch: z.string().min(1).default('main'),
33
+ });
34
+ /** zod schema for `.loxtep/project.json`. Unknown keys are stripped on parse. */
35
+ export const ProjectConfigSchema = z.object({
36
+ project_id: z.string().min(1, 'project_id is required'),
37
+ organization_id: z.string().min(1).optional(),
38
+ instance_id: z.string().min(1).optional(),
39
+ api_url: z.string().min(1).optional(),
40
+ template_slug: z.string().min(1).optional(),
41
+ repository: ProjectRepositorySchema.optional(),
42
+ });
43
+ /** Guidance message for a missing project (R1.7). */
44
+ const NO_PROJECT_MESSAGE = 'No .loxtep/project.json found in this directory or any parent. Run `loxtep init` first.';
45
+ /** Guidance message for an unattached project (R1.10). */
46
+ const NOT_ATTACHED_MESSAGE = 'Project is not attached to an Instance (missing instance_id/api_url). Run `loxtep attach` first.';
47
+ function noProjectFailure(message = NO_PROJECT_MESSAGE) {
48
+ return { code: 'NO_PROJECT', message };
49
+ }
50
+ function notAttachedFailure(message = NOT_ATTACHED_MESSAGE) {
51
+ return { code: 'NOT_ATTACHED', message };
52
+ }
53
+ /** Full path to `<projectDir>/.loxtep/project.json`. */
54
+ export function getProjectFilePath(projectDir) {
55
+ return join(projectDir, PROJECT_DIR_NAME, PROJECT_FILE_NAME);
56
+ }
57
+ /**
58
+ * Walk from `cwd` upward to the filesystem root, returning the first directory
59
+ * that contains a `.loxtep/project.json`, or `null` if none is found.
60
+ */
61
+ export function findProjectDir(cwd) {
62
+ let dir = cwd;
63
+ // Guard against an infinite loop: stop once `dirname` no longer changes (root).
64
+ for (;;) {
65
+ if (existsSync(getProjectFilePath(dir)))
66
+ return dir;
67
+ const parent = dirname(dir);
68
+ if (parent === dir || parsePath(dir).root === dir) {
69
+ // One last check at the root itself.
70
+ if (existsSync(getProjectFilePath(parent)))
71
+ return parent;
72
+ return null;
73
+ }
74
+ dir = parent;
75
+ }
76
+ }
77
+ /**
78
+ * Resolve and validate `.loxtep/project.json` searching from `cwd` upward.
79
+ *
80
+ * Returns `NO_PROJECT` (R1.7) when no project file exists in `cwd` or any parent,
81
+ * or when the file cannot be parsed/validated as a project config.
82
+ */
83
+ export function requireProject(cwd) {
84
+ const projectDir = findProjectDir(cwd);
85
+ if (!projectDir) {
86
+ return { ok: false, failure: noProjectFailure() };
87
+ }
88
+ const projectFilePath = getProjectFilePath(projectDir);
89
+ let raw;
90
+ try {
91
+ raw = readFileSync(projectFilePath, 'utf-8');
92
+ }
93
+ catch {
94
+ return {
95
+ ok: false,
96
+ failure: noProjectFailure(`Found ${projectFilePath} but it could not be read. Run \`loxtep init\` first.`),
97
+ };
98
+ }
99
+ let parsedJson;
100
+ try {
101
+ parsedJson = JSON.parse(raw);
102
+ }
103
+ catch {
104
+ return {
105
+ ok: false,
106
+ failure: noProjectFailure(`${projectFilePath} is not valid JSON. Run \`loxtep init\` to recreate it.`),
107
+ };
108
+ }
109
+ const result = ProjectConfigSchema.safeParse(parsedJson);
110
+ if (!result.success) {
111
+ return {
112
+ ok: false,
113
+ failure: noProjectFailure(`${projectFilePath} is not a valid project config: ${summarizeIssues(result.error)}. Run \`loxtep init\` to recreate it.`),
114
+ };
115
+ }
116
+ return { ok: true, projectDir, projectFilePath, project: result.data };
117
+ }
118
+ /**
119
+ * Like {@link requireProject}, but additionally enforces that the project has
120
+ * been attached: returns `NOT_ATTACHED` (R1.10) when `instance_id` or `api_url`
121
+ * is missing. Used by `generate` / `test` / `deploy`.
122
+ */
123
+ export function requireAttachedProject(cwd) {
124
+ const base = requireProject(cwd);
125
+ if (!base.ok)
126
+ return base;
127
+ const { project, projectDir, projectFilePath } = base;
128
+ if (typeof project.instance_id !== 'string' ||
129
+ project.instance_id.length === 0 ||
130
+ typeof project.api_url !== 'string' ||
131
+ project.api_url.length === 0) {
132
+ return { ok: false, failure: notAttachedFailure() };
133
+ }
134
+ return {
135
+ ok: true,
136
+ projectDir,
137
+ projectFilePath,
138
+ project: { ...project, instance_id: project.instance_id, api_url: project.api_url },
139
+ };
140
+ }
141
+ /** Map a {@link PreconditionFailure} to a non-zero {@link CliResult}. */
142
+ export function preconditionToCliResult(failure) {
143
+ return { exitCode: 1, stdout: [], stderr: [failure.message] };
144
+ }
145
+ /**
146
+ * Atomic build-validate-write-once writer for `.loxtep/project.json`.
147
+ *
148
+ * The caller builds the new config object in memory; this helper validates it
149
+ * (throwing {@link ValidationError} before touching disk when invalid), then
150
+ * writes it exactly once via a temp file + rename so a partial or failed write
151
+ * leaves the prior file bytes unchanged (R1.9, R17.2). Used by
152
+ * `attach` / `generate` / `improvements apply`.
153
+ *
154
+ * @returns the parsed config (with schema defaults applied, e.g. `repository.branch`).
155
+ */
156
+ export async function writeProjectConfig(filePath, config) {
157
+ // 1. Validate the fully-built object before writing anything.
158
+ const result = ProjectConfigSchema.safeParse(config);
159
+ if (!result.success) {
160
+ throw new ValidationError('Invalid .loxtep/project.json contents', issuesToFieldErrors(result.error));
161
+ }
162
+ const validated = result.data;
163
+ const serialized = JSON.stringify(validated, null, 2);
164
+ // 2. Write once, atomically: temp file in the target directory, then rename.
165
+ const dir = dirname(filePath);
166
+ await mkdir(dir, { recursive: true });
167
+ const tmpPath = join(dir, `.${PROJECT_FILE_NAME}.tmp-${process.pid}-${Date.now()}-${Math.random().toString(36).slice(2)}`);
168
+ try {
169
+ await writeFile(tmpPath, serialized, 'utf-8');
170
+ await rename(tmpPath, filePath);
171
+ }
172
+ catch (err) {
173
+ // Best-effort cleanup so a failed write never leaves a stray temp file.
174
+ await rm(tmpPath, { force: true }).catch(() => undefined);
175
+ throw err;
176
+ }
177
+ return validated;
178
+ }
179
+ function issuesToFieldErrors(error) {
180
+ return error.issues.map(issue => ({
181
+ field: issue.path.length > 0 ? issue.path.join('.') : '(root)',
182
+ message: issue.message,
183
+ }));
184
+ }
185
+ function summarizeIssues(error) {
186
+ return issuesToFieldErrors(error)
187
+ .map(fe => `${fe.field}: ${fe.message}`)
188
+ .join('; ');
189
+ }
190
+ //# sourceMappingURL=project-context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project-context.js","sourceRoot":"","sources":["../../src/cli/project-context.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,66 @@
1
+ /**
2
+ * Activity/Audit API types.
3
+ * Canonical API: GET /ai/activity (unified read-model query).
4
+ * snake_case per backend conventions.
5
+ *
6
+ * Requirements: 7.4, 18.5
7
+ */
8
+ /** Valid source values for activity/audit entries. */
9
+ export type ActivitySource = 'cli' | 'sdk' | 'mcp' | 'ui';
10
+ /** Valid outcome values for action-trace entries. */
11
+ export type ActivityOutcome = 'succeeded' | 'failed';
12
+ /** Kind discriminator for activity entries. */
13
+ export type ActivityEntryKind = 'action_trace' | 'audit';
14
+ /** An activity or audit entry as returned by the unified read-model query (R7.4). */
15
+ export interface ActivityEntry {
16
+ /** Stable unique id used as tie-breaker for ordering. */
17
+ entry_id: string;
18
+ /** Discriminator: 'action_trace' for workflow action traces, 'audit' for mutation audit. */
19
+ kind: ActivityEntryKind;
20
+ /** Workflow name (present on action_trace entries). */
21
+ workflow_name?: string;
22
+ /** Operation name. */
23
+ operation_name: string;
24
+ /** Target resource identifier (present on action_trace entries). */
25
+ target_resource?: string;
26
+ /** Actor identity (user id or agent id). */
27
+ actor: string;
28
+ /** Source of the operation (present on audit entries). */
29
+ source?: ActivitySource;
30
+ /** Resource type (present on audit entries). */
31
+ resource_type?: string;
32
+ /** Resource id (present on audit entries). */
33
+ resource_id?: string;
34
+ /** Skill name when the mutation is associated with a skill (R7.3). */
35
+ skill_name?: string;
36
+ /** UTC timestamp of the entry. */
37
+ timestamp: string;
38
+ /** Outcome of the operation (present on action_trace entries). */
39
+ outcome?: ActivityOutcome;
40
+ }
41
+ /** Filters for listing activity entries (GET /ai/activity query params). */
42
+ export interface ActivityListFilters {
43
+ /** Filter by source (cli, sdk, mcp, ui). */
44
+ source?: ActivitySource;
45
+ /** Filter by actor identity. */
46
+ actor?: string;
47
+ /** Filter by resource type. */
48
+ resource_type?: string;
49
+ /** Time-range start (UTC ISO 8601). start > end is rejected (R7.7). */
50
+ start?: string;
51
+ /** Time-range end (UTC ISO 8601). */
52
+ end?: string;
53
+ /** Max results per page (1–100, default 50). */
54
+ limit?: number;
55
+ /** Cursor for pagination. */
56
+ cursor?: string;
57
+ }
58
+ /** Response shape from GET /ai/activity. */
59
+ export interface ActivityListResponse {
60
+ success: boolean;
61
+ data: {
62
+ entries: ActivityEntry[];
63
+ cursor: string | null;
64
+ };
65
+ }
66
+ //# sourceMappingURL=activity-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"activity-types.d.ts","sourceRoot":"","sources":["../../src/client/activity-types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,sDAAsD;AACtD,MAAM,MAAM,cAAc,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,IAAI,CAAC;AAE1D,qDAAqD;AACrD,MAAM,MAAM,eAAe,GAAG,WAAW,GAAG,QAAQ,CAAC;AAErD,+CAA+C;AAC/C,MAAM,MAAM,iBAAiB,GAAG,cAAc,GAAG,OAAO,CAAC;AAEzD,qFAAqF;AACrF,MAAM,WAAW,aAAa;IAC5B,yDAAyD;IACzD,QAAQ,EAAE,MAAM,CAAC;IACjB,4FAA4F;IAC5F,IAAI,EAAE,iBAAiB,CAAC;IACxB,uDAAuD;IACvD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,sBAAsB;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,oEAAoE;IACpE,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,4CAA4C;IAC5C,KAAK,EAAE,MAAM,CAAC;IACd,0DAA0D;IAC1D,MAAM,CAAC,EAAE,cAAc,CAAC;IACxB,gDAAgD;IAChD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,8CAA8C;IAC9C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,sEAAsE;IACtE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,kCAAkC;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,kEAAkE;IAClE,OAAO,CAAC,EAAE,eAAe,CAAC;CAC3B;AAED,4EAA4E;AAC5E,MAAM,WAAW,mBAAmB;IAClC,4CAA4C;IAC5C,MAAM,CAAC,EAAE,cAAc,CAAC;IACxB,gCAAgC;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,+BAA+B;IAC/B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,uEAAuE;IACvE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,qCAAqC;IACrC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,gDAAgD;IAChD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,6BAA6B;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,4CAA4C;AAC5C,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE;QACJ,OAAO,EAAE,aAAa,EAAE,CAAC;QACzB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;KACvB,CAAC;CACH"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Activity/Audit API types.
3
+ * Canonical API: GET /ai/activity (unified read-model query).
4
+ * snake_case per backend conventions.
5
+ *
6
+ * Requirements: 7.4, 18.5
7
+ */
8
+ export {};
9
+ //# sourceMappingURL=activity-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"activity-types.js","sourceRoot":"","sources":["../../src/client/activity-types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Activity API: list activity and audit entries (unified read-model query).
3
+ * Canonical API: GET /ai/activity.
4
+ * Synchronous read (R18.6 carve-out).
5
+ *
6
+ * Requirements: 7.4, 18.5
7
+ */
8
+ import type { LoxtepHttpClient } from '../http/client.js';
9
+ import type { ActivityEntry, ActivityListFilters } from './activity-types.js';
10
+ export interface ActivityApi {
11
+ /**
12
+ * List activity and audit entries ordered by UTC timestamp DESC with stable entry_id tie-break.
13
+ * Applies source/actor/resource-type/time-range filters combined with AND (R7.4).
14
+ * Synchronous read — R18.6 carve-out.
15
+ */
16
+ list: (filters?: ActivityListFilters) => Promise<{
17
+ entries: ActivityEntry[];
18
+ cursor: string | null;
19
+ }>;
20
+ }
21
+ export declare function createActivityApi(http: LoxtepHttpClient): ActivityApi;
22
+ //# sourceMappingURL=activity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"activity.d.ts","sourceRoot":"","sources":["../../src/client/activity.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,KAAK,EACV,aAAa,EACb,mBAAmB,EAEpB,MAAM,qBAAqB,CAAC;AAc7B,MAAM,WAAW,WAAW;IAC1B;;;;OAIG;IACH,IAAI,EAAE,CAAC,OAAO,CAAC,EAAE,mBAAmB,KAAK,OAAO,CAAC;QAAE,OAAO,EAAE,aAAa,EAAE,CAAC;QAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC,CAAC;CACvG;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,gBAAgB,GAAG,WAAW,CAgBrE"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * Activity API: list activity and audit entries (unified read-model query).
3
+ * Canonical API: GET /ai/activity.
4
+ * Synchronous read (R18.6 carve-out).
5
+ *
6
+ * Requirements: 7.4, 18.5
7
+ */
8
+ const ACTIVITY_BASE = '/ai/activity';
9
+ function buildQueryString(params) {
10
+ const search = new URLSearchParams();
11
+ for (const [k, v] of Object.entries(params)) {
12
+ if (v === undefined || v === null)
13
+ continue;
14
+ search.set(k, String(v));
15
+ }
16
+ const qs = search.toString();
17
+ return qs ? `?${qs}` : '';
18
+ }
19
+ export function createActivityApi(http) {
20
+ return {
21
+ async list(filters) {
22
+ const params = {};
23
+ if (filters?.source)
24
+ params.source = filters.source;
25
+ if (filters?.actor)
26
+ params.actor = filters.actor;
27
+ if (filters?.resource_type)
28
+ params.resource_type = filters.resource_type;
29
+ if (filters?.start)
30
+ params.start = filters.start;
31
+ if (filters?.end)
32
+ params.end = filters.end;
33
+ if (filters?.limit != null)
34
+ params.limit = filters.limit;
35
+ if (filters?.cursor)
36
+ params.cursor = filters.cursor;
37
+ const qs = buildQueryString(params);
38
+ const res = await http.get(`${ACTIVITY_BASE}${qs}`);
39
+ return res.data;
40
+ },
41
+ };
42
+ }
43
+ //# sourceMappingURL=activity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"activity.js","sourceRoot":"","sources":["../../src/client/activity.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AASH,MAAM,aAAa,GAAG,cAAc,CAAC;AAErC,SAAS,gBAAgB,CAAC,MAAmD;IAC3E,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;IACrC,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAC5C,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,IAAI;YAAE,SAAS;QAC5C,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3B,CAAC;IACD,MAAM,EAAE,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;IAC7B,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AAC5B,CAAC;AAWD,MAAM,UAAU,iBAAiB,CAAC,IAAsB;IACtD,OAAO;QACL,KAAK,CAAC,IAAI,CAAC,OAA6B;YACtC,MAAM,MAAM,GAAgD,EAAE,CAAC;YAC/D,IAAI,OAAO,EAAE,MAAM;gBAAE,MAAM,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;YACpD,IAAI,OAAO,EAAE,KAAK;gBAAE,MAAM,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;YACjD,IAAI,OAAO,EAAE,aAAa;gBAAE,MAAM,CAAC,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;YACzE,IAAI,OAAO,EAAE,KAAK;gBAAE,MAAM,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;YACjD,IAAI,OAAO,EAAE,GAAG;gBAAE,MAAM,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;YAC3C,IAAI,OAAO,EAAE,KAAK,IAAI,IAAI;gBAAE,MAAM,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;YACzD,IAAI,OAAO,EAAE,MAAM;gBAAE,MAAM,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;YACpD,MAAM,EAAE,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;YACpC,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,GAAG,CAAuB,GAAG,aAAa,GAAG,EAAE,EAAE,CAAC,CAAC;YAC1E,OAAO,GAAG,CAAC,IAAI,CAAC;QAClB,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -203,4 +203,27 @@ export interface UsageMapResponse {
203
203
  nodes: UsageMapNode[];
204
204
  edges: UsageMapEdge[];
205
205
  }
206
+ /** Prerequisite item in a medallion promotion readiness check. */
207
+ export interface DataProductPromotionPrerequisite {
208
+ id: string;
209
+ name: string;
210
+ satisfied: boolean;
211
+ remediation?: string;
212
+ }
213
+ /** Result of data_products.readiness(id). */
214
+ export interface DataProductPromotionReadiness {
215
+ current_tier: string;
216
+ target_tier: string;
217
+ prerequisites: DataProductPromotionPrerequisite[];
218
+ progress_pct: number;
219
+ promotable: boolean;
220
+ }
221
+ /** Result of data_products.promote(id, target_tier). */
222
+ export interface DataProductPromotionResult {
223
+ success: boolean;
224
+ new_tier?: string;
225
+ entity_iris?: string[];
226
+ diagnostics?: DataProductPromotionPrerequisite[];
227
+ error?: string;
228
+ }
206
229
  //# sourceMappingURL=data-products-types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"data-products-types.d.ts","sourceRoot":"","sources":["../../src/client/data-products-types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"data-products-types.d.ts","sourceRoot":"","sources":["../../src/client/data-products-types.ts"],"names":[],"mappings":"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"}
@@ -5,7 +5,7 @@
5
5
  */
6
6
  import type { RStreamsSdk } from '../rstreams/leo-runtime.js';
7
7
  import type { LoxtepHttpClient } from '../http/client.js';
8
- import type { DataProduct, DataProductsListFilters, DataProductGetOptions, DataProductsListResponse, DataProductsSearchResponse, DataProductStreamOptions, DataProductReplayOptions, StreamEvent, DataProductQueryResult, DataProductListTablesResult, DataProductLexicon, DataProductCreateInput, UsageMapResponse } from './data-products-types.js';
8
+ import type { DataProduct, DataProductsListFilters, DataProductGetOptions, DataProductsListResponse, DataProductsSearchResponse, DataProductStreamOptions, DataProductReplayOptions, StreamEvent, DataProductQueryResult, DataProductListTablesResult, DataProductLexicon, DataProductCreateInput, UsageMapResponse, DataProductPromotionReadiness, DataProductPromotionResult } from './data-products-types.js';
9
9
  import type { QueueMetadata, ReaderCheckpoint } from './queue-types.js';
10
10
  import type { FlowWriter } from './flow-types.js';
11
11
  import { DataProductResolver } from './data-product-resolver.js';
@@ -60,5 +60,7 @@ export declare function createDataProductsApi(http: LoxtepHttpClient, deps?: Dat
60
60
  get_writer: (idOrName: string, options?: DataProductWriterOptions) => Promise<FlowWriter>;
61
61
  get_reader: (idOrName: string, options?: DataProductReaderOptions) => Promise<AsyncIterable<StreamEvent>>;
62
62
  invalidate_cache: (idOrName?: string) => void;
63
+ readiness: (data_product_id: string) => Promise<DataProductPromotionReadiness>;
64
+ promote: (data_product_id: string, target_tier: 'silver' | 'gold') => Promise<DataProductPromotionResult>;
63
65
  };
64
66
  //# sourceMappingURL=data-products.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"data-products.d.ts","sourceRoot":"","sources":["../../src/client/data-products.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"data-products.d.ts","sourceRoot":"","sources":["../../src/client/data-products.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,7 @@
3
3
  * get_writer, get_reader, invalidate_cache.
4
4
  * Customer-facing surface: data_products.
5
5
  */
6
- import { readQueueBatch, putPayloadsToQueue } from '../rstreams/event-bridge.js';
6
+ import { readQueueBatch, createQueueWriter, } from '../rstreams/event-bridge.js';
7
7
  import { NotFoundError } from '../errors/resource.js';
8
8
  import { AuthorizationError } from '../errors/auth.js';
9
9
  import { StreamingError } from '../errors/streaming.js';
@@ -24,76 +24,6 @@ function buildQueryString(params) {
24
24
  const qs = search.toString();
25
25
  return qs ? `?${qs}` : '';
26
26
  }
27
- /** Default backoff delays (ms) for retry attempts. */
28
- const BACKOFF_DELAYS_MS = [0, 1000, 2000];
29
- /**
30
- * Determine whether an error is transient and should be retried.
31
- * Transient: network errors, timeouts, throttling (429), 5xx responses.
32
- */
33
- function isTransientError(err) {
34
- if (err === null || err === undefined)
35
- return false;
36
- const statusCode = typeof err.status_code === 'number'
37
- ? err.status_code
38
- : typeof err.statusCode === 'number'
39
- ? err.statusCode
40
- : undefined;
41
- if (statusCode !== undefined) {
42
- if (statusCode === 429)
43
- return true;
44
- if (statusCode >= 500 && statusCode < 600)
45
- return true;
46
- if (statusCode >= 400 && statusCode < 500)
47
- return false;
48
- }
49
- const code = typeof err.code === 'string'
50
- ? err.code
51
- : undefined;
52
- if (code) {
53
- const transientCodes = new Set([
54
- 'ECONNRESET', 'ECONNREFUSED', 'ENOTFOUND', 'ETIMEDOUT', 'EPIPE',
55
- 'EAI_AGAIN', 'RATE_LIMIT_EXCEEDED', 'SERVICE_UNAVAILABLE', 'GATEWAY_TIMEOUT',
56
- ]);
57
- if (transientCodes.has(code))
58
- return true;
59
- const nonTransientCodes = new Set([
60
- 'AUTHENTICATION_ERROR', 'AUTHORIZATION_ERROR', 'VALIDATION_ERROR', 'NOT_FOUND',
61
- ]);
62
- if (nonTransientCodes.has(code))
63
- return false;
64
- }
65
- const message = typeof err.message === 'string'
66
- ? err.message.toLowerCase()
67
- : '';
68
- if (message.includes('timeout') || message.includes('econnreset') ||
69
- message.includes('econnrefused') || message.includes('network') ||
70
- message.includes('socket hang up')) {
71
- return true;
72
- }
73
- return true;
74
- }
75
- /**
76
- * Flush a single batch to the stream bus with retry and exponential backoff.
77
- */
78
- async function flushBatchWithRetry(rsdk, botId, queueName, batch, maxRetries) {
79
- let lastError;
80
- for (let attempt = 0; attempt < maxRetries; attempt++) {
81
- try {
82
- const delay = BACKOFF_DELAYS_MS[attempt] ?? (attempt * 1000);
83
- if (delay > 0)
84
- await new Promise(resolve => setTimeout(resolve, delay));
85
- await putPayloadsToQueue(rsdk, botId, queueName, batch);
86
- return;
87
- }
88
- catch (err) {
89
- lastError = err;
90
- if (!isTransientError(err)) {
91
- throw new StreamingError(`Failed to write events: ${err instanceof Error ? err.message : String(err)}`, { details: { attempt: attempt + 1, transient: false, bot_id: botId, queue_name: queueName, batch_size: batch.length } });
92
- }
93
- }
94
- }
95
- throw new StreamingError(`Failed to write events after ${maxRetries} attempts: ${lastError instanceof Error ? lastError.message : String(lastError)}`, { details: { attempts: maxRetries, transient: true, bot_id: botId, queue_name: queueName, batch_size: batch.length } });
96
- }
97
27
  /**
98
28
  * Create the data_products API surface (get, list, search, query, list_tables, get_queue_info, get_reader_checkpoint, stream, replay, get_writer, get_reader, invalidate_cache).
99
29
  */
@@ -375,33 +305,9 @@ export function createDataProductsApi(http, deps) {
375
305
  const rsdk = createRStreamsSdk(streamResources);
376
306
  const botId = options?.bot_id ?? dataProduct.bot_id;
377
307
  const queueName = dataProduct.queue_name;
378
- const batchSize = options?.batch_size ?? 100;
379
- const maxRetries = options?.max_retries ?? 3;
380
- const buffer = [];
381
- let closed = false;
382
- return {
383
- write(event) {
384
- if (closed) {
385
- throw new StreamingError('Cannot write to a closed FlowWriter. Create a new writer via data_products.get_writer().', { details: { data_product_id: dataProduct.data_product_id, queue_name: queueName } });
386
- }
387
- buffer.push(event);
388
- },
389
- async close() {
390
- if (closed)
391
- return;
392
- closed = true;
393
- if (buffer.length === 0) {
394
- buffer.length = 0;
395
- return;
396
- }
397
- const events = [...buffer];
398
- buffer.length = 0;
399
- for (let i = 0; i < events.length; i += batchSize) {
400
- const batch = events.slice(i, i + batchSize);
401
- await flushBatchWithRetry(rsdk, botId, queueName, batch, maxRetries);
402
- }
403
- },
404
- };
308
+ // The rstreams `load` stream (inside createQueueWriter) owns buffering, batching, backoff,
309
+ // and checkpointing the wrapper just forwards business objects to it.
310
+ return createQueueWriter(rsdk, botId, queueName, () => new StreamingError('Cannot write to a closed FlowWriter. Create a new writer via data_products.get_writer().', { details: { data_product_id: dataProduct.data_product_id, queue_name: queueName } }));
405
311
  },
406
312
  /**
407
313
  * Resolve a data product by name or UUID and return an AsyncIterable that reads
@@ -471,6 +377,22 @@ export function createDataProductsApi(http, deps) {
471
377
  return;
472
378
  resolver.invalidate(idOrName);
473
379
  },
380
+ /**
381
+ * Check promotion readiness for a data product.
382
+ * Returns prerequisite checklist, progress percentage, and promotability.
383
+ */
384
+ async readiness(data_product_id) {
385
+ const res = await http.get(`/graph/promotions/${encodeURIComponent(data_product_id)}/readiness`);
386
+ return res.data;
387
+ },
388
+ /**
389
+ * Execute a medallion tier promotion (Bronze→Silver or Silver→Gold).
390
+ * Prerequisites are validated server-side. Returns 422 if not satisfied.
391
+ */
392
+ async promote(data_product_id, target_tier) {
393
+ const res = await http.post(`/graph/promotions/${encodeURIComponent(data_product_id)}/promote`, { target_tier });
394
+ return res.data;
395
+ },
474
396
  };
475
397
  }
476
398
  //# sourceMappingURL=data-products.js.map