@aibloom/core 0.2.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 (62) hide show
  1. package/README.md +16 -0
  2. package/dist/design-docs/ConflictDetector.d.ts +21 -0
  3. package/dist/design-docs/ConflictDetector.d.ts.map +1 -0
  4. package/dist/design-docs/ConflictDetector.js +221 -0
  5. package/dist/design-docs/ConflictDetector.js.map +1 -0
  6. package/dist/design-docs/DesignDocParser.d.ts +17 -0
  7. package/dist/design-docs/DesignDocParser.d.ts.map +1 -0
  8. package/dist/design-docs/DesignDocParser.js +112 -0
  9. package/dist/design-docs/DesignDocParser.js.map +1 -0
  10. package/dist/design-docs/DesignSystemSynthesizer.d.ts +9 -0
  11. package/dist/design-docs/DesignSystemSynthesizer.d.ts.map +1 -0
  12. package/dist/design-docs/DesignSystemSynthesizer.js +141 -0
  13. package/dist/design-docs/DesignSystemSynthesizer.js.map +1 -0
  14. package/dist/design-docs/FusionOptionGenerator.d.ts +11 -0
  15. package/dist/design-docs/FusionOptionGenerator.d.ts.map +1 -0
  16. package/dist/design-docs/FusionOptionGenerator.js +157 -0
  17. package/dist/design-docs/FusionOptionGenerator.js.map +1 -0
  18. package/dist/design-docs/StyleFingerprintExtractor.d.ts +32 -0
  19. package/dist/design-docs/StyleFingerprintExtractor.d.ts.map +1 -0
  20. package/dist/design-docs/StyleFingerprintExtractor.js +365 -0
  21. package/dist/design-docs/StyleFingerprintExtractor.js.map +1 -0
  22. package/dist/design-docs/TokenNormalizer.d.ts +13 -0
  23. package/dist/design-docs/TokenNormalizer.d.ts.map +1 -0
  24. package/dist/design-docs/TokenNormalizer.js +97 -0
  25. package/dist/design-docs/TokenNormalizer.js.map +1 -0
  26. package/dist/errors.d.ts +7 -0
  27. package/dist/errors.d.ts.map +1 -0
  28. package/dist/errors.js +11 -0
  29. package/dist/errors.js.map +1 -0
  30. package/dist/framework/FrameworkAdapter.d.ts +10 -0
  31. package/dist/framework/FrameworkAdapter.d.ts.map +1 -0
  32. package/dist/framework/FrameworkAdapter.js +2 -0
  33. package/dist/framework/FrameworkAdapter.js.map +1 -0
  34. package/dist/framework/package.d.ts +8 -0
  35. package/dist/framework/package.d.ts.map +1 -0
  36. package/dist/framework/package.js +32 -0
  37. package/dist/framework/package.js.map +1 -0
  38. package/dist/index.d.ts +15 -0
  39. package/dist/index.d.ts.map +1 -0
  40. package/dist/index.js +15 -0
  41. package/dist/index.js.map +1 -0
  42. package/dist/json.d.ts +5 -0
  43. package/dist/json.d.ts.map +1 -0
  44. package/dist/json.js +43 -0
  45. package/dist/json.js.map +1 -0
  46. package/dist/safety/FileChangeApplier.d.ts +8 -0
  47. package/dist/safety/FileChangeApplier.d.ts.map +1 -0
  48. package/dist/safety/FileChangeApplier.js +73 -0
  49. package/dist/safety/FileChangeApplier.js.map +1 -0
  50. package/dist/state/ProjectStateStore.d.ts +16 -0
  51. package/dist/state/ProjectStateStore.d.ts.map +1 -0
  52. package/dist/state/ProjectStateStore.js +164 -0
  53. package/dist/state/ProjectStateStore.js.map +1 -0
  54. package/dist/state/RunRecordStore.d.ts +10 -0
  55. package/dist/state/RunRecordStore.d.ts.map +1 -0
  56. package/dist/state/RunRecordStore.js +39 -0
  57. package/dist/state/RunRecordStore.js.map +1 -0
  58. package/dist/tasks/TaskStore.d.ts +12 -0
  59. package/dist/tasks/TaskStore.d.ts.map +1 -0
  60. package/dist/tasks/TaskStore.js +48 -0
  61. package/dist/tasks/TaskStore.js.map +1 -0
  62. package/package.json +24 -0
@@ -0,0 +1,39 @@
1
+ import fs from "node:fs/promises";
2
+ import path from "node:path";
3
+ import { RunRecordSchema } from "@aibloom/schemas";
4
+ import { readJsonFile, writeJsonFile } from "../json.js";
5
+ export class RunRecordStore {
6
+ runsDir;
7
+ constructor(projectRoot = process.cwd()) {
8
+ this.runsDir = path.join(projectRoot, ".vibeui", "runs");
9
+ }
10
+ async append(run) {
11
+ const parsed = RunRecordSchema.parse(run);
12
+ await writeJsonFile(path.join(this.runsDir, `${run.id}.json`), parsed);
13
+ }
14
+ async get(runId) {
15
+ try {
16
+ return await readJsonFile(path.join(this.runsDir, `${runId}.json`), RunRecordSchema);
17
+ }
18
+ catch {
19
+ return null;
20
+ }
21
+ }
22
+ async list() {
23
+ try {
24
+ const entries = await fs.readdir(this.runsDir);
25
+ const records = await Promise.all(entries
26
+ .filter((entry) => entry.endsWith(".json"))
27
+ .map((entry) => readJsonFile(path.join(this.runsDir, entry), RunRecordSchema)));
28
+ return records.sort((a, b) => Date.parse(b.startedAt) - Date.parse(a.startedAt));
29
+ }
30
+ catch {
31
+ return [];
32
+ }
33
+ }
34
+ async lastRun() {
35
+ const runs = await this.list();
36
+ return runs[0] ?? null;
37
+ }
38
+ }
39
+ //# sourceMappingURL=RunRecordStore.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RunRecordStore.js","sourceRoot":"","sources":["../../src/state/RunRecordStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,eAAe,EAAkB,MAAM,kBAAkB,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEzD,MAAM,OAAO,cAAc;IACR,OAAO,CAAS;IAEjC,YAAY,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE;QACrC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;IAC3D,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,GAAc;QACzB,MAAM,MAAM,GAAG,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC1C,MAAM,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,GAAG,CAAC,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,CAAC;IACzE,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,KAAa;QACrB,IAAI,CAAC;YACH,OAAO,MAAM,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,KAAK,OAAO,CAAC,EAAE,eAAe,CAAC,CAAC;QACvF,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,KAAK,CAAC,IAAI;QACR,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC/C,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAC/B,OAAO;iBACJ,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;iBAC1C,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,eAAe,CAAC,CAAC,CACjF,CAAC;YACF,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;QACnF,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAED,KAAK,CAAC,OAAO;QACX,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;QAC/B,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;IACzB,CAAC;CACF"}
@@ -0,0 +1,12 @@
1
+ import { type HostTask, type HostTaskResult } from "@aibloom/schemas";
2
+ export declare class TaskStore {
3
+ private readonly tasksDir;
4
+ constructor(projectRoot?: string);
5
+ private taskDir;
6
+ create(task: HostTask): Promise<void>;
7
+ get(taskId: string): Promise<HostTask>;
8
+ list(): Promise<HostTask[]>;
9
+ next(): Promise<HostTask | null>;
10
+ saveResult(result: HostTaskResult): Promise<void>;
11
+ }
12
+ //# sourceMappingURL=TaskStore.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TaskStore.d.ts","sourceRoot":"","sources":["../../src/tasks/TaskStore.ts"],"names":[],"mappings":"AAEA,OAAO,EAGL,KAAK,QAAQ,EACb,KAAK,cAAc,EACpB,MAAM,kBAAkB,CAAC;AAI1B,qBAAa,SAAS;IACpB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;gBAEtB,WAAW,SAAgB;IAIvC,OAAO,CAAC,OAAO;IAIT,MAAM,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAIrC,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAQtC,IAAI,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;IAU3B,IAAI,IAAI,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAKhC,UAAU,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;CAWxD"}
@@ -0,0 +1,48 @@
1
+ import fs from "node:fs/promises";
2
+ import path from "node:path";
3
+ import { HostTaskResultSchema, HostTaskSchema, } from "@aibloom/schemas";
4
+ import { VibeUIError } from "../errors.js";
5
+ import { readJsonFile, writeJsonFile } from "../json.js";
6
+ export class TaskStore {
7
+ tasksDir;
8
+ constructor(projectRoot = process.cwd()) {
9
+ this.tasksDir = path.join(projectRoot, ".vibeui", "tasks");
10
+ }
11
+ taskDir(taskId) {
12
+ return path.join(this.tasksDir, taskId);
13
+ }
14
+ async create(task) {
15
+ await writeJsonFile(path.join(this.taskDir(task.id), "task.json"), HostTaskSchema.parse(task));
16
+ }
17
+ async get(taskId) {
18
+ try {
19
+ return await readJsonFile(path.join(this.taskDir(taskId), "task.json"), HostTaskSchema);
20
+ }
21
+ catch {
22
+ throw new VibeUIError("TASK_NOT_FOUND", `Task not found: ${taskId}`);
23
+ }
24
+ }
25
+ async list() {
26
+ try {
27
+ const entries = await fs.readdir(this.tasksDir);
28
+ const tasks = await Promise.all(entries.map((entry) => this.get(entry)));
29
+ return tasks.sort((a, b) => Date.parse(a.createdAt) - Date.parse(b.createdAt));
30
+ }
31
+ catch {
32
+ return [];
33
+ }
34
+ }
35
+ async next() {
36
+ const tasks = await this.list();
37
+ return tasks.find((task) => task.status === "pending") ?? null;
38
+ }
39
+ async saveResult(result) {
40
+ await writeJsonFile(path.join(this.taskDir(result.taskId), "result.json"), HostTaskResultSchema.parse(result));
41
+ const task = await this.get(result.taskId);
42
+ await this.create({
43
+ ...task,
44
+ status: result.status === "completed" ? "completed" : "failed",
45
+ });
46
+ }
47
+ }
48
+ //# sourceMappingURL=TaskStore.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TaskStore.js","sourceRoot":"","sources":["../../src/tasks/TaskStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EACL,oBAAoB,EACpB,cAAc,GAGf,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEzD,MAAM,OAAO,SAAS;IACH,QAAQ,CAAS;IAElC,YAAY,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE;QACrC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;IAC7D,CAAC;IAEO,OAAO,CAAC,MAAc;QAC5B,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC1C,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,IAAc;QACzB,MAAM,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,WAAW,CAAC,EAAE,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IACjG,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,MAAc;QACtB,IAAI,CAAC;YACH,OAAO,MAAM,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC,EAAE,cAAc,CAAC,CAAC;QAC1F,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,IAAI,WAAW,CAAC,gBAAgB,EAAE,mBAAmB,MAAM,EAAE,CAAC,CAAC;QACvE,CAAC;IACH,CAAC;IAED,KAAK,CAAC,IAAI;QACR,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAChD,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACzE,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;QACjF,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAED,KAAK,CAAC,IAAI;QACR,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;QAChC,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,KAAK,SAAS,CAAC,IAAI,IAAI,CAAC;IACjE,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,MAAsB;QACrC,MAAM,aAAa,CACjB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,aAAa,CAAC,EACrD,oBAAoB,CAAC,KAAK,CAAC,MAAM,CAAC,CACnC,CAAC;QACF,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC3C,MAAM,IAAI,CAAC,MAAM,CAAC;YAChB,GAAG,IAAI;YACP,MAAM,EAAE,MAAM,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ;SAC/D,CAAC,CAAC;IACL,CAAC;CACF"}
package/package.json ADDED
@@ -0,0 +1,24 @@
1
+ {
2
+ "name": "@aibloom/core",
3
+ "version": "0.2.0",
4
+ "description": "Aibloom workflow engine, orchestrator, state machine, and design pipeline core",
5
+ "license": "MIT",
6
+ "type": "module",
7
+ "main": "./dist/index.js",
8
+ "types": "./dist/index.d.ts",
9
+ "exports": {
10
+ ".": {
11
+ "types": "./dist/index.d.ts",
12
+ "import": "./dist/index.js"
13
+ }
14
+ },
15
+ "files": ["dist", "README.md"],
16
+ "scripts": {
17
+ "build": "tsc -p tsconfig.json",
18
+ "typecheck": "tsc -p tsconfig.json --noEmit"
19
+ },
20
+ "dependencies": {
21
+ "@aibloom/schemas": "0.2.0",
22
+ "zod": "^3.23.0"
23
+ }
24
+ }