@feltdb/core 0.7.2 → 0.7.4
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/dist/application-development.d.ts +76 -0
- package/dist/application-development.d.ts.map +1 -0
- package/dist/application-development.js +137 -0
- package/dist/application-manifest.d.ts +5 -1
- package/dist/application-manifest.d.ts.map +1 -1
- package/dist/application-manifest.js +10 -3
- package/dist/canonical-application.d.ts +26 -0
- package/dist/canonical-application.d.ts.map +1 -0
- package/dist/canonical-application.js +45 -0
- package/dist/cli/ai-model-config.js +97 -0
- package/dist/cli/commands.js +485 -30
- package/dist/cli/index.js +1 -1
- package/dist/cli/proposal-client.js +54 -0
- package/dist/cli/publish-engine.js +162 -0
- package/dist/cli/source-sync.js +139 -0
- package/dist/create/cli.js +1 -1
- package/dist/create/create.js +30 -6
- package/dist/create/managed-account.js +14 -7
- package/dist/create/package-versions.js +1 -1
- package/dist/create/server-source/crates/feltdb/src/application.rs +31 -1
- package/dist/create/server-source/crates/feltdb/src/authority_failover.rs +847 -0
- package/dist/create/server-source/crates/feltdb/src/bin/feltdb_node.rs +338 -29
- package/dist/create/server-source/crates/feltdb/src/distributed_transactions.rs +72 -34
- package/dist/create/server-source/crates/feltdb/src/lib.rs +1 -0
- package/dist/create/server-source/crates/feltdb-server/src/identity.rs +46 -3
- package/dist/create/server-source/crates/feltdb-server/src/main.rs +315 -16
- package/dist/create/server-source/crates/feltdb-server/src/tenancy.rs +20 -0
- package/dist/create/template/default-project/README.md +57 -0
- package/dist/create/template/default-project/agents/activity-assistant.ts +18 -0
- package/dist/create/template/default-project/agents/project-assistant.ts +19 -0
- package/dist/create/template/default-project/capabilities/activity-summary.ts +14 -0
- package/dist/create/template/default-project/capabilities/project-search.ts +16 -0
- package/dist/create/template/default-project/capabilities/project-summary.ts +15 -0
- package/dist/create/template/default-project/feltdb.flow +169 -0
- package/dist/create/template/default-project/src/App.tsx +20 -0
- package/dist/create/template/default-project/src/context/AuthContext.tsx +27 -0
- package/dist/create/template/default-project/src/feltdb.ts +87 -0
- package/dist/create/template/default-project/src/index.tsx +14 -0
- package/dist/create/template/default-project/src/pages/Activity.tsx +7 -0
- package/dist/create/template/default-project/src/pages/Agents.tsx +15 -0
- package/dist/create/template/default-project/src/pages/Dashboard.tsx +17 -0
- package/dist/create/template/default-project/src/pages/Invitations.tsx +11 -0
- package/dist/create/template/default-project/src/pages/Projects.tsx +11 -0
- package/dist/create/template/default-project/src/pages/SignIn.tsx +8 -0
- package/dist/create/template/default-project/src/pages/SignUp.tsx +8 -0
- package/dist/create/template/default-project/src/styles-application.css +21 -0
- package/dist/create/template/default-project/src/styles.css +1 -0
- package/dist/create/template/default-project/workflows/agent-assisted-summary.ts +1 -0
- package/dist/create/template/default-project/workflows/invitation.ts +30 -0
- package/dist/create/template/default-project/workflows/project-created.ts +2 -0
- package/dist/db.d.ts +49 -1
- package/dist/db.d.ts.map +1 -1
- package/dist/db.js +77 -0
- package/dist/error-codes.d.ts +20 -1
- package/dist/error-codes.d.ts.map +1 -1
- package/dist/error-codes.js +25 -0
- package/dist/flowspec.d.ts.map +1 -1
- package/dist/flowspec.js +27 -6
- package/dist/http-db.d.ts +15 -2
- package/dist/http-db.d.ts.map +1 -1
- package/dist/http-db.js +113 -5
- package/dist/index-core.d.ts +3 -0
- package/dist/index-core.d.ts.map +1 -1
- package/dist/index-core.js +3 -0
- package/dist/proposal.d.ts +85 -0
- package/dist/proposal.d.ts.map +1 -0
- package/dist/proposal.js +105 -0
- package/dist/studio/app.d.ts +5 -1
- package/dist/studio/app.d.ts.map +1 -1
- package/dist/studio/components/ApplicationDesigner.d.ts +10 -1
- package/dist/studio/components/ApplicationDesigner.d.ts.map +1 -1
- package/dist/studio/components/AskFeltDB.d.ts +20 -0
- package/dist/studio/components/AskFeltDB.d.ts.map +1 -0
- package/dist/studio/components/ProposalBrowser.d.ts +3 -0
- package/dist/studio/components/ProposalBrowser.d.ts.map +1 -0
- package/dist/studio/components/index.d.ts +2 -0
- package/dist/studio/components/index.d.ts.map +1 -1
- package/dist/studio/components/index.js +4 -4
- package/dist/studio/{components-C5p2TfIU.js → components-Bm4sjhcX.js} +531 -192
- package/dist/studio/index.js +184 -172
- package/dist/studio/studio.css +1 -1
- package/dist/studio-app/assets/dist-DA1MYSzp.js +1 -0
- package/dist/studio-app/assets/{feltdb_wasm-DVKsw75S.js → feltdb_wasm-B-Ccgccb.js} +1 -1
- package/dist/studio-app/assets/feltdb_wasm_bg-wH3enJIA.wasm +0 -0
- package/dist/studio-app/assets/{index-C1GWyazR.css → index-BRrmvaKw.css} +1 -1
- package/dist/studio-app/assets/index-CEIqowCh.js +42 -0
- package/dist/studio-app/assets/lib-B2_7fcn7.js +69 -0
- package/dist/studio-app/assets/worker-CARZ5g7K.js +69 -0
- package/dist/studio-app/index.html +2 -2
- package/dist/wasm/feltdb_wasm_bg.wasm +0 -0
- package/dist/workspace/local-development-authority.d.ts +3 -0
- package/dist/workspace/local-development-authority.d.ts.map +1 -1
- package/dist/workspace/local-development-authority.js +62 -1
- package/package.json +1 -1
- package/dist/studio-app/assets/feltdb_wasm_bg-DNyNf0yy.wasm +0 -0
- package/dist/studio-app/assets/index-C71X92EK.js +0 -28
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
<!doctype html><html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width,initial-scale=1"/><meta name="theme-color" content="#17211b"/><title>FeltDB Studio</title> <script type="module" crossorigin src="/assets/index-
|
|
2
|
-
<link rel="stylesheet" crossorigin href="/assets/index-
|
|
1
|
+
<!doctype html><html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width,initial-scale=1"/><meta name="theme-color" content="#17211b"/><title>FeltDB Studio</title> <script type="module" crossorigin src="/assets/index-CEIqowCh.js"></script>
|
|
2
|
+
<link rel="stylesheet" crossorigin href="/assets/index-BRrmvaKw.css">
|
|
3
3
|
</head><body><div id="root"></div></body></html>
|
|
Binary file
|
|
@@ -1,11 +1,14 @@
|
|
|
1
|
+
import { type ProposalContext } from '../proposal.js';
|
|
1
2
|
export interface LocalDevelopmentAuthority {
|
|
2
3
|
endpoint: string;
|
|
4
|
+
proposalAuthorityToken: string;
|
|
3
5
|
close(): Promise<void>;
|
|
4
6
|
}
|
|
5
7
|
export interface LocalDevelopmentAuthorityOptions {
|
|
6
8
|
dataDir: string;
|
|
7
9
|
host?: string;
|
|
8
10
|
port?: number;
|
|
11
|
+
proposalContext?: () => Promise<ProposalContext>;
|
|
9
12
|
}
|
|
10
13
|
/** Start the durable, unauthenticated loopback authority used by `feltdb dev`. */
|
|
11
14
|
export declare function startLocalDevelopmentAuthority(options: LocalDevelopmentAuthorityOptions): Promise<LocalDevelopmentAuthority>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"local-development-authority.d.ts","sourceRoot":"","sources":["../../src/workspace/local-development-authority.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"local-development-authority.d.ts","sourceRoot":"","sources":["../../src/workspace/local-development-authority.ts"],"names":[],"mappings":"AAGA,OAAO,EAAyB,KAAK,eAAe,EAAsB,MAAM,gBAAgB,CAAC;AAEjG,MAAM,WAAW,yBAAyB;IACxC,QAAQ,EAAE,MAAM,CAAC;IACjB,sBAAsB,EAAE,MAAM,CAAC;IAC/B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAED,MAAM,WAAW,gCAAgC;IAC/C,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,eAAe,CAAC,EAAE,MAAM,OAAO,CAAC,eAAe,CAAC,CAAC;CAClD;AAED,kFAAkF;AAClF,wBAAsB,8BAA8B,CAClD,OAAO,EAAE,gCAAgC,GACxC,OAAO,CAAC,yBAAyB,CAAC,CAuHpC"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import http from 'node:http';
|
|
2
2
|
import path from 'node:path';
|
|
3
3
|
import { FileJsDb } from '../file-db.js';
|
|
4
|
+
import { FeltDBProposalService } from '../proposal.js';
|
|
4
5
|
/** Start the durable, unauthenticated loopback authority used by `feltdb dev`. */
|
|
5
6
|
export async function startLocalDevelopmentAuthority(options) {
|
|
6
7
|
const host = options.host || '127.0.0.1';
|
|
@@ -9,12 +10,24 @@ export async function startLocalDevelopmentAuthority(options) {
|
|
|
9
10
|
throw new Error('The development authority may only bind to a loopback address');
|
|
10
11
|
}
|
|
11
12
|
const db = new FileJsDb(path.resolve(options.dataDir));
|
|
13
|
+
const proposalAuthorityToken = crypto.randomUUID();
|
|
14
|
+
const store = {
|
|
15
|
+
async get(collection, id) { const result = db.get(`${collection}:${id}`); if (!result.success)
|
|
16
|
+
throw new Error(result.error); return result.data ? JSON.parse(result.data) : undefined; },
|
|
17
|
+
async list(collection) { const result = db.query(collection); if (!result.success)
|
|
18
|
+
throw new Error(result.error); return JSON.parse(result.data || '[]'); },
|
|
19
|
+
async create(collection, id, value) { const result = db.insert(`${collection}:${id}`, JSON.stringify(value)); if (!result.success)
|
|
20
|
+
throw new Error(result.error); },
|
|
21
|
+
async replace(collection, id, value) { const result = db.update(`${collection}:${id}`, JSON.stringify(value)); if (!result.success)
|
|
22
|
+
throw new Error(result.error); },
|
|
23
|
+
};
|
|
24
|
+
const proposalService = options.proposalContext ? new FeltDBProposalService(store, options.proposalContext, proposalAuthorityToken) : undefined;
|
|
12
25
|
const streams = new Set();
|
|
13
26
|
const server = http.createServer(async (request, response) => {
|
|
14
27
|
try {
|
|
15
28
|
response.setHeader('Access-Control-Allow-Origin', '*');
|
|
16
29
|
response.setHeader('Access-Control-Allow-Methods', 'GET, POST, PATCH, DELETE, OPTIONS');
|
|
17
|
-
response.setHeader('Access-Control-Allow-Headers', 'Authorization, Content-Type, FeltDB-Protocol');
|
|
30
|
+
response.setHeader('Access-Control-Allow-Headers', 'Authorization, Content-Type, FeltDB-Protocol, FeltDB-Proposal-Authority');
|
|
18
31
|
response.setHeader('Cache-Control', 'no-store');
|
|
19
32
|
if (request.method === 'OPTIONS') {
|
|
20
33
|
response.statusCode = 204;
|
|
@@ -38,12 +51,59 @@ export async function startLocalDevelopmentAuthority(options) {
|
|
|
38
51
|
request.once('close', () => streams.delete(response));
|
|
39
52
|
return;
|
|
40
53
|
}
|
|
54
|
+
const proposalMatch = pathname.match(/^\/v1\/proposals(?:\/([^/]+)(?:\/(validate|preview|status|history))?)?$/);
|
|
55
|
+
if (proposalMatch) {
|
|
56
|
+
if (!proposalService) {
|
|
57
|
+
json(response, 503, { error: 'PROPOSAL_SERVICE_UNAVAILABLE' });
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
const id = proposalMatch[1] ? decodeURIComponent(proposalMatch[1]) : undefined;
|
|
61
|
+
const operation = proposalMatch[2];
|
|
62
|
+
const body = await readBody(request);
|
|
63
|
+
const input = body ? parseObject(body) : {};
|
|
64
|
+
const actor = typeof input.actor === 'string' ? input.actor : 'local-developer';
|
|
65
|
+
if (request.method === 'POST' && !id) {
|
|
66
|
+
json(response, 201, await proposalService.create(input));
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
if (request.method === 'GET' && !id) {
|
|
70
|
+
json(response, 200, { proposals: await proposalService.list() });
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
if (request.method === 'GET' && id && !operation) {
|
|
74
|
+
json(response, 200, await proposalService.get(id));
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
77
|
+
if (request.method === 'GET' && id && operation === 'history') {
|
|
78
|
+
json(response, 200, { events: await proposalService.history(id) });
|
|
79
|
+
return;
|
|
80
|
+
}
|
|
81
|
+
if (request.method === 'POST' && id && operation === 'validate') {
|
|
82
|
+
json(response, 200, await proposalService.validate(id, actor));
|
|
83
|
+
return;
|
|
84
|
+
}
|
|
85
|
+
if (request.method === 'POST' && id && operation === 'preview') {
|
|
86
|
+
json(response, 200, await proposalService.preview(id, actor));
|
|
87
|
+
return;
|
|
88
|
+
}
|
|
89
|
+
if (request.method === 'PATCH' && id && operation === 'status') {
|
|
90
|
+
const status = String(input.status || '');
|
|
91
|
+
json(response, 200, await proposalService.transition(id, status, actor, request.headers['feltdb-proposal-authority'], input.approve_authorization === true));
|
|
92
|
+
return;
|
|
93
|
+
}
|
|
94
|
+
json(response, 405, { error: 'METHOD_NOT_ALLOWED' });
|
|
95
|
+
return;
|
|
96
|
+
}
|
|
41
97
|
const match = pathname.match(/^\/collections\/([^/]+)(?:\/([^/]+))?$/);
|
|
42
98
|
if (!match) {
|
|
43
99
|
json(response, 404, { error: 'NOT_FOUND' });
|
|
44
100
|
return;
|
|
45
101
|
}
|
|
46
102
|
const collection = decodeURIComponent(match[1]);
|
|
103
|
+
if (collection.startsWith('_feltdb.')) {
|
|
104
|
+
json(response, 403, { error: 'SYSTEM_COLLECTION_REQUIRES_SERVICE_API' });
|
|
105
|
+
return;
|
|
106
|
+
}
|
|
47
107
|
const id = match[2] ? decodeURIComponent(match[2]) : undefined;
|
|
48
108
|
const body = await readBody(request);
|
|
49
109
|
let result;
|
|
@@ -108,6 +168,7 @@ export async function startLocalDevelopmentAuthority(options) {
|
|
|
108
168
|
});
|
|
109
169
|
return {
|
|
110
170
|
endpoint: `http://${host}:${port}`,
|
|
171
|
+
proposalAuthorityToken,
|
|
111
172
|
close: () => new Promise((resolve, reject) => {
|
|
112
173
|
for (const stream of streams)
|
|
113
174
|
stream.end();
|
package/package.json
CHANGED
|
Binary file
|