@feltdb/core 0.8.0 → 0.8.1
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 +7 -2
- package/dist/application-development.d.ts.map +1 -1
- package/dist/application-development.js +7 -13
- package/dist/application-manifest.d.ts +1 -0
- package/dist/application-manifest.d.ts.map +1 -1
- package/dist/application-manifest.js +1 -1
- package/dist/application-understanding.d.ts +76 -0
- package/dist/application-understanding.d.ts.map +1 -0
- package/dist/application-understanding.js +282 -0
- package/dist/cli/ai-model-config.js +3 -3
- package/dist/cli/commands.js +131 -38
- package/dist/cli/proposal-client.js +5 -1
- package/dist/cli/publish-engine.js +1 -1
- package/dist/cli/repository-evidence.js +55 -0
- package/dist/cli/source-sync.js +190 -75
- package/dist/convergence.d.ts +55 -0
- package/dist/convergence.d.ts.map +1 -0
- package/dist/convergence.js +63 -0
- package/dist/create/managed-account.js +1 -0
- package/dist/create/package-versions.js +1 -1
- package/dist/create/server-source/crates/feltdb/src/application.rs +4 -0
- package/dist/create/server-source/crates/feltdb-server/src/connections.rs +14 -0
- package/dist/create/server-source/crates/feltdb-server/src/main.rs +174 -24
- package/dist/create/server-source/crates/feltdb-server/src/tenancy.rs +8 -1
- package/dist/create/template/default-project/src/context/AuthContext.tsx +9 -1
- package/dist/create/template/default-project/src/pages/SignUp.tsx +1 -1
- package/dist/flowspec.d.ts.map +1 -1
- package/dist/flowspec.js +6 -1
- package/dist/http-client.d.ts +32 -1
- package/dist/http-client.d.ts.map +1 -1
- package/dist/http-client.js +14 -2
- package/dist/http-db.d.ts +3 -0
- package/dist/http-db.d.ts.map +1 -1
- package/dist/http-db.js +28 -3
- 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/intent.d.ts +98 -0
- package/dist/intent.d.ts.map +1 -0
- package/dist/intent.js +343 -0
- package/dist/module-intent.d.ts +19 -5
- package/dist/module-intent.d.ts.map +1 -1
- package/dist/module-intent.js +211 -62
- package/dist/module.d.ts +41 -12
- package/dist/module.d.ts.map +1 -1
- package/dist/module.js +543 -38
- package/dist/proposal.d.ts +13 -1
- package/dist/proposal.d.ts.map +1 -1
- package/dist/proposal.js +21 -4
- package/dist/studio/components/AskFeltDB.d.ts.map +1 -1
- package/dist/studio/components/ProposalBrowser.d.ts +1 -1
- package/dist/studio/components/ProposalBrowser.d.ts.map +1 -1
- package/dist/studio/components/index.js +1 -1
- package/dist/studio/{components-CNSNrmA9.js → components-Duq2xQWt.js} +251 -193
- package/dist/studio/index.js +1 -1
- package/dist/studio/studio.css +1 -1
- package/dist/studio/utils/proposal-api.d.ts +4 -1
- package/dist/studio/utils/proposal-api.d.ts.map +1 -1
- package/dist/studio/utils/proposal-api.js +3 -0
- package/dist/studio-app/assets/{feltdb_wasm-CSB6KVgw.js → feltdb_wasm-bIqcRzAr.js} +1 -1
- package/dist/studio-app/assets/feltdb_wasm_bg-BE79okwX.wasm +0 -0
- package/dist/studio-app/assets/{index-yazaWMUN.css → index-Cd_NPw14.css} +1 -1
- package/dist/studio-app/assets/index-XGYdlElN.js +29 -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 +2 -0
- package/dist/workspace/local-development-authority.d.ts.map +1 -1
- package/dist/workspace/local-development-authority.js +65 -2
- package/package.json +1 -1
- package/dist/studio-app/assets/dist-CCOk39Uc.js +0 -1
- package/dist/studio-app/assets/feltdb_wasm_bg-Dd1fnO9U.wasm +0 -0
- package/dist/studio-app/assets/index-Bncji3aN.js +0 -43
- package/dist/studio-app/assets/lib-B2_7fcn7.js +0 -69
- package/dist/studio-app/assets/worker-CARZ5g7K.js +0 -69
|
@@ -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-XGYdlElN.js"></script>
|
|
2
|
+
<link rel="stylesheet" crossorigin href="/assets/index-Cd_NPw14.css">
|
|
3
3
|
</head><body><div id="root"></div></body></html>
|
|
Binary file
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { type ProposalContext } from '../proposal.js';
|
|
2
|
+
import type { ObservedEvidenceInput } from '../application-understanding.js';
|
|
2
3
|
export interface LocalDevelopmentAuthority {
|
|
3
4
|
endpoint: string;
|
|
4
5
|
proposalAuthorityToken: string;
|
|
@@ -9,6 +10,7 @@ export interface LocalDevelopmentAuthorityOptions {
|
|
|
9
10
|
host?: string;
|
|
10
11
|
port?: number;
|
|
11
12
|
proposalContext?: () => Promise<ProposalContext>;
|
|
13
|
+
intentObservations?: () => ObservedEvidenceInput[] | Promise<ObservedEvidenceInput[]>;
|
|
12
14
|
}
|
|
13
15
|
/** Start the durable, unauthenticated loopback authority used by `feltdb dev`. */
|
|
14
16
|
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":"AAGA,OAAO,
|
|
1
|
+
{"version":3,"file":"local-development-authority.d.ts","sourceRoot":"","sources":["../../src/workspace/local-development-authority.ts"],"names":[],"mappings":"AAGA,OAAO,EAAwD,KAAK,eAAe,EAAsB,MAAM,gBAAgB,CAAC;AAEhI,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AAE7E,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;IACjD,kBAAkB,CAAC,EAAE,MAAM,qBAAqB,EAAE,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAC,CAAC;CACvF;AAED,kFAAkF;AAClF,wBAAsB,8BAA8B,CAClD,OAAO,EAAE,gCAAgC,GACxC,OAAO,CAAC,yBAAyB,CAAC,CA6JpC"}
|
|
@@ -1,7 +1,8 @@
|
|
|
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
|
+
import { FELTDB_CONVERGENCE_COLLECTION, FeltDBProposalService } from '../proposal.js';
|
|
5
|
+
import { IntentService } from '../intent.js';
|
|
5
6
|
/** Start the durable, unauthenticated loopback authority used by `feltdb dev`. */
|
|
6
7
|
export async function startLocalDevelopmentAuthority(options) {
|
|
7
8
|
const host = options.host || '127.0.0.1';
|
|
@@ -22,6 +23,7 @@ export async function startLocalDevelopmentAuthority(options) {
|
|
|
22
23
|
throw new Error(result.error); },
|
|
23
24
|
};
|
|
24
25
|
const proposalService = options.proposalContext ? new FeltDBProposalService(store, options.proposalContext, proposalAuthorityToken) : undefined;
|
|
26
|
+
const intentService = proposalService && options.proposalContext ? new IntentService(store, options.proposalContext, proposalService, options.intentObservations) : undefined;
|
|
25
27
|
const streams = new Set();
|
|
26
28
|
const server = http.createServer(async (request, response) => {
|
|
27
29
|
try {
|
|
@@ -92,7 +94,52 @@ export async function startLocalDevelopmentAuthority(options) {
|
|
|
92
94
|
json(response, 405, { error: 'METHOD_NOT_ALLOWED' });
|
|
93
95
|
return;
|
|
94
96
|
}
|
|
95
|
-
const
|
|
97
|
+
const intentMatch = pathname.match(/^\/v1\/intents(?:\/([^/]+)(?:\/(understanding|plan|proposal|history|execute))?)?$/);
|
|
98
|
+
if (intentMatch) {
|
|
99
|
+
if (!intentService) {
|
|
100
|
+
json(response, 503, { error: 'INTENT_SERVICE_UNAVAILABLE' });
|
|
101
|
+
return;
|
|
102
|
+
}
|
|
103
|
+
const id = intentMatch[1] ? decodeURIComponent(intentMatch[1]) : undefined;
|
|
104
|
+
const operation = intentMatch[2];
|
|
105
|
+
const body = await readBody(request);
|
|
106
|
+
const input = body ? parseObject(body) : {};
|
|
107
|
+
if (request.method === 'POST' && !id) {
|
|
108
|
+
const raw = String(input.raw_request ?? input.request ?? '');
|
|
109
|
+
json(response, 201, await intentService.execute(raw, String(input.actor ?? 'developer')));
|
|
110
|
+
return;
|
|
111
|
+
}
|
|
112
|
+
if (request.method === 'GET' && !id) {
|
|
113
|
+
json(response, 200, { intents: await intentService.list() });
|
|
114
|
+
return;
|
|
115
|
+
}
|
|
116
|
+
if (request.method === 'GET' && id) {
|
|
117
|
+
const intent = await intentService.get(id);
|
|
118
|
+
if (!operation) {
|
|
119
|
+
json(response, 200, intent);
|
|
120
|
+
return;
|
|
121
|
+
}
|
|
122
|
+
if (operation === 'understanding') {
|
|
123
|
+
json(response, 200, intent.understanding ?? {});
|
|
124
|
+
return;
|
|
125
|
+
}
|
|
126
|
+
if (operation === 'plan') {
|
|
127
|
+
json(response, 200, intent.plan ?? {});
|
|
128
|
+
return;
|
|
129
|
+
}
|
|
130
|
+
if (operation === 'proposal') {
|
|
131
|
+
json(response, 200, intent.proposal_id ? await proposalService.get(intent.proposal_id) : {});
|
|
132
|
+
return;
|
|
133
|
+
}
|
|
134
|
+
if (operation === 'history') {
|
|
135
|
+
json(response, 200, { events: await intentService.history(id) });
|
|
136
|
+
return;
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
json(response, 405, { error: 'METHOD_NOT_ALLOWED' });
|
|
140
|
+
return;
|
|
141
|
+
}
|
|
142
|
+
const proposalMatch = pathname.match(/^\/v1\/proposals(?:\/([^/]+)(?:\/(validate|preview|approve|reject|status|history|convergence))?)?$/);
|
|
96
143
|
if (proposalMatch) {
|
|
97
144
|
if (!proposalService) {
|
|
98
145
|
json(response, 503, { error: 'PROPOSAL_SERVICE_UNAVAILABLE' });
|
|
@@ -131,6 +178,22 @@ export async function startLocalDevelopmentAuthority(options) {
|
|
|
131
178
|
json(response, 200, await proposalService.readiness(id));
|
|
132
179
|
return;
|
|
133
180
|
}
|
|
181
|
+
if (request.method === 'GET' && id && operation === 'convergence') {
|
|
182
|
+
const all = await store.list(FELTDB_CONVERGENCE_COLLECTION);
|
|
183
|
+
json(response, 200, { convergence: all.filter(value => value.proposal_id === id).sort((a, b) => String(b.created_at).localeCompare(String(a.created_at))) });
|
|
184
|
+
return;
|
|
185
|
+
}
|
|
186
|
+
if (request.method === 'POST' && id && operation === 'convergence') {
|
|
187
|
+
const proposal = await proposalService.get(id);
|
|
188
|
+
if (proposal.status !== 'applied')
|
|
189
|
+
throw new Error('PROPOSAL_NOT_APPLIED');
|
|
190
|
+
if (input.proposal_id !== id)
|
|
191
|
+
throw new Error('INVALID_CONVERGENCE');
|
|
192
|
+
const value = { ...input, id: `cv_${crypto.randomUUID().replaceAll('-', '')}`, created_at: new Date().toISOString(), verifier_version: 1 };
|
|
193
|
+
await store.create(FELTDB_CONVERGENCE_COLLECTION, value.id, value);
|
|
194
|
+
json(response, 201, value);
|
|
195
|
+
return;
|
|
196
|
+
}
|
|
134
197
|
if (request.method === 'POST' && id && operation === 'validate') {
|
|
135
198
|
json(response, 200, await proposalService.validate(id, actor));
|
|
136
199
|
return;
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{n as e,r as t,t as n}from"./index-Bncji3aN.js";Object.freeze({smallest:`SmolLM2-360M-Instruct-q4f32_1-MLC`,balanced:`SmolLM2-1.7B-Instruct-q4f32_1-MLC`,lowMemoryWithShaderF16:`SmolLM2-360M-Instruct-q4f16_1-MLC`});function r(e){if(e)return{type:e.type,schema:typeof e.schema==`string`?e.schema:e.schema?JSON.stringify(e.schema):void 0}}function i(){return typeof navigator<`u`&&`gpu`in navigator}var a=class{options;kind=`webllm`;private=!0;model;engine=null;initialization=null;ownedWorker=null;constructor(e={}){this.options=e,this.model=e.model??`SmolLM2-360M-Instruct-q4f32_1-MLC`}isReady(){return this.engine!==null}async initialize(){if(!this.engine)return this.initialization||=this.createEngine().then(e=>{this.engine=e}).catch(e=>{throw this.ownedWorker?.terminate(),this.ownedWorker=null,e}).finally(()=>{this.initialization=null}),this.initialization}async createEngine(){let e=e=>this.options.onProgress?.(e),n=this.options.worker??null;if(this.options.engineFactory)return this.options.engineFactory({model:this.model,worker:n,appConfig:this.options.appConfig,onProgress:e});if(!i())throw Error(`@feltdb/webllm requires a WebGPU-capable browser.`);let r=await t(()=>import(`./lib-B2_7fcn7.js`),[]),a={appConfig:this.options.appConfig??{...r.prebuiltAppConfig,cacheBackend:this.options.cacheBackend??`cache`},initProgressCallback:e};if(this.options.useWorker!==!1){if(!n){if(typeof Worker>`u`)throw Error(`@feltdb/webllm could not create a Web Worker in this environment.`);n=new Worker(new URL(`/assets/worker-CARZ5g7K.js`,``+import.meta.url),{type:`module`}),this.ownedWorker=n}return r.CreateWebWorkerMLCEngine(n,this.model,a)}return r.CreateMLCEngine(this.model,a)}async readyEngine(){if(await this.initialize(),!this.engine)throw Error(`@feltdb/webllm failed to initialize.`);return this.engine}async generate(e,t={}){return(await(await this.readyEngine()).chat.completions.create({messages:e,stream:!1,temperature:t.temperature,top_p:t.topP,max_tokens:t.maxTokens,stop:t.stopSequences,response_format:r(t.responseFormat)})).choices[0]?.message.content??``}async generateFlow(t,r){let i=r.snapshot??(typeof this.options.contract==`function`?await this.options.contract():this.options.contract);if(!i)throw Error(`generateFlow requires a FeltDB contract snapshot`);let a=n(i,r.currentFlow,t),o={temperature:r.temperature??.1,maxTokens:r.maxTokens,topP:r.topP,stopSequences:r.stopSequences,responseFormat:{type:`json_object`,schema:{type:`object`,required:[`proposedFlow`,`summary`,`changes`,`warnings`],properties:{proposedFlow:{type:`string`},summary:{type:`string`},changes:{type:`array`,items:{type:`string`}},warnings:{type:`array`,items:{type:`string`}}}}}},s=await this.generate(a,o);try{return await e({raw:s,snapshot:i,currentFlow:r.currentFlow,allowDestructiveProposal:r.allowDestructiveProposal})}catch(t){let n=t instanceof Error?t.message:String(t),c=await this.generate([...a,{role:`assistant`,content:s},{role:`user`,content:`FeltDB rejected that proposal: ${n}. Return one corrected complete JSON proposal. Do not broaden or add unrelated changes.`}],o);return e({raw:c,snapshot:i,currentFlow:r.currentFlow,allowDestructiveProposal:r.allowDestructiveProposal})}}async*stream(e,t={}){let n=await(await this.readyEngine()).chat.completions.create({messages:e,stream:!0,temperature:t.temperature,top_p:t.topP,max_tokens:t.maxTokens,stop:t.stopSequences,response_format:r(t.responseFormat)});for await(let e of n){let t=e.choices[0]?.delta.content;t&&(yield t)}}interrupt(){this.engine?.interruptGenerate()}async shutdown(){let e=this.engine;this.engine=null,e&&(e.interruptGenerate(),await e.unload()),this.ownedWorker?.terminate(),this.ownedWorker=null}};export{a as WebLLMProvider};
|
|
Binary file
|