yugoo-design 0.1.0 → 0.1.2
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/README.md +38 -9
- package/bin/installer.mjs +3 -0
- package/bin/npm-agent-installation.mjs +13 -9
- package/bin/npm-embedding-preparation.mjs +32 -0
- package/bin/yugoo-design.mjs +5 -3
- package/package.json +1 -1
- package/payload/overlays/claude-code/.claude-plugin/plugin.json +1 -1
- package/payload/overlays/codex/.codex-plugin/plugin.json +1 -1
- package/payload/overlays/qoder/.qoder-plugin/plugin.json +1 -1
- package/payload/shared/knowledge/cli-lifecycle.mjs +12 -1
- package/payload/shared/knowledge/runtime-manifest.json +2 -2
- package/payload/shared/knowledge/runtime.mjs +155 -6
- package/release-hosts.json +1 -1
- package/release-manifest.json +17 -16
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Yugoo Design
|
|
2
2
|
|
|
3
|
-
Package: `yugoo-design@0.1.
|
|
3
|
+
Package: `yugoo-design@0.1.2`.
|
|
4
4
|
|
|
5
5
|
Yugoo Design (语构设计系统) is an interactive design plugin for native Agent Hosts.
|
|
6
6
|
It combines domain methods, Design Projects, versioned Design Files and shared
|
|
@@ -55,7 +55,7 @@ from another operating system requires an explicit Windows path and reports that
|
|
|
55
55
|
locator as unverified; it does not establish target runtime acceptance.
|
|
56
56
|
|
|
57
57
|
```sh
|
|
58
|
-
ONNXRUNTIME_NODE_INSTALL_CUDA=skip npm install --ignore-scripts=false --save-exact yugoo-design@0.1.
|
|
58
|
+
ONNXRUNTIME_NODE_INSTALL_CUDA=skip npm install --ignore-scripts=false --save-exact yugoo-design@0.1.2 --registry=https://registry.npmjs.org
|
|
59
59
|
npx --no-install yugoo-design --help
|
|
60
60
|
```
|
|
61
61
|
|
|
@@ -72,7 +72,7 @@ allowBuilds:
|
|
|
72
72
|
```
|
|
73
73
|
|
|
74
74
|
```sh
|
|
75
|
-
ONNXRUNTIME_NODE_INSTALL_CUDA=skip pnpm add --save-exact yugoo-design@0.1.
|
|
75
|
+
ONNXRUNTIME_NODE_INSTALL_CUDA=skip pnpm add --save-exact yugoo-design@0.1.2 --registry=https://registry.npmjs.org
|
|
76
76
|
pnpm exec yugoo-design --help
|
|
77
77
|
```
|
|
78
78
|
|
|
@@ -121,7 +121,7 @@ process value:
|
|
|
121
121
|
$previousOrtCuda = [Environment]::GetEnvironmentVariable('ONNXRUNTIME_NODE_INSTALL_CUDA', 'Process')
|
|
122
122
|
try {
|
|
123
123
|
$env:ONNXRUNTIME_NODE_INSTALL_CUDA = 'skip'
|
|
124
|
-
npm install --ignore-scripts=false --save-exact yugoo-design@0.1.
|
|
124
|
+
npm install --ignore-scripts=false --save-exact yugoo-design@0.1.2 --registry=https://registry.npmjs.org
|
|
125
125
|
} finally {
|
|
126
126
|
[Environment]::SetEnvironmentVariable('ONNXRUNTIME_NODE_INSTALL_CUDA', $previousOrtCuda, 'Process')
|
|
127
127
|
}
|
|
@@ -139,6 +139,34 @@ layout. A tokenizer or one weight file alone does not establish a usable cache.
|
|
|
139
139
|
Use the acquired version's model identity; changing the model/revision or copying
|
|
140
140
|
an arbitrary cache is not a supported repair.
|
|
141
141
|
|
|
142
|
+
When the acquired `yugoo-design --help` lists `prepare-embedding`, run it from
|
|
143
|
+
that installation directory under the actual runtime user and OS:
|
|
144
|
+
|
|
145
|
+
```sh
|
|
146
|
+
npx --no-install yugoo-design prepare-embedding
|
|
147
|
+
# Only when downloading the fixed model has been allowed:
|
|
148
|
+
npx --no-install yugoo-design prepare-embedding --allow-download --probe
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
The default command is an offline size/hash inspection: it creates no cache,
|
|
152
|
+
lock or network request. `--allow-download` prepares the four pinned files
|
|
153
|
+
(about 135 MB total), reusing verified files and resumable downloads. `--probe`
|
|
154
|
+
performs real local CPU inference with fixed synthetic text; use it without
|
|
155
|
+
`--allow-download` to test an existing cache. An explicitly selected cache can
|
|
156
|
+
be passed as `--embedding-cache /absolute/cache`; use that same cache for the
|
|
157
|
+
runtime. No Design Project or host registration is needed for preparation.
|
|
158
|
+
|
|
159
|
+
`assets-ready` means the files passed integrity checks and CPU inference has not
|
|
160
|
+
been tested; `ready` means the CPU probe also passed. `unavailable` reports the
|
|
161
|
+
resource or inference failure and exits unsuccessfully. None of these results
|
|
162
|
+
proves semantic KAG is current for a real project. Respect an explicitly disabled
|
|
163
|
+
embedding configuration. Preparation does not change DSH's provider or model
|
|
164
|
+
settings; it is relevant only when DSH uses this same default local model/cache.
|
|
165
|
+
|
|
166
|
+
Published `0.1.0` does not include this command. Follow that package's existing
|
|
167
|
+
runtime route below, or update to a published version whose help includes it;
|
|
168
|
+
do not pass the new command to an older installation.
|
|
169
|
+
|
|
142
170
|
For the shared runtime's `scripts/design.mjs serve` entry used by Codex, Claude
|
|
143
171
|
Code, Qoder and QwenWork, the default is **local-only** model loading. Its runtime
|
|
144
172
|
help documents `--allow-embedding-download`: when explicitly allowed, this permits
|
|
@@ -150,11 +178,12 @@ semantic embeddings. Neither option changes host model credentials. Model-file
|
|
|
150
178
|
download and CPU inference do not upload Design text.
|
|
151
179
|
|
|
152
180
|
WorkBuddy's `yugoo_workbuddy_open_panel` service currently fixes `localOnly: true`
|
|
153
|
-
and exposes no model-download parameter. It requires
|
|
154
|
-
for its Windows runtime user
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
181
|
+
and exposes no model-download parameter. It requires a complete cache
|
|
182
|
+
for its Windows runtime user. A package with `prepare-embedding` can prepare that
|
|
183
|
+
cache before the service starts; the older runtime `serve` flag does not add a
|
|
184
|
+
WorkBuddy download route. If preparation is unavailable or fails, report the
|
|
185
|
+
semantic-index diagnostic. Do not change host identity or start another host's
|
|
186
|
+
service to bypass it. Authorized design work can continue from Design Files
|
|
158
187
|
and structural evidence; do not report semantic KAG as ready. DSH follows its own
|
|
159
188
|
provider configuration rather than these Companion `serve` flags.
|
|
160
189
|
|
package/bin/installer.mjs
CHANGED
|
@@ -14,6 +14,7 @@ import { codexAdapter, assertCodexAdmission, createCodexNativeAdapter } from './
|
|
|
14
14
|
import { createClaudeNativeAdapter, planClaudeInstallation, applyClaudeInstallation, recoverClaudeInstallation } from './npm-installer-claude.mjs'
|
|
15
15
|
import { installQoderPlugin } from './npm-installer-qoder.mjs'
|
|
16
16
|
import { checkRuntime, inspectRuntime, assertInstalledRuntimeReceipt } from './npm-runtime-check.mjs'
|
|
17
|
+
import { embeddingPreparationMain } from './npm-embedding-preparation.mjs'
|
|
17
18
|
import { runDesktopDshInstaller } from './npm-installer-dsh-desktop.mjs'
|
|
18
19
|
import { desktopPreparationMain, desktopPreparationReuseMain } from './npm-desktop-preparation.mjs'
|
|
19
20
|
import { agentInstallation, AGENT_INSTALL_HOSTS, DESKTOP_INSTALL_OPTIONS } from './npm-agent-installation.mjs'
|
|
@@ -774,6 +775,7 @@ export async function nativePluginDirectory({npmRoot,host}) {
|
|
|
774
775
|
|
|
775
776
|
export async function installerMain(args,{npmRoot,userRoot=homedir(),adapter=codexAdapter,dshAdapterFactory=createDshInstallerAdapter,claudeAdapterFactory=createClaudeNativeAdapter,qoderInstaller=installQoderPlugin,agentDispatch=true,signal,dshInstallTimeoutMs}={}) {
|
|
776
777
|
if(args[0]==='prepare-desktop')return desktopPreparationMain(args.slice(1),{npmRoot})
|
|
778
|
+
if(args[0]==='prepare-embedding')return embeddingPreparationMain(args.slice(1),{npmRoot,signal})
|
|
777
779
|
const {values,positionals}=parseArgs({args,allowPositionals:true,options:{host:{type:'string'},'dry-run':{type:'boolean'},
|
|
778
780
|
help:{type:'boolean',short:'h'},apply:{type:'boolean'},plan:{type:'string'},'receipt-dir':{type:'string'},receipt:{type:'string'},'runtime-receipt':{type:'string'},'codex-executable':{type:'string'},'claude-executable':{type:'string'},'user-root':{type:'string'},'disable-embedding':{type:'boolean'},
|
|
779
781
|
'qoder-executable':{type:'string'},'qoder-config-dir':{type:'string'},
|
|
@@ -785,6 +787,7 @@ export async function installerMain(args,{npmRoot,userRoot=homedir(),adapter=cod
|
|
|
785
787
|
commands:{
|
|
786
788
|
'resolve-node':'Discover and verify an existing compatible Node without a host, npm package or configuration writes.',
|
|
787
789
|
'prepare-desktop':'Prepare a small QwenWork suite or stable WorkBuddy market from this exact acquired npm package. Uses --target, --package-name/--package-version, --suite-version, --node-executable and an external --destination; does not register a host. Updates use the previous preparation receipt.',
|
|
790
|
+
'prepare-embedding':'Check the fixed local model cache; --allow-download explicitly prepares resources and --probe verifies actual offline CPU inference. No host or project required.',
|
|
788
791
|
install:'The current Agent selects --host from trusted context or one user choice. Direct install orchestrates existing native routes or Codex Desktop/QwenWork/WorkBuddy preparation. Missing inputs and pending activation are explicit. Existing --dry-run / --apply remain available.',
|
|
789
792
|
'plugin-directory':'Inspect the optional Claude/Qoder session-only --plugin-dir entry; this is not persistent installation.',
|
|
790
793
|
'check-runtime':'Check runtime prerequisites and write an external runtime receipt; does not install.',
|
|
@@ -30,32 +30,35 @@ function pending(host, status, missing, message) {
|
|
|
30
30
|
installation: { host: host ?? null, acquisition: 'unverified', registration: 'not-performed',
|
|
31
31
|
activation: 'not-performed', usability: 'unverified', nextActions: [{ action: 'supply-inputs', automatic: false, message }] } }
|
|
32
32
|
}
|
|
33
|
-
function activationActions(host, result) {
|
|
33
|
+
function activationActions(host, result, disableEmbedding) {
|
|
34
|
+
const embedding = disableEmbedding ? [] : [{ action: 'prepare-local-embedding', automatic: true,
|
|
35
|
+
command: ['prepare-embedding'],
|
|
36
|
+
message: 'Use this acquired product\'s prepare-embedding to check the fixed model cache under the actual runtime user and operating system. Match the runtime\'s --embedding-cache and selected Node; a WSL cache is not a Windows runtime cache. Reuse complete files. If resources are missing or invalid, explain the model download and use --allow-download only when permitted; use --probe to verify CPU inference. DSH custom provider/model settings remain owned by DSH and must not be replaced with defaults. Report resource integrity, CPU inference and the real project\'s semantic status separately. Missing embeddings do not block basic design or available source-projection context.' }]
|
|
34
37
|
const verify = { action: 'verify-native-session', automatic: true,
|
|
35
38
|
message: 'In the intended native conversation, verify the actually loaded Yugoo Design version and tools; then open a project and verify Panel save/reopen and original-conversation receipt. Registration alone is not usability.' }
|
|
36
39
|
if (host === 'codex-desktop') return [
|
|
37
40
|
{ action: 'activate-native-plugin', automatic: false, path: result.marketplacePath,
|
|
38
|
-
message: 'Install or update this exact prepared local Yugoo Design source through Codex Desktop. If a normal restart is required, keep and return to the current conversation. Retain the exact npm version and previous owned source until the loaded version is verified.' }, verify]
|
|
41
|
+
message: 'Install or update this exact prepared local Yugoo Design source through Codex Desktop. If a normal restart is required, keep and return to the current conversation. Retain the exact npm version and previous owned source until the loaded version is verified.' }, ...embedding, verify]
|
|
39
42
|
if (host === 'qwenwork') return [
|
|
40
43
|
{ action: 'import-expert-suite', automatic: false, path: result.nativeImport?.archive,
|
|
41
44
|
message: 'Import this exact expert-suite ZIP through QwenWork. If bundled MCP is disabled by organization policy, use the emitted connector configuration and retain exactly one Yugoo Design connector.' },
|
|
42
45
|
{ action: 'activate-native-suite', automatic: false,
|
|
43
|
-
message: 'Enable the imported suite; start a new native conversation if QwenWork requires it. Retain the acquired npm runtime and confirm the actually loaded suite version.' }, verify]
|
|
46
|
+
message: 'Enable the imported suite; start a new native conversation if QwenWork requires it. Retain the acquired npm runtime and confirm the actually loaded suite version.' }, ...embedding, verify]
|
|
44
47
|
if (host === 'workbuddy') return [
|
|
45
48
|
{ action: 'import-or-update-market', automatic: false, path: result.nativeImport?.market,
|
|
46
49
|
message: 'Import this stable marketplace through WorkBuddy, or refresh the same market and update its existing Yugoo Design plugin. Preparation has not registered or activated it.' },
|
|
47
50
|
{ action: 'activate-native-plugin', automatic: false,
|
|
48
|
-
message: 'Enable the plugin and start a new native conversation if WorkBuddy requires it; confirm the actually loaded suite version.' }, verify]
|
|
51
|
+
message: 'Enable the plugin and start a new native conversation if WorkBuddy requires it; confirm the actually loaded suite version.' }, ...embedding, verify]
|
|
49
52
|
return [{ action: 'activate-native-session', automatic: false,
|
|
50
53
|
message: host === 'dsh'
|
|
51
54
|
? 'Use the selected existing DSH profile and the host-supported plugin activation/restart flow; verify runtime loading in a new native session.'
|
|
52
55
|
: host === 'codex'
|
|
53
56
|
? 'Start a new Codex conversation normally in the intended workspace and invoke the installed yugoo Skill through the native Skill entry. Retain the registered npm runtime.'
|
|
54
|
-
: 'Start a new native host conversation normally in the intended workspace and invoke /yugoo-design:yugoo. Retain the registered npm runtime; no --plugin-dir is needed.' }, verify]
|
|
57
|
+
: 'Start a new native host conversation normally in the intended workspace and invoke /yugoo-design:yugoo. Retain the registered npm runtime; no --plugin-dir is needed.' }, ...embedding, verify]
|
|
55
58
|
}
|
|
56
59
|
|
|
57
60
|
/** Project only verified facts from the owning native/preparation receipt. */
|
|
58
|
-
export function installationResult(host, result, packageIdentity) {
|
|
61
|
+
export function installationResult(host, result, packageIdentity, { disableEmbedding = false } = {}) {
|
|
59
62
|
const failed = result.status === 'failed-partial-state-retained'
|
|
60
63
|
const desktop = host === 'qwenwork' || host === 'workbuddy' || host === 'codex-desktop'
|
|
61
64
|
const registered = !desktop && !failed && (result.hostRegistered === true
|
|
@@ -68,9 +71,10 @@ export function installationResult(host, result, packageIdentity) {
|
|
|
68
71
|
registryAcquisitionVerified: false,
|
|
69
72
|
registration: failed ? 'failed-partial-state-retained' : registered ? 'verified' : 'not-performed',
|
|
70
73
|
activation: failed ? 'not-performed' : 'required', usability: 'unverified',
|
|
74
|
+
embedding: { status: disableEmbedding ? 'disabled' : 'unverified', blocksBasicDesign: false },
|
|
71
75
|
nextActions: failed ? [{ action: 'inspect-retained-state', automatic: false, path: result.receiptFile,
|
|
72
76
|
message: 'Inspect the owning receipt and retained DSH state before another operation. No automatic rollback or retry was attempted.' }]
|
|
73
|
-
: activationActions(host, result) } }
|
|
77
|
+
: activationActions(host, result, disableEmbedding) } }
|
|
74
78
|
}
|
|
75
79
|
|
|
76
80
|
export async function agentInstallation(values, { npmRoot, invoke, desktopPrepare, desktopReuse, codexDesktopPrepare,
|
|
@@ -116,7 +120,7 @@ export async function agentInstallation(values, { npmRoot, invoke, desktopPrepar
|
|
|
116
120
|
return installationResult(host, reused || await desktopPrepare(args))
|
|
117
121
|
}
|
|
118
122
|
if (host === 'claude-code' || host === 'qoder')
|
|
119
|
-
return installationResult(host, await invoke(argv('install', values, allowed)))
|
|
123
|
+
return installationResult(host, await invoke(argv('install', values, allowed)), undefined, { disableEmbedding: values['disable-embedding'] === true })
|
|
120
124
|
// DSH's exclusive plan files are never overwritten. Each direct operation gets
|
|
121
125
|
// its own receipt subdirectory; Codex keeps the stable directory needed by upgrades.
|
|
122
126
|
const nativeValues = host === 'dsh' ? { ...values, 'receipt-dir': join(values['receipt-dir'], randomUUID()) } : values
|
|
@@ -135,7 +139,7 @@ export async function agentInstallation(values, { npmRoot, invoke, desktopPrepar
|
|
|
135
139
|
assert.ok(runtime.receiptFile, 'The owning runtime checker did not retain its receipt')
|
|
136
140
|
const applyArgs = argv('install', values, allowed.filter(key => !['receipt-dir', 'disable-embedding', 'node-executable'].includes(key)))
|
|
137
141
|
applyArgs.push('--apply', '--plan', plan.planFile, '--runtime-receipt', runtime.receiptFile)
|
|
138
|
-
return installationResult(host, await invoke(applyArgs), plan.package)
|
|
142
|
+
return installationResult(host, await invoke(applyArgs), plan.package, { disableEmbedding: values['disable-embedding'] === true })
|
|
139
143
|
}
|
|
140
144
|
const applyArgs = argv('install', nativeValues, allowed)
|
|
141
145
|
applyArgs.push('--apply', '--plan', plan.planFile)
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { parseArgs } from 'node:util'
|
|
2
|
+
import { isAbsolute, join } from 'node:path'
|
|
3
|
+
import { pathToFileURL } from 'node:url'
|
|
4
|
+
|
|
5
|
+
/** Installed product entry. Resolves only the acquired package's existing Knowledge runtime. */
|
|
6
|
+
export async function embeddingPreparationMain(args, { npmRoot, signal } = {}) {
|
|
7
|
+
const { values, positionals } = parseArgs({ args, allowPositionals: true, options: {
|
|
8
|
+
help: { type: 'boolean', short: 'h' }, 'embedding-cache': { type: 'string' },
|
|
9
|
+
'allow-download': { type: 'boolean' }, probe: { type: 'boolean' },
|
|
10
|
+
} })
|
|
11
|
+
if (positionals.length) throw new Error('prepare-embedding does not accept a host or project.')
|
|
12
|
+
if (values.help) return { schemaVersion: 1, kind: 'embedding-preparation-help', status: 'not-applicable',
|
|
13
|
+
usage: 'yugoo-design prepare-embedding [--embedding-cache /absolute/cache] [--allow-download] [--probe]',
|
|
14
|
+
options: { '--embedding-cache': 'Use the same absolute model cache as the target runtime; omission keeps the existing per-user default.',
|
|
15
|
+
'--allow-download': 'Explicitly permit the existing pinned model downloader to prepare missing or invalid resources; default only checks.',
|
|
16
|
+
'--probe': 'After verified resources, run one fixed text through the existing local CPU worker, offline. No project or host is required.' },
|
|
17
|
+
results: { 'assets-ready': 'All fixed resources verified; CPU inference has not been checked.', ready: 'Fixed resources verified and actual CPU inference passed.', unavailable: 'Resources or inference unavailable; see reasonCode. Basic design and source facts are unchanged.' } }
|
|
18
|
+
if (values['embedding-cache'] !== undefined && !isAbsolute(values['embedding-cache'])) throw new Error('--embedding-cache must be an absolute path.')
|
|
19
|
+
try {
|
|
20
|
+
const runtimeUrl = pathToFileURL(join(npmRoot, 'payload/shared/knowledge/runtime.mjs'))
|
|
21
|
+
const { runStandaloneKnowledgeOperation } = await import(pathToFileURL(join(npmRoot, 'payload/shared/knowledge/cli-lifecycle.mjs')).href)
|
|
22
|
+
return await runStandaloneKnowledgeOperation({ runtimeUrl, loadRuntime: () => import(runtimeUrl.href), run: runtime => {
|
|
23
|
+
if (typeof runtime.prepareLocalEmbedding !== 'function') throw new Error('Missing embedding preparation entry')
|
|
24
|
+
return runtime.prepareLocalEmbedding({ cacheDir: values['embedding-cache'], allowDownload: values['allow-download'] === true,
|
|
25
|
+
probe: values.probe === true, signal })
|
|
26
|
+
} })
|
|
27
|
+
} catch {
|
|
28
|
+
return { schemaVersion: 1, kind: 'embedding-preparation', status: 'unavailable', reasonCode: signal?.aborted ? 'cancelled' : 'runtime-unavailable',
|
|
29
|
+
resources: { state: 'unavailable' }, inference: { state: 'not-run' }, semanticKagVerified: false,
|
|
30
|
+
message: 'The installed Knowledge runtime could not run the embedding check. Check this package and its current-platform dependencies. Basic design and source facts are unchanged.' }
|
|
31
|
+
}
|
|
32
|
+
}
|
package/bin/yugoo-design.mjs
CHANGED
|
@@ -5,10 +5,12 @@ const args=process.argv.slice(2)
|
|
|
5
5
|
const dshInstall=args[0]==='install'&&args.some((arg,index)=>arg==='--host=dsh'||arg==='--host'&&args[index+1]==='dsh')
|
|
6
6
|
const cancellation=new AbortController()
|
|
7
7
|
const cancel=()=>cancellation.abort()
|
|
8
|
-
|
|
8
|
+
const cancellable=dshInstall||args[0]==='prepare-embedding'
|
|
9
|
+
if(cancellable) { process.on('SIGINT',cancel);process.on('SIGTERM',cancel) }
|
|
9
10
|
try {
|
|
10
|
-
const result=await installerMain(args,{npmRoot:fileURLToPath(new URL('../',import.meta.url)),signal:
|
|
11
|
+
const result=await installerMain(args,{npmRoot:fileURLToPath(new URL('../',import.meta.url)),signal:cancellable?cancellation.signal:undefined})
|
|
11
12
|
console.log(JSON.stringify(result))
|
|
13
|
+
if(args[0]==='prepare-embedding'&&!['assets-ready','ready','not-applicable'].includes(result.status))process.exitCode=1
|
|
12
14
|
if(process.argv[2]==='check-runtime'&&!['load-verified','disabled','not-applicable'].includes(result.status))process.exitCode=1
|
|
13
15
|
if(result.status==='failed-partial-state-retained')process.exitCode=1
|
|
14
16
|
if(['runtime-not-ready','unsupported-host'].includes(result.status))process.exitCode=1
|
|
@@ -17,5 +19,5 @@ try {
|
|
|
17
19
|
console.error(error.installation ? JSON.stringify({error:error.message,installation:error.installation}) : error.message)
|
|
18
20
|
process.exitCode=1
|
|
19
21
|
} finally {
|
|
20
|
-
if(
|
|
22
|
+
if(cancellable) { process.off('SIGINT',cancel);process.off('SIGTERM',cancel) }
|
|
21
23
|
}
|
package/package.json
CHANGED
|
@@ -30,6 +30,17 @@ function ownKnowledgeSignals(runtimeUrl) {
|
|
|
30
30
|
});
|
|
31
31
|
for (const [name, listener] of owned) process.removeListener(name, listener);
|
|
32
32
|
}
|
|
33
|
+
/** Finite CLI diagnostics use the same verified signal ownership and public terminal shutdown. */
|
|
34
|
+
async function runStandaloneKnowledgeOperation({ runtimeUrl, loadRuntime, run }) {
|
|
35
|
+
ownKnowledgeSignals(runtimeUrl);
|
|
36
|
+
let runtime;
|
|
37
|
+
try {
|
|
38
|
+
runtime = await loadRuntime();
|
|
39
|
+
return await run(runtime);
|
|
40
|
+
} finally {
|
|
41
|
+
await runtime?.shutdownLadybugKnowledgeRuntime();
|
|
42
|
+
}
|
|
43
|
+
}
|
|
33
44
|
async function startStandaloneCompanion({ runtimeUrl, loadRuntime, start }) {
|
|
34
45
|
ownKnowledgeSignals(runtimeUrl);
|
|
35
46
|
let server, loading, closing;
|
|
@@ -76,4 +87,4 @@ async function startStandaloneCompanion({ runtimeUrl, loadRuntime, start }) {
|
|
|
76
87
|
}
|
|
77
88
|
}
|
|
78
89
|
//#endregion
|
|
79
|
-
export { startStandaloneCompanion };
|
|
90
|
+
export { runStandaloneKnowledgeOperation, startStandaloneCompanion };
|
|
@@ -8,11 +8,11 @@
|
|
|
8
8
|
"undici": "8.10.2"
|
|
9
9
|
},
|
|
10
10
|
"assets": {
|
|
11
|
-
"cli-lifecycle.mjs": "
|
|
11
|
+
"cli-lifecycle.mjs": "039c7705557b58c435c0a96a6540b2a233a3583ebab36c5d100bad0771a15d88",
|
|
12
12
|
"embedding-worker.js": "1dc5f99a02fc8bd58ab318991a2145665c95bc65f4a025b63be524dffdb66f00",
|
|
13
13
|
"embedding-worker.mjs": "1dc5f99a02fc8bd58ab318991a2145665c95bc65f4a025b63be524dffdb66f00",
|
|
14
14
|
"package.json": "a3e820bf1715afda0b535dd848a22362dbdc28296fbbbe6ffd6b7712d06194b6",
|
|
15
|
-
"runtime.mjs": "
|
|
15
|
+
"runtime.mjs": "08e99eae9738441b5a1a588a5a1a16a986e0dd8a8a41199fc88d19ab0956940e"
|
|
16
16
|
},
|
|
17
17
|
"officialInputs": {
|
|
18
18
|
"repository": "https://github.com/deepseek-ai/deepseek-harness",
|
|
@@ -35181,19 +35181,58 @@ async function size(path) {
|
|
|
35181
35181
|
throw error;
|
|
35182
35182
|
}
|
|
35183
35183
|
}
|
|
35184
|
-
async function valid(path, asset) {
|
|
35184
|
+
async function valid(path, asset, signal) {
|
|
35185
35185
|
if (await size(path) !== asset.bytes) return false;
|
|
35186
35186
|
const hash = createHash(asset.kind === "git-blob-sha1" ? "sha1" : "sha256");
|
|
35187
35187
|
if (asset.kind === "git-blob-sha1") hash.update(`blob ${asset.bytes}\0`);
|
|
35188
|
-
for await (const bytes of createReadStream(path))
|
|
35188
|
+
for await (const bytes of createReadStream(path)) {
|
|
35189
|
+
signal?.throwIfAborted();
|
|
35190
|
+
hash.update(bytes);
|
|
35191
|
+
}
|
|
35189
35192
|
return hash.digest("hex") === asset.hash;
|
|
35190
35193
|
}
|
|
35194
|
+
function validateAssets(files) {
|
|
35195
|
+
if (files.some((file) => !/^[a-zA-Z0-9_.-]+(?:\/[a-zA-Z0-9_.-]+)*$/.test(file.path) || file.path.split("/").some((p) => p === "..") || !Number.isSafeInteger(file.bytes) || file.bytes < 1 || !["sha256", "git-blob-sha1"].includes(file.kind))) throw new EmbeddingAssetError("integrity");
|
|
35196
|
+
}
|
|
35197
|
+
/** Read-only inspection: never creates a cache, lock, staging file or network dispatcher. */
|
|
35198
|
+
async function inspectEmbeddingAssetSet(root, files, signal) {
|
|
35199
|
+
validateAssets(files);
|
|
35200
|
+
const results = [];
|
|
35201
|
+
for (const asset of files) {
|
|
35202
|
+
signal.throwIfAborted();
|
|
35203
|
+
const path = join(root, asset.path);
|
|
35204
|
+
try {
|
|
35205
|
+
const length = await size(path);
|
|
35206
|
+
results.push({
|
|
35207
|
+
path: asset.path,
|
|
35208
|
+
bytes: asset.bytes,
|
|
35209
|
+
state: length === void 0 ? "missing" : length !== asset.bytes ? "incomplete" : await valid(path, asset, signal) ? "ready" : "integrity"
|
|
35210
|
+
});
|
|
35211
|
+
} catch (error) {
|
|
35212
|
+
if (!(error instanceof EmbeddingAssetError)) throw error;
|
|
35213
|
+
results.push({
|
|
35214
|
+
path: asset.path,
|
|
35215
|
+
bytes: asset.bytes,
|
|
35216
|
+
state: "integrity"
|
|
35217
|
+
});
|
|
35218
|
+
}
|
|
35219
|
+
}
|
|
35220
|
+
signal.throwIfAborted();
|
|
35221
|
+
return {
|
|
35222
|
+
state: results.every((file) => file.state === "ready") ? "ready" : "unavailable",
|
|
35223
|
+
bytes: files.reduce((total, file) => total + file.bytes, 0),
|
|
35224
|
+
files: results
|
|
35225
|
+
};
|
|
35226
|
+
}
|
|
35227
|
+
function inspectDefaultEmbeddingAssets(cacheDir, signal) {
|
|
35228
|
+
return inspectEmbeddingAssetSet(join(cacheDir, DEFAULT_EMBEDDING_ASSETS.model, DEFAULT_EMBEDDING_ASSETS.revision), DEFAULT_EMBEDDING_ASSETS.files, signal);
|
|
35229
|
+
}
|
|
35191
35230
|
/** Private resource preparation. No model/native session or Design text enters this path.
|
|
35192
35231
|
* Download has its own bounded lifetime; the existing 180s inference budget is unchanged.
|
|
35193
35232
|
* A failed pass keeps resumable staging bytes and never publishes a partial canonical file.
|
|
35194
35233
|
*/
|
|
35195
35234
|
async function prepareEmbeddingAssetSet(root, files, localOnly, options) {
|
|
35196
|
-
|
|
35235
|
+
validateAssets(files);
|
|
35197
35236
|
options.signal.throwIfAborted();
|
|
35198
35237
|
await mkdir(root, { recursive: true });
|
|
35199
35238
|
const compromised = new AbortController();
|
|
@@ -35218,7 +35257,7 @@ async function prepareEmbeddingAssetSet(root, files, localOnly, options) {
|
|
|
35218
35257
|
for (const asset of files) {
|
|
35219
35258
|
signal.throwIfAborted();
|
|
35220
35259
|
const target = join(root, asset.path);
|
|
35221
|
-
if (await valid(target, asset)) continue;
|
|
35260
|
+
if (await valid(target, asset, signal)) continue;
|
|
35222
35261
|
if (localOnly) throw new EmbeddingAssetError("missing");
|
|
35223
35262
|
await mkdir(dirname(target), { recursive: true });
|
|
35224
35263
|
const staged = target + ".yugoo-download.part";
|
|
@@ -35258,7 +35297,7 @@ async function prepareEmbeddingAssetSet(root, files, localOnly, options) {
|
|
|
35258
35297
|
} finally {
|
|
35259
35298
|
await output.close();
|
|
35260
35299
|
}
|
|
35261
|
-
if (!await valid(staged, asset)) throw new EmbeddingAssetError("integrity");
|
|
35300
|
+
if (!await valid(staged, asset, signal)) throw new EmbeddingAssetError("integrity");
|
|
35262
35301
|
signal.throwIfAborted();
|
|
35263
35302
|
if (await size(target) !== void 0) await copyFile(target, target + ".rejected-" + randomUUID(), constants.COPYFILE_EXCL);
|
|
35264
35303
|
await rename(staged, target);
|
|
@@ -35661,4 +35700,114 @@ var DesignSemanticIndex = class {
|
|
|
35661
35700
|
}
|
|
35662
35701
|
};
|
|
35663
35702
|
//#endregion
|
|
35664
|
-
|
|
35703
|
+
//#region packages/knowledge-ladybug/src/embedding-preparation.ts
|
|
35704
|
+
const reasons = {
|
|
35705
|
+
missing: "固定版本模型资源缺失;允许下载后可显式准备。",
|
|
35706
|
+
incomplete: "固定版本模型资源不完整;允许下载后可显式续传。",
|
|
35707
|
+
integrity: "固定版本模型资源完整性校验失败;请显式重新准备。",
|
|
35708
|
+
download: "模型资源下载未完成;请检查网络及代理后显式重试。",
|
|
35709
|
+
busy: "另一进程正在准备模型资源;请在其完成后重试。",
|
|
35710
|
+
cancelled: "模型准备或推理检查已取消。",
|
|
35711
|
+
runtime: "模型缓存无法读取或运行依赖不可用。"
|
|
35712
|
+
};
|
|
35713
|
+
/** Installation diagnostic only: no project, provider database, publication or host configuration. */
|
|
35714
|
+
async function prepareLocalEmbedding(options = {}) {
|
|
35715
|
+
if (options.cacheDir !== void 0 && !isAbsolute(options.cacheDir)) throw new Error("Embedding cache must be an absolute path");
|
|
35716
|
+
const index = new DesignSemanticIndex({
|
|
35717
|
+
localOnly: true,
|
|
35718
|
+
...options.cacheDir ? { cacheDir: options.cacheDir } : {}
|
|
35719
|
+
});
|
|
35720
|
+
const signal = options.signal ?? new AbortController().signal;
|
|
35721
|
+
const { cacheDir, model, revision } = index.config;
|
|
35722
|
+
let resources = { state: "unavailable" };
|
|
35723
|
+
const base = {
|
|
35724
|
+
schemaVersion: 1,
|
|
35725
|
+
kind: "embedding-preparation",
|
|
35726
|
+
cacheDir,
|
|
35727
|
+
model,
|
|
35728
|
+
revision,
|
|
35729
|
+
downloadAllowed: options.allowDownload === true,
|
|
35730
|
+
semanticKagVerified: false,
|
|
35731
|
+
note: "仅检查本地语义索引资源与可选 CPU 推理;不更改基础设计、源事实投影或项目语义发布状态。"
|
|
35732
|
+
};
|
|
35733
|
+
try {
|
|
35734
|
+
resources = await inspectDefaultEmbeddingAssets(cacheDir, signal);
|
|
35735
|
+
if (options.allowDownload === true && resources.state !== "ready") {
|
|
35736
|
+
await prepareDefaultEmbeddingAssets({
|
|
35737
|
+
...index.config,
|
|
35738
|
+
localOnly: false
|
|
35739
|
+
}, signal);
|
|
35740
|
+
resources = await inspectDefaultEmbeddingAssets(cacheDir, signal);
|
|
35741
|
+
}
|
|
35742
|
+
if (resources.state !== "ready") {
|
|
35743
|
+
const code = resources.files.find((file) => file.state !== "ready").state;
|
|
35744
|
+
return {
|
|
35745
|
+
...base,
|
|
35746
|
+
status: "unavailable",
|
|
35747
|
+
resources,
|
|
35748
|
+
inference: { state: "not-run" },
|
|
35749
|
+
reasonCode: code,
|
|
35750
|
+
message: reasons[code]
|
|
35751
|
+
};
|
|
35752
|
+
}
|
|
35753
|
+
if (!options.probe) return {
|
|
35754
|
+
...base,
|
|
35755
|
+
status: "assets-ready",
|
|
35756
|
+
resources,
|
|
35757
|
+
inference: { state: "not-checked" },
|
|
35758
|
+
message: "固定模型资源完整;尚未验证实际 CPU 推理。使用 --probe 检查。"
|
|
35759
|
+
};
|
|
35760
|
+
try {
|
|
35761
|
+
await index.compute("installation-probe", {
|
|
35762
|
+
checkpoint: "installation-probe",
|
|
35763
|
+
nodes: [],
|
|
35764
|
+
edges: [],
|
|
35765
|
+
warnings: [],
|
|
35766
|
+
semanticUnits: [{
|
|
35767
|
+
id: "installation-probe:0",
|
|
35768
|
+
nodeId: "installation-probe",
|
|
35769
|
+
file: "installation-probe.json",
|
|
35770
|
+
pointer: "",
|
|
35771
|
+
text: "Local embedding readiness check.",
|
|
35772
|
+
digest: "installation-probe-v1"
|
|
35773
|
+
}]
|
|
35774
|
+
}, void 0, signal);
|
|
35775
|
+
return {
|
|
35776
|
+
...base,
|
|
35777
|
+
status: "ready",
|
|
35778
|
+
resources,
|
|
35779
|
+
inference: {
|
|
35780
|
+
state: "ready",
|
|
35781
|
+
device: "cpu"
|
|
35782
|
+
},
|
|
35783
|
+
message: "固定模型资源完整,实际本地 CPU 推理通过。"
|
|
35784
|
+
};
|
|
35785
|
+
} catch {
|
|
35786
|
+
return {
|
|
35787
|
+
...base,
|
|
35788
|
+
status: "unavailable",
|
|
35789
|
+
resources,
|
|
35790
|
+
inference: {
|
|
35791
|
+
state: "unavailable",
|
|
35792
|
+
device: "cpu"
|
|
35793
|
+
},
|
|
35794
|
+
reasonCode: signal.aborted ? "cancelled" : "inference-unavailable",
|
|
35795
|
+
message: signal.aborted ? reasons.cancelled : "模型资源完整,但实际 CPU 推理未通过。请检查当前平台运行依赖、CPU 和内存。"
|
|
35796
|
+
};
|
|
35797
|
+
}
|
|
35798
|
+
} catch (error) {
|
|
35799
|
+
const code = signal.aborted ? "cancelled" : error instanceof EmbeddingAssetError ? error.code : "runtime";
|
|
35800
|
+
return {
|
|
35801
|
+
...base,
|
|
35802
|
+
status: "unavailable",
|
|
35803
|
+
resources,
|
|
35804
|
+
inference: { state: "not-run" },
|
|
35805
|
+
reasonCode: code,
|
|
35806
|
+
message: reasons[code]
|
|
35807
|
+
};
|
|
35808
|
+
} finally {
|
|
35809
|
+
await index.close();
|
|
35810
|
+
}
|
|
35811
|
+
}
|
|
35812
|
+
//#endregion
|
|
35813
|
+
export { DesignSemanticIndex, LadybugDesignKnowledgeProvider, prepareLocalEmbedding, shutdownLadybugKnowledgeRuntime };
|
package/release-hosts.json
CHANGED
package/release-manifest.json
CHANGED
|
@@ -3,21 +3,22 @@
|
|
|
3
3
|
"fixture": false,
|
|
4
4
|
"distribution": "stable",
|
|
5
5
|
"publishReady": false,
|
|
6
|
-
"version": "0.1.
|
|
6
|
+
"version": "0.1.2",
|
|
7
7
|
"readmeSource": {
|
|
8
8
|
"path": "packages/companion/README.md",
|
|
9
|
-
"sourceSha256": "
|
|
10
|
-
"sectionSha256": "
|
|
9
|
+
"sourceSha256": "0b4fdabb12018f52718b8d278a47ebf5818460b36d86d6be96da60cb98b52aa5",
|
|
10
|
+
"sectionSha256": "97c43b5e19f7b1d64a85534b15bb242cf0daccf60fd86ef578c4037a310f2f0c"
|
|
11
11
|
},
|
|
12
12
|
"assets": {
|
|
13
13
|
"LICENSE": "cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30",
|
|
14
14
|
"NOTICE": "6119b21e1fa5d37ec3ab337ad43685970310aa5c97a0e90ecf6603d17091f371",
|
|
15
|
-
"README.md": "
|
|
15
|
+
"README.md": "598ac20a2019438aadbfd66a1cc5bd94e6cefb004733bb6c773f4ab9b87046d9",
|
|
16
16
|
"THIRD_PARTY_NOTICES.md": "bfcab921c6c15ccc47f9b1a6cc5941675c95962de5ea5b0edc50fbfa2aef136a",
|
|
17
|
-
"bin/installer.mjs": "
|
|
18
|
-
"bin/npm-agent-installation.mjs": "
|
|
17
|
+
"bin/installer.mjs": "169f367c8c66d5066b51e305dbdbe692888b96dec4ae671dda1cd216b4baa8b4",
|
|
18
|
+
"bin/npm-agent-installation.mjs": "0b64248e789b4d3a3ee1752f5235744c27d37bb302e0e538d34a7905a59a5a6a",
|
|
19
19
|
"bin/npm-codex-desktop-source.mjs": "a4990fe747ff8da2d884a795a255aa691c848b4a9d8ebbdb28f3929bcda8359d",
|
|
20
20
|
"bin/npm-desktop-preparation.mjs": "43f7a972a44bea90291e113f206e3c3bc4a91a02e4b82eea85293c1cebb15237",
|
|
21
|
+
"bin/npm-embedding-preparation.mjs": "bd787ea9404e97e07adba68c700f61b1f25a70a1a475506cd91c258f2dc10afd",
|
|
21
22
|
"bin/npm-installer-claude.mjs": "e34a681b3fa9d7f40518103fb4230e083077347e3d6aaa14dceeba609d5fd310",
|
|
22
23
|
"bin/npm-installer-codex-desktop.mjs": "dcd8e75f5e47531843c5842cb3068a55f968fe20ed8ea3f5b3d0d7b155c0c5eb",
|
|
23
24
|
"bin/npm-installer-codex.mjs": "5789195b889a78fa298395fb5e3b6f72539e473f816132c4762e0ee77ac4a9c8",
|
|
@@ -30,7 +31,7 @@
|
|
|
30
31
|
"bin/npm-runtime-check.mjs": "31880b9b79fdceeef070f8d304cde66ce335bc34d173b16e603abf0a6a5d60ad",
|
|
31
32
|
"bin/windows-native-platform.mjs": "57ac50c9a8cc0371597d6d40e3efe4cbe2a470e98f75f0229721c7d5a48e7e98",
|
|
32
33
|
"bin/windows-private-storage.mjs": "27c3eb052278f0cb2850326e1d0864cfd2f3f6d2b1975ec7c24535ef6251ac94",
|
|
33
|
-
"bin/yugoo-design.mjs": "
|
|
34
|
+
"bin/yugoo-design.mjs": "3a390aca541f6a7c6a987a54037d58926e3a5dc7971f9d540476e329ceeb027a",
|
|
34
35
|
"licenses/DSH-LICENSE": "ebb4f09972aee8608be255debaf78451a68e95c290f55c240dec2ecfa16ea6be",
|
|
35
36
|
"licenses/bundled-js/3d-force-graph@1.80.0/LICENSE": "7262e566e874d1ce8cfadace01d4f635f8d704b6bdf7b4345cc028e5faeafded",
|
|
36
37
|
"licenses/bundled-js/@babel/runtime@7.29.7/LICENSE": "117da2af0d4ce0fe1c8e19b5cff9dcd806adf973d328d27b11d4448c4ff24f76",
|
|
@@ -427,7 +428,7 @@
|
|
|
427
428
|
"licenses/third-party/whiteboard-fonts/licenses/JetBrainsMono-OFL.txt": "30f0c136e3c88e422d0791acd97238870f9054a9729bc34cf2ff0d4ed8cac4ad",
|
|
428
429
|
"licenses/third-party/whiteboard-fonts/licenses/source-han-sans-LICENSE.txt": "fcac737e761ec63dbfbdce11030a1780161920d80315edba9c8beff1c2bac5a2",
|
|
429
430
|
"licenses/third-party/whiteboard-fonts/manifest.json": "c164438115a40cdead905085e95298f28a4ffa2a3947512b9a98509f33c26972",
|
|
430
|
-
"package.json": "
|
|
431
|
+
"package.json": "f812f334f59b81b251d26098fc659f3bcfe7a11b9d367fbac778a0b12ab43ebd",
|
|
431
432
|
"payload/desktop-preparation/LICENSE": "cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30",
|
|
432
433
|
"payload/desktop-preparation/NOTICE": "6b4eec391144fcbd96ec7b45a28764ab1932722a96325248377c3e28aac2c62d",
|
|
433
434
|
"payload/desktop-preparation/THIRD_PARTY_NOTICES.md": "bfcab921c6c15ccc47f9b1a6cc5941675c95962de5ea5b0edc50fbfa2aef136a",
|
|
@@ -465,7 +466,7 @@
|
|
|
465
466
|
"payload/desktop-preparation/src/workbuddy-relay-service.mjs": "44d60d6956250417507fb76c71c3030a01bc38e565e4572a761b46f255f8e669",
|
|
466
467
|
"payload/desktop-preparation/src/workbuddy-ui-probes.mjs": "a91d4651248125769254755bdf66a44bbc9e5a793dad0a137c35acbb10a89a88",
|
|
467
468
|
"payload/desktop-preparation/workbuddy-package.mjs": "f39407b3fd2406c73079b4067e9eb93d181a35ac53ad548b45e8599f486ca976",
|
|
468
|
-
"payload/overlays/claude-code/.claude-plugin/plugin.json": "
|
|
469
|
+
"payload/overlays/claude-code/.claude-plugin/plugin.json": "e7f83d7c8e13b19fbaf437097b2df9d925ab98a5051ebdc4df095df884760247",
|
|
469
470
|
"payload/overlays/claude-code/.mcp.json": "1108847d27abd953a52cd7c3ea4cd416898d67dcfdb80a92255d889186b12b66",
|
|
470
471
|
"payload/overlays/claude-code/hooks/hooks.json": "e8bea6fdf13dce4023a2112dd4a31fd1a77e0f4ca2d4c506882ea80ef86b6482",
|
|
471
472
|
"payload/overlays/claude-code/scripts/claude-connection.mjs": "83a6a2de1b28d1b5dd230b1447abac6f2209a80d6681f08766a53e7b6f63200f",
|
|
@@ -479,7 +480,7 @@
|
|
|
479
480
|
"payload/overlays/claude-code/skills/design-component/SKILL.md": "85a1f2a016174787226eaa9e9e6675e86057212d322a65014edd71f3e4861b34",
|
|
480
481
|
"payload/overlays/claude-code/skills/yugoo/SKILL.md": "045d81c10b0d18ebe1644180149f42059b114874bcf8daca805c6fd91e343c81",
|
|
481
482
|
"payload/overlays/claude-code/skills/yugoo/native-execution.md": "2e66dc2811ce6552ab43547af3020337e9de60576ad3c8de4422f120dbd6d5a7",
|
|
482
|
-
"payload/overlays/codex/.codex-plugin/plugin.json": "
|
|
483
|
+
"payload/overlays/codex/.codex-plugin/plugin.json": "c4dc58fe7b547e14369f072c3aa61f7e939b4792c0a4887e4bfd4f819b32ab62",
|
|
483
484
|
"payload/overlays/codex/.mcp.json": "ee6450b4f9a5239ae9c173d07198d37041fad65f9f65ecf4ff88ccf8528a609a",
|
|
484
485
|
"payload/overlays/codex/README.md": "614c04455a8b88941d62861bc9e6ab0ae96f7aefb4a04a31085a2d86ccbf363b",
|
|
485
486
|
"payload/overlays/codex/scripts/design.mjs": "c116e3a9f60830923692a9f8785640d9a13a97320771bf9201de0e5089618a74",
|
|
@@ -489,7 +490,7 @@
|
|
|
489
490
|
"payload/overlays/codex/skills/design-panel/native-execution.md": "2e66dc2811ce6552ab43547af3020337e9de60576ad3c8de4422f120dbd6d5a7",
|
|
490
491
|
"payload/overlays/codex/skills/yugoo/SKILL.md": "d2c512b979178c9be0dd5cf2b855ad1d39af00f40728aa3031b87e12693a8600",
|
|
491
492
|
"payload/overlays/qoder/.mcp.json": "7f86b52fffd552312441b9bd99dd39a3b80b2893dc4a85519614d906bdc6884e",
|
|
492
|
-
"payload/overlays/qoder/.qoder-plugin/plugin.json": "
|
|
493
|
+
"payload/overlays/qoder/.qoder-plugin/plugin.json": "75fdbe896e82f21077b7bb7a5ab0d106fed5cdd62598970e80360aa3cb20a4be",
|
|
493
494
|
"payload/overlays/qoder/commands/yugoo.md": "1461cf9bd13ae18bf0ad204222dfd8c558552471628c31b2dc936f3329ac26cf",
|
|
494
495
|
"payload/overlays/qoder/hooks/hooks.json": "6452852583af61a7b4f0ed501a41d02a212a8487e5d920bcb0b2ee7e7e643d7d",
|
|
495
496
|
"payload/overlays/qoder/scripts/design.mjs": "c116e3a9f60830923692a9f8785640d9a13a97320771bf9201de0e5089618a74",
|
|
@@ -1161,12 +1162,12 @@
|
|
|
1161
1162
|
"payload/shared/kits/web_app/THIRD_PARTY_NOTICES.md": "1d358b1a367efd6f4e0fb04436df7f814531cd6a01a0b2b752d7b8268a461c79",
|
|
1162
1163
|
"payload/shared/kits/web_app/kit.yaml": "f66f6510d621933e2e45164c214bb3dc59c2a79bbe6521d93b37d5ba4419ca28",
|
|
1163
1164
|
"payload/shared/kits/web_app/mindset.md": "dea0d63d0ae4795c1737d50d4564d3ddb934d80daee082a91afed4ea3be5cc08",
|
|
1164
|
-
"payload/shared/knowledge/cli-lifecycle.mjs": "
|
|
1165
|
+
"payload/shared/knowledge/cli-lifecycle.mjs": "039c7705557b58c435c0a96a6540b2a233a3583ebab36c5d100bad0771a15d88",
|
|
1165
1166
|
"payload/shared/knowledge/embedding-worker.js": "1dc5f99a02fc8bd58ab318991a2145665c95bc65f4a025b63be524dffdb66f00",
|
|
1166
1167
|
"payload/shared/knowledge/embedding-worker.mjs": "1dc5f99a02fc8bd58ab318991a2145665c95bc65f4a025b63be524dffdb66f00",
|
|
1167
1168
|
"payload/shared/knowledge/package.json": "a3e820bf1715afda0b535dd848a22362dbdc28296fbbbe6ffd6b7712d06194b6",
|
|
1168
|
-
"payload/shared/knowledge/runtime-manifest.json": "
|
|
1169
|
-
"payload/shared/knowledge/runtime.mjs": "
|
|
1169
|
+
"payload/shared/knowledge/runtime-manifest.json": "3320b95239598fd9a9fb424ec4fb1d3037441464f46543260c20084543e9b709",
|
|
1170
|
+
"payload/shared/knowledge/runtime.mjs": "08e99eae9738441b5a1a588a5a1a16a986e0dd8a8a41199fc88d19ab0956940e",
|
|
1170
1171
|
"payload/shared/scripts/codex-connection-DuV2wtkn.mjs": "953b36e1a0a9892a126008ebdc2c29d2eb1036b279fa138fe881b5fd314cbf5e",
|
|
1171
1172
|
"payload/shared/scripts/codex-desktop-bridge.mjs": "dc9eb9b8f35bc076758e520668cef19f853b797e798a6027f55bf0e230d33ed5",
|
|
1172
1173
|
"payload/shared/scripts/codex-desktop-marketplace.mjs": "96974611780bffaf2b69b0fea143b6760cdaf7f8d38236931086bb3ad94f3892",
|
|
@@ -1368,7 +1369,7 @@
|
|
|
1368
1369
|
"payload/shared/web/zh-CN-LNUGB5OW-B8jdxL1j.js": "009e897b8dce75b294018536f2c7d08f17d5174497d13cd0b5b46e17660e54ed",
|
|
1369
1370
|
"payload/shared/web/zh-HK-E62DVLB3-C01JMzt_.js": "421281ca20c481adb4d774fdea5c907cc74241f6a745908b72dee694ed3f4112",
|
|
1370
1371
|
"payload/shared/web/zh-TW-RAJ6MFWO-Cdn1Kb1q.js": "a48825086867a6b48a5e9a0fcdf91eb4d6752def51bf7b6dfa9bad12aed33624",
|
|
1371
|
-
"release-hosts.json": "
|
|
1372
|
+
"release-hosts.json": "72c4cbb93852b7c3d856dc21cf7d2350336ab1acb55538bab3779ec7151569b2"
|
|
1372
1373
|
},
|
|
1373
1374
|
"dependencies": {
|
|
1374
1375
|
"@ladybugdb/wasm-core": "0.21.1",
|
|
@@ -1383,7 +1384,7 @@
|
|
|
1383
1384
|
"product": {
|
|
1384
1385
|
"schemaVersion": 1,
|
|
1385
1386
|
"name": "yugoo-design",
|
|
1386
|
-
"version": "0.1.
|
|
1387
|
+
"version": "0.1.2",
|
|
1387
1388
|
"bin": "yugoo-design"
|
|
1388
1389
|
}
|
|
1389
1390
|
},
|