@manifesto-ai/sdk 0.1.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 (43) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +182 -0
  3. package/dist/__tests__/bootstrap.test.d.ts +2 -0
  4. package/dist/__tests__/bootstrap.test.d.ts.map +1 -0
  5. package/dist/__tests__/bootstrap.test.js +34 -0
  6. package/dist/__tests__/bootstrap.test.js.map +1 -0
  7. package/dist/app.d.ts +51 -0
  8. package/dist/app.d.ts.map +1 -0
  9. package/dist/app.js +170 -0
  10. package/dist/app.js.map +1 -0
  11. package/dist/create-app.d.ts +52 -0
  12. package/dist/create-app.d.ts.map +1 -0
  13. package/dist/create-app.js +94 -0
  14. package/dist/create-app.js.map +1 -0
  15. package/dist/hooks/app-ref.d.ts +71 -0
  16. package/dist/hooks/app-ref.d.ts.map +1 -0
  17. package/dist/hooks/app-ref.js +82 -0
  18. package/dist/hooks/app-ref.js.map +1 -0
  19. package/dist/hooks/context.d.ts +22 -0
  20. package/dist/hooks/context.d.ts.map +1 -0
  21. package/dist/hooks/context.js +26 -0
  22. package/dist/hooks/context.js.map +1 -0
  23. package/dist/hooks/hookable.d.ts +79 -0
  24. package/dist/hooks/hookable.d.ts.map +1 -0
  25. package/dist/hooks/hookable.js +137 -0
  26. package/dist/hooks/hookable.js.map +1 -0
  27. package/dist/hooks/index.d.ts +14 -0
  28. package/dist/hooks/index.d.ts.map +1 -0
  29. package/dist/hooks/index.js +13 -0
  30. package/dist/hooks/index.js.map +1 -0
  31. package/dist/hooks/queue.d.ts +57 -0
  32. package/dist/hooks/queue.d.ts.map +1 -0
  33. package/dist/hooks/queue.js +141 -0
  34. package/dist/hooks/queue.js.map +1 -0
  35. package/dist/index.d.ts +18 -0
  36. package/dist/index.d.ts.map +1 -0
  37. package/dist/index.js +16 -0
  38. package/dist/index.js.map +1 -0
  39. package/dist/manifest.d.ts +10 -0
  40. package/dist/manifest.d.ts.map +1 -0
  41. package/dist/manifest.js +2 -0
  42. package/dist/manifest.js.map +1 -0
  43. package/package.json +51 -0
@@ -0,0 +1,141 @@
1
+ /**
2
+ * Job Queue Implementation
3
+ *
4
+ * Manages enqueued jobs with priority support.
5
+ *
6
+ * @see SPEC §11.3 ENQ-1~6
7
+ * @module
8
+ */
9
+ /**
10
+ * Job Queue for managing enqueued jobs.
11
+ *
12
+ * @see SPEC §11.3
13
+ */
14
+ export class JobQueue {
15
+ _immediateJobs = [];
16
+ _normalJobs = [];
17
+ _deferredJobs = [];
18
+ _isProcessing = false;
19
+ _processScheduled = false;
20
+ /**
21
+ * Enqueue a job with optional priority.
22
+ *
23
+ * ENQ-1: Jobs are executed after the current hook completes
24
+ * ENQ-2: Priority ordering: immediate > normal > defer
25
+ * ENQ-3: Within same priority, FIFO ordering
26
+ *
27
+ * @see SPEC §11.3
28
+ */
29
+ enqueue(job, opts) {
30
+ const priority = opts?.priority ?? "normal";
31
+ const queuedJob = {
32
+ job,
33
+ priority,
34
+ label: opts?.label,
35
+ enqueuedAt: Date.now(),
36
+ };
37
+ switch (priority) {
38
+ case "immediate":
39
+ this._immediateJobs.push(queuedJob);
40
+ break;
41
+ case "defer":
42
+ this._deferredJobs.push(queuedJob);
43
+ break;
44
+ case "normal":
45
+ default:
46
+ this._normalJobs.push(queuedJob);
47
+ break;
48
+ }
49
+ // Schedule processing if not already scheduled
50
+ this._scheduleProcess();
51
+ }
52
+ /**
53
+ * Process all pending jobs.
54
+ *
55
+ * ENQ-4: Jobs are processed in priority order
56
+ * ENQ-5: Errors in jobs are caught and logged (don't break queue)
57
+ * ENQ-6: New jobs enqueued during processing are handled
58
+ *
59
+ * @see SPEC §11.3
60
+ */
61
+ async processAll() {
62
+ if (this._isProcessing) {
63
+ return;
64
+ }
65
+ this._isProcessing = true;
66
+ this._processScheduled = false;
67
+ try {
68
+ // Process until all queues are empty
69
+ while (this._hasJobs()) {
70
+ // Process in priority order: immediate > normal > defer
71
+ const job = this._dequeueNext();
72
+ if (job) {
73
+ try {
74
+ await job.job();
75
+ }
76
+ catch (error) {
77
+ // ENQ-5: Log error but continue processing
78
+ console.error(`[JobQueue] Error in job${job.label ? ` "${job.label}"` : ""}:`, error);
79
+ }
80
+ }
81
+ }
82
+ }
83
+ finally {
84
+ this._isProcessing = false;
85
+ }
86
+ }
87
+ /**
88
+ * Check if queue has pending jobs.
89
+ */
90
+ hasPendingJobs() {
91
+ return this._hasJobs();
92
+ }
93
+ /**
94
+ * Get count of pending jobs.
95
+ */
96
+ pendingCount() {
97
+ return (this._immediateJobs.length +
98
+ this._normalJobs.length +
99
+ this._deferredJobs.length);
100
+ }
101
+ /**
102
+ * Clear all pending jobs.
103
+ */
104
+ clear() {
105
+ this._immediateJobs = [];
106
+ this._normalJobs = [];
107
+ this._deferredJobs = [];
108
+ }
109
+ // ===========================================================================
110
+ // Private Methods
111
+ // ===========================================================================
112
+ _hasJobs() {
113
+ return (this._immediateJobs.length > 0 ||
114
+ this._normalJobs.length > 0 ||
115
+ this._deferredJobs.length > 0);
116
+ }
117
+ _dequeueNext() {
118
+ // Priority order: immediate > normal > defer
119
+ if (this._immediateJobs.length > 0) {
120
+ return this._immediateJobs.shift();
121
+ }
122
+ if (this._normalJobs.length > 0) {
123
+ return this._normalJobs.shift();
124
+ }
125
+ if (this._deferredJobs.length > 0) {
126
+ return this._deferredJobs.shift();
127
+ }
128
+ return undefined;
129
+ }
130
+ _scheduleProcess() {
131
+ if (this._processScheduled || this._isProcessing) {
132
+ return;
133
+ }
134
+ this._processScheduled = true;
135
+ // Use queueMicrotask for immediate scheduling
136
+ queueMicrotask(() => {
137
+ void this.processAll();
138
+ });
139
+ }
140
+ }
141
+ //# sourceMappingURL=queue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queue.js","sourceRoot":"","sources":["../../src/hooks/queue.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * @manifesto-ai/sdk v0.1.0
3
+ *
4
+ * Public developer API layer for the Manifesto protocol stack.
5
+ *
6
+ * @see sdk-SPEC-v0.1.0.md
7
+ * @packageDocumentation
8
+ */
9
+ export type { SdkManifest } from './manifest.js';
10
+ export { createApp, createTestApp } from './create-app.js';
11
+ export { ManifestoApp } from './app.js';
12
+ export { AppRefImpl, createAppRef } from './hooks/index.js';
13
+ export type { AppRefCallbacks } from './hooks/index.js';
14
+ export { HookableImpl } from './hooks/index.js';
15
+ export type { HookState } from './hooks/index.js';
16
+ export { JobQueue } from './hooks/index.js';
17
+ export { HookContextImpl, createHookContext } from './hooks/index.js';
18
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,YAAY,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAMjD,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAM3D,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAMxC,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAC5D,YAAY,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,YAAY,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,16 @@
1
+ // =============================================================================
2
+ // App Factory (SDK-CREATE)
3
+ // =============================================================================
4
+ export { createApp, createTestApp } from './create-app.js';
5
+ // =============================================================================
6
+ // ManifestoApp (SDK-APP)
7
+ // =============================================================================
8
+ export { ManifestoApp } from './app.js';
9
+ // =============================================================================
10
+ // Hooks (SDK-HOOKS)
11
+ // =============================================================================
12
+ export { AppRefImpl, createAppRef } from './hooks/index.js';
13
+ export { HookableImpl } from './hooks/index.js';
14
+ export { JobQueue } from './hooks/index.js';
15
+ export { HookContextImpl, createHookContext } from './hooks/index.js';
16
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAUA,gFAAgF;AAChF,2BAA2B;AAC3B,gFAAgF;AAEhF,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAE3D,gFAAgF;AAChF,yBAAyB;AACzB,gFAAgF;AAEhF,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAExC,gFAAgF;AAChF,oBAAoB;AACpB,gFAAgF;AAEhF,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAE5D,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEhD,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * SDK package identity and SPEC version metadata.
3
+ * Used for phase tracking and compatibility verification.
4
+ */
5
+ export type SdkManifest = {
6
+ readonly name: '@manifesto-ai/sdk';
7
+ readonly specVersion: '0.1.0';
8
+ readonly phase: 'bootstrap';
9
+ };
10
+ //# sourceMappingURL=manifest.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../src/manifest.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,MAAM,WAAW,GAAG;IACxB,QAAQ,CAAC,IAAI,EAAE,mBAAmB,CAAC;IACnC,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC;CAC7B,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=manifest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manifest.js","sourceRoot":"","sources":["../src/manifest.ts"],"names":[],"mappings":""}
package/package.json ADDED
@@ -0,0 +1,51 @@
1
+ {
2
+ "name": "@manifesto-ai/sdk",
3
+ "version": "0.1.0",
4
+ "description": "Manifesto SDK - Public developer API layer",
5
+ "author": "eggplantiny <eggplantiny@gmail.com>",
6
+ "license": "MIT",
7
+ "repository": {
8
+ "type": "git",
9
+ "url": "git+https://github.com/manifesto-ai/core.git",
10
+ "directory": "packages/sdk"
11
+ },
12
+ "bugs": {
13
+ "url": "https://github.com/manifesto-ai/core/issues"
14
+ },
15
+ "homepage": "https://github.com/manifesto-ai/core/tree/main/packages/sdk#readme",
16
+ "keywords": [
17
+ "manifesto",
18
+ "sdk",
19
+ "state-management",
20
+ "deterministic",
21
+ "semantic",
22
+ "traceable",
23
+ "ai"
24
+ ],
25
+ "type": "module",
26
+ "main": "./dist/index.js",
27
+ "types": "./dist/index.d.ts",
28
+ "exports": {
29
+ ".": {
30
+ "types": "./dist/index.d.ts",
31
+ "import": "./dist/index.js"
32
+ }
33
+ },
34
+ "files": [
35
+ "dist"
36
+ ],
37
+ "dependencies": {
38
+ "@manifesto-ai/core": "2.4.0",
39
+ "@manifesto-ai/runtime": "0.1.0",
40
+ "@manifesto-ai/world": "2.3.0"
41
+ },
42
+ "devDependencies": {
43
+ "typescript": "^5.9.3"
44
+ },
45
+ "scripts": {
46
+ "build": "tsc",
47
+ "dev": "tsc --watch",
48
+ "clean": "rm -rf dist",
49
+ "test": "vitest run"
50
+ }
51
+ }