@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.
- package/LICENSE +21 -0
- package/README.md +182 -0
- package/dist/__tests__/bootstrap.test.d.ts +2 -0
- package/dist/__tests__/bootstrap.test.d.ts.map +1 -0
- package/dist/__tests__/bootstrap.test.js +34 -0
- package/dist/__tests__/bootstrap.test.js.map +1 -0
- package/dist/app.d.ts +51 -0
- package/dist/app.d.ts.map +1 -0
- package/dist/app.js +170 -0
- package/dist/app.js.map +1 -0
- package/dist/create-app.d.ts +52 -0
- package/dist/create-app.d.ts.map +1 -0
- package/dist/create-app.js +94 -0
- package/dist/create-app.js.map +1 -0
- package/dist/hooks/app-ref.d.ts +71 -0
- package/dist/hooks/app-ref.d.ts.map +1 -0
- package/dist/hooks/app-ref.js +82 -0
- package/dist/hooks/app-ref.js.map +1 -0
- package/dist/hooks/context.d.ts +22 -0
- package/dist/hooks/context.d.ts.map +1 -0
- package/dist/hooks/context.js +26 -0
- package/dist/hooks/context.js.map +1 -0
- package/dist/hooks/hookable.d.ts +79 -0
- package/dist/hooks/hookable.d.ts.map +1 -0
- package/dist/hooks/hookable.js +137 -0
- package/dist/hooks/hookable.js.map +1 -0
- package/dist/hooks/index.d.ts +14 -0
- package/dist/hooks/index.d.ts.map +1 -0
- package/dist/hooks/index.js +13 -0
- package/dist/hooks/index.js.map +1 -0
- package/dist/hooks/queue.d.ts +57 -0
- package/dist/hooks/queue.d.ts.map +1 -0
- package/dist/hooks/queue.js +141 -0
- package/dist/hooks/queue.js.map +1 -0
- package/dist/index.d.ts +18 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +16 -0
- package/dist/index.js.map +1 -0
- package/dist/manifest.d.ts +10 -0
- package/dist/manifest.d.ts.map +1 -0
- package/dist/manifest.js +2 -0
- package/dist/manifest.js.map +1 -0
- 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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"}
|
package/dist/index.d.ts
ADDED
|
@@ -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"}
|
package/dist/manifest.js
ADDED
|
@@ -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
|
+
}
|