yugoo-design 0.2.0 → 0.2.3
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 +4 -4
- package/bin/npm-agent-installation.mjs +1 -1
- package/bin/npm-installer-dsh.mjs +111 -4
- package/package.json +3 -2
- package/payload/desktop-preparation/materials.json +4 -4
- package/payload/desktop-preparation/qwenwork-template/authoring/studio-creators/material.json +1 -1
- package/payload/desktop-preparation/qwenwork-template/authoring/studio-creators/source/docs/system-design-baseline.md +5 -0
- package/payload/desktop-preparation/studio-authoring-template/authoring/studio-creators/material.json +1 -1
- package/payload/desktop-preparation/studio-authoring-template/authoring/studio-creators/source/docs/system-design-baseline.md +5 -0
- package/payload/overlays/claude-code/.claude-plugin/plugin.json +1 -1
- package/payload/overlays/claude-code/authoring/studio-creators/material.json +1 -1
- package/payload/overlays/claude-code/authoring/studio-creators/source/docs/system-design-baseline.md +5 -0
- package/payload/overlays/codex/.codex-plugin/plugin.json +1 -1
- package/payload/overlays/codex/authoring/studio-creators/material.json +1 -1
- package/payload/overlays/codex/authoring/studio-creators/source/docs/system-design-baseline.md +5 -0
- package/payload/overlays/qoder/.qoder-plugin/plugin.json +1 -1
- package/payload/overlays/qoder/authoring/studio-creators/material.json +1 -1
- package/payload/overlays/qoder/authoring/studio-creators/source/docs/system-design-baseline.md +5 -0
- package/payload/shared/authoring/studio-creators/material.json +1 -1
- package/payload/shared/authoring/studio-creators/source/docs/system-design-baseline.md +5 -0
- package/payload/shared/knowledge/runtime-manifest.json +2 -1
- package/payload/shared/scripts/design.mjs +1 -1
- package/payload/shared/scripts/{server-BBHB9EQr.mjs → server-BnEtfptI.mjs} +1 -1
- package/payload/shared/scripts/{studio-CS5TyoYn.mjs → studio-CFUWk0vJ.mjs} +1 -1
- package/payload/shared/scripts/{studio-instances-D-Y1WNya.mjs → studio-instances-gQFR9yqL.mjs} +65 -2
- package/payload/shared/scripts/workbuddy-panel-service.mjs +1 -1
- package/payload/shared/web/client.js +127 -86
- package/release-hosts.json +1 -1
- package/release-manifest.json +32 -31
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Yugoo Design
|
|
2
2
|
|
|
3
|
-
Package: `yugoo-design@0.2.
|
|
3
|
+
Package: `yugoo-design@0.2.3`.
|
|
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.2.
|
|
58
|
+
ONNXRUNTIME_NODE_INSTALL_CUDA=skip npm install --ignore-scripts=false --save-exact yugoo-design@0.2.3 --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.2.
|
|
75
|
+
ONNXRUNTIME_NODE_INSTALL_CUDA=skip pnpm add --save-exact yugoo-design@0.2.3 --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.2.
|
|
124
|
+
npm install --ignore-scripts=false --save-exact yugoo-design@0.2.3 --registry=https://registry.npmjs.org
|
|
125
125
|
} finally {
|
|
126
126
|
[Environment]::SetEnvironmentVariable('ONNXRUNTIME_NODE_INSTALL_CUDA', $previousOrtCuda, 'Process')
|
|
127
127
|
}
|
|
@@ -73,7 +73,7 @@ export function installationResult(host, result, packageIdentity, { disableEmbed
|
|
|
73
73
|
activation: failed ? 'not-performed' : 'required', usability: 'unverified',
|
|
74
74
|
embedding: { status: disableEmbedding ? 'disabled' : 'unverified', blocksBasicDesign: false },
|
|
75
75
|
nextActions: failed ? [{ action: 'inspect-retained-state', automatic: false, path: result.receiptFile,
|
|
76
|
-
message: 'Inspect the owning receipt and retained DSH state before another operation. No automatic rollback or retry was attempted.' }]
|
|
76
|
+
message: result.failure?.recovery ?? 'Inspect the owning receipt and retained DSH state before another operation. No automatic rollback or retry was attempted.' }]
|
|
77
77
|
: activationActions(host, result, disableEmbedding) } }
|
|
78
78
|
}
|
|
79
79
|
|
|
@@ -6,7 +6,8 @@ import { createHash, randomUUID } from 'node:crypto'
|
|
|
6
6
|
import { lstat, readFile, realpath, writeFile } from 'node:fs/promises'
|
|
7
7
|
import { dirname, isAbsolute, join, resolve } from 'node:path'
|
|
8
8
|
import { pathToFileURL } from 'node:url'
|
|
9
|
-
import { promisify } from 'node:util'
|
|
9
|
+
import { isDeepStrictEqual, promisify } from 'node:util'
|
|
10
|
+
import { createRequire } from 'node:module'
|
|
10
11
|
|
|
11
12
|
const exec = promisify(execFile)
|
|
12
13
|
const admitted = new WeakMap()
|
|
@@ -15,6 +16,7 @@ const canonical = value => Array.isArray(value) ? value.map(canonical) : value &
|
|
|
15
16
|
? Object.fromEntries(Object.keys(value).sort().map(key => [key, canonical(value[key])])) : value
|
|
16
17
|
const digest = value => sha(JSON.stringify(canonical(value)))
|
|
17
18
|
const beneath = isPathWithin
|
|
19
|
+
const exactVersion = /^(?:0|[1-9]\d*)\.(?:0|[1-9]\d*)\.(?:0|[1-9]\d*)(?:-[0-9A-Za-z.-]+)?(?:\+[0-9A-Za-z.-]+)?$/u
|
|
18
20
|
export const DSH_INSTALL_MAX_OUTPUT_BYTES = 1024 * 1024
|
|
19
21
|
|
|
20
22
|
/** Install duration belongs to the native package manager, not a probe timer. */
|
|
@@ -181,7 +183,7 @@ async function readOwnedReceipt(path, state, profile, currentProduct) {
|
|
|
181
183
|
assert.match(receipt.id ?? '', /^[0-9a-f-]{36}$/u)
|
|
182
184
|
assert.equal(receipt.receiptPath, path)
|
|
183
185
|
assert.equal(join(dirname(path), receipt.id + '.dsh-result.json'), path)
|
|
184
|
-
assert.equal(receipt.status, 'registered-config-parsed', 'Successful owned installation required')
|
|
186
|
+
assert.equal(receipt.status, 'registered-config-parsed', 'Successful owned installation required; inspect failed DSH state in the official host plugin manager instead of reapplying its plan or receipt')
|
|
185
187
|
assert.equal(receipt.ownershipEstablished, true, 'Previous installation ownership was not established')
|
|
186
188
|
assert.equal(receipt.exitCode, 0); assert.equal(receipt.partialStateRetained, false)
|
|
187
189
|
assert.equal(receipt.userConfigurationPreserved, true)
|
|
@@ -448,6 +450,91 @@ export async function inspectDshInstallation(options) {
|
|
|
448
450
|
runtimeMounted: false, bundleCycleVerified: false, releaseValidated: false }
|
|
449
451
|
}
|
|
450
452
|
|
|
453
|
+
async function workspaceSettings(bytes) {
|
|
454
|
+
if (bytes === null) return null
|
|
455
|
+
const { parseDocument } = await import('yaml')
|
|
456
|
+
const document = parseDocument(bytes.toString('utf8'), { uniqueKeys: true })
|
|
457
|
+
if (document.errors.length || document.warnings.length) return null
|
|
458
|
+
const value = document.toJS({ maxAliasCount: 100 })
|
|
459
|
+
if (!value || typeof value !== 'object' || Array.isArray(value)) return null
|
|
460
|
+
const { minimumReleaseAgeExclude = [], ...settings } = value
|
|
461
|
+
if (!Array.isArray(minimumReleaseAgeExclude) || !minimumReleaseAgeExclude.every(item => typeof item === 'string')) return null
|
|
462
|
+
return { settings, exclusions: minimumReleaseAgeExclude }
|
|
463
|
+
}
|
|
464
|
+
|
|
465
|
+
// pnpm can merge pkg@old and pkg@new into pkg@old || new. Expand
|
|
466
|
+
// only exact versions; keep user ranges and other rules opaque and unchanged.
|
|
467
|
+
function releaseAgeSelectors(exclusions) {
|
|
468
|
+
const counts = new Map(), opaque = []
|
|
469
|
+
for (const value of exclusions) {
|
|
470
|
+
const match = /^(?<name>(?:@[a-z0-9][a-z0-9._-]*\/)?[a-z0-9][a-z0-9._-]*)@(?<versions>.+)$/u.exec(value)
|
|
471
|
+
const versions = match?.groups.versions.split(/\s*\|\|\s*/u)
|
|
472
|
+
if (!versions?.every(version => exactVersion.test(version))) { opaque.push(value); continue }
|
|
473
|
+
for (const version of versions) {
|
|
474
|
+
const selector = `${match.groups.name}@${version}`
|
|
475
|
+
counts.set(selector, (counts.get(selector) ?? 0) + 1)
|
|
476
|
+
}
|
|
477
|
+
}
|
|
478
|
+
return { counts, opaque }
|
|
479
|
+
}
|
|
480
|
+
|
|
481
|
+
// Follow only exact runtime declarations in the selected installed aggregate.
|
|
482
|
+
// Reading package metadata must not execute code or depend on package.json exports.
|
|
483
|
+
async function installedExactSelectors(installed) {
|
|
484
|
+
const selectors = new Set(), visited = new Set()
|
|
485
|
+
async function visit(path, name, version) {
|
|
486
|
+
path = await realpath(path)
|
|
487
|
+
if (visited.has(path)) return
|
|
488
|
+
visited.add(path)
|
|
489
|
+
const bytes = await boundedFile(path), manifest = JSON.parse(bytes)
|
|
490
|
+
if (manifest.name !== name || manifest.version !== version) return
|
|
491
|
+
selectors.add(`${name}@${version}`)
|
|
492
|
+
const require = createRequire(path)
|
|
493
|
+
for (const [dependency, pin] of Object.entries({ ...manifest.dependencies, ...manifest.optionalDependencies })) {
|
|
494
|
+
if (!/^(?:@[a-z0-9][a-z0-9._-]*\/)?[a-z0-9][a-z0-9._-]*$/u.test(dependency) || !exactVersion.test(pin)) continue
|
|
495
|
+
for (const search of require.resolve.paths(dependency) ?? []) {
|
|
496
|
+
const candidate = join(search, dependency, 'package.json')
|
|
497
|
+
if (await regular(candidate, true) === null) continue
|
|
498
|
+
await visit(candidate, dependency, pin)
|
|
499
|
+
break
|
|
500
|
+
}
|
|
501
|
+
}
|
|
502
|
+
}
|
|
503
|
+
const path = join(installed.realPackageDir, 'package.json')
|
|
504
|
+
assert.equal(sha(await regular(path)), installed.manifestSha256, 'Installed aggregate metadata changed')
|
|
505
|
+
await visit(path, installed.name, installed.version)
|
|
506
|
+
return selectors
|
|
507
|
+
}
|
|
508
|
+
|
|
509
|
+
async function preservedConfigPins(before, after, workspaceBefore) {
|
|
510
|
+
const changedFiles = [...new Set([...Object.keys(before.configPins), ...Object.keys(after.configPins)])]
|
|
511
|
+
.filter(path => before.configPins[path] !== after.configPins[path])
|
|
512
|
+
const result = { preserved: changedFiles.length === 0, changedFiles, releaseAgeExclusionsAdded: [],
|
|
513
|
+
reason: changedFiles.length === 0 ? 'unchanged' : 'configuration-file-changed' }
|
|
514
|
+
const workspace = join(before.dir, 'pnpm-workspace.yaml')
|
|
515
|
+
if (changedFiles.length !== 1 || changedFiles[0] !== workspace || !after.installed) return result
|
|
516
|
+
try {
|
|
517
|
+
const bytes = await regular(workspace, true)
|
|
518
|
+
if (bytes === null || sha(bytes) !== after.configPins[workspace]) return result
|
|
519
|
+
const old = await workspaceSettings(workspaceBefore), current = await workspaceSettings(bytes)
|
|
520
|
+
if (!old || !current) return { ...result, reason: 'workspace-policy-unverified' }
|
|
521
|
+
if (!isDeepStrictEqual(old.settings, current.settings)) return { ...result, reason: 'workspace-settings-changed' }
|
|
522
|
+
const retained = releaseAgeSelectors(old.exclusions), observed = releaseAgeSelectors(current.exclusions)
|
|
523
|
+
if (!isDeepStrictEqual(retained.opaque, observed.opaque)
|
|
524
|
+
|| [...retained.counts.keys()].some(selector => !observed.counts.has(selector)))
|
|
525
|
+
return { ...result, reason: 'existing-release-age-exclusions-changed' }
|
|
526
|
+
if ([...observed.counts].some(([selector, count]) => count > Math.max(1, retained.counts.get(selector) ?? 0))) return result
|
|
527
|
+
const added = [...observed.counts.keys()].filter(selector => !retained.counts.has(selector))
|
|
528
|
+
if (!added.length) return result
|
|
529
|
+
const exact = await installedExactSelectors(after.installed)
|
|
530
|
+
if (added.some(value => !exact.has(value))) return { ...result, reason: 'release-age-exclusion-outside-exact-dependencies' }
|
|
531
|
+
return { ...result, preserved: true, releaseAgeExclusionsAdded: added, reason: 'exact-dependency-release-age-exclusions-added' }
|
|
532
|
+
} catch {
|
|
533
|
+
// Unreadable or unsupported policy/metadata cannot justify a changed pin.
|
|
534
|
+
return { ...result, reason: 'workspace-policy-unverified' }
|
|
535
|
+
}
|
|
536
|
+
}
|
|
537
|
+
|
|
451
538
|
/** Runs only the pinned public CLI; retains partial state on failure, never rolls back. */
|
|
452
539
|
export async function applyDshInstallation(plan, { adapter, signal, timeoutMs = 0, logDirectory } = {}) {
|
|
453
540
|
plan = structuredClone(plan)
|
|
@@ -456,6 +543,9 @@ export async function applyDshInstallation(plan, { adapter, signal, timeoutMs =
|
|
|
456
543
|
const state = await protocol(adapter)
|
|
457
544
|
const fresh = await planDshInstallation({ ...plan, adapter })
|
|
458
545
|
assert.equal(fresh.planSha256, plan.planSha256, 'Plan or profile changed; replan before execution')
|
|
546
|
+
const workspace = join(fresh.before.dir, 'pnpm-workspace.yaml')
|
|
547
|
+
const workspaceBefore = await regular(workspace, true)
|
|
548
|
+
assert.equal(workspaceBefore === null ? null : sha(workspaceBefore), fresh.before.configPins[workspace], 'Workspace changed; replan before execution')
|
|
459
549
|
if (logDirectory !== undefined) {
|
|
460
550
|
await safeDirectory(logDirectory)
|
|
461
551
|
for (const root of [state.dshHome, plan.product?.npmRoot, plan.previous?.product.npmRoot,
|
|
@@ -475,20 +565,37 @@ export async function applyDshInstallation(plan, { adapter, signal, timeoutMs =
|
|
|
475
565
|
catch (error) { diagnosticError = String(error.code ?? error.name) }
|
|
476
566
|
}
|
|
477
567
|
let readback = null, readbackError = null, userConfigurationPreserved = false
|
|
568
|
+
let configurationChanges = { preserved: false, changedFiles: [], releaseAgeExclusionsAdded: [], reason: 'readback-unverified' }
|
|
478
569
|
try {
|
|
479
570
|
readback = await inspectDshInstallation({ ...plan, adapter })
|
|
571
|
+
configurationChanges = await preservedConfigPins(plan.before, readback, workspaceBefore)
|
|
480
572
|
userConfigurationPreserved = readback.foreignSha256 === plan.before.foreignSha256
|
|
481
|
-
&& digest(readback.patches) === digest(plan.before.patches) &&
|
|
573
|
+
&& digest(readback.patches) === digest(plan.before.patches) && configurationChanges.preserved
|
|
482
574
|
&& (plan.action !== 'update' || digest(readback.bundles) === digest(plan.before.bundles))
|
|
483
575
|
} catch (error) { readbackError = error.message }
|
|
484
576
|
const succeeded = exitCode === 0 && diagnosticError === null && userConfigurationPreserved && readback?.configurationParsed === true
|
|
577
|
+
const reasons = []
|
|
578
|
+
if (exitCode !== 0) reasons.push('native-command-' + execution.state)
|
|
579
|
+
if (diagnosticError !== null) reasons.push('command-log-unavailable')
|
|
580
|
+
if (readback === null) reasons.push('configuration-readback-failed')
|
|
581
|
+
else {
|
|
582
|
+
if (!userConfigurationPreserved) reasons.push('user-configuration-changed')
|
|
583
|
+
if (!readback.packageInstalled) reasons.push('package-not-installed')
|
|
584
|
+
if (!readback.bundleRegistered) reasons.push('bundle-not-registered')
|
|
585
|
+
if (!readback.configurationParsed) reasons.push('configuration-not-parsed')
|
|
586
|
+
}
|
|
587
|
+
const failure = succeeded ? null : { reasons, automaticRetry: false,
|
|
588
|
+
recovery: 'Inspect this receipt, its command logs and the retained profile in the official DSH Plugins interface. '
|
|
589
|
+
+ 'Use the existing host plugin manager to inspect or repair package/bundle state after reviewing the cause. '
|
|
590
|
+
+ 'Do not reapply this saved plan or use a failed receipt as previous ownership. DSH has no installer recover/adopt route; '
|
|
591
|
+
+ 'a restart or an already-registered observation cannot repair failed transaction ownership. Keep existing projects and configuration.' }
|
|
485
592
|
const ownershipEstablished = Boolean(succeeded && plan.product?.releaseSelection && (plan.previous
|
|
486
593
|
|| plan.action === 'install' && !plan.before.installed && !plan.before.registered && execution.state === 'completed'))
|
|
487
594
|
return { schemaVersion: 2, kind: 'dsh-installation', host: 'dsh', route: 'official-dsh-bundle',
|
|
488
595
|
product: plan.product, planSnapshot: plan, planSha256: plan.planSha256, operation: plan.action,
|
|
489
596
|
ownershipEstablished, source: { expected: expectedSource(plan), observed: readback === null ? null : ownedState(readback) },
|
|
490
597
|
registryAcquisitionVerified: false, scope: adapter.scope, status: succeeded ? 'registered-config-parsed' : 'failed-partial-state-retained',
|
|
491
|
-
exitCode, executionError, execution, diagnosticError, readbackError, readback, userConfigurationPreserved,
|
|
598
|
+
exitCode, executionError, execution, diagnosticError, readbackError, readback, userConfigurationPreserved, configurationChanges, failure,
|
|
492
599
|
userConfigurationStatus: readback === null ? 'unverified' : userConfigurationPreserved ? 'observed-matching' : 'changed',
|
|
493
600
|
rollbackAttempted: false, rollbackScope: 'adapter-only; official CLI may perform limited compatibility restoration', partialStateRetained: !succeeded,
|
|
494
601
|
runtimeMounted: false, bundleCycleVerified: false, releaseValidated: false }
|
package/package.json
CHANGED
|
@@ -49,7 +49,8 @@
|
|
|
49
49
|
"@huggingface/transformers": "3.8.1",
|
|
50
50
|
"onnxruntime-common": "1.21.0",
|
|
51
51
|
"undici": "8.10.2",
|
|
52
|
-
"trash": "10.1.1"
|
|
52
|
+
"trash": "10.1.1",
|
|
53
|
+
"yaml": "2.9.1"
|
|
53
54
|
},
|
|
54
55
|
"x-design-release-review": {
|
|
55
56
|
"fixture": false,
|
|
@@ -78,5 +79,5 @@
|
|
|
78
79
|
}
|
|
79
80
|
},
|
|
80
81
|
"name": "yugoo-design",
|
|
81
|
-
"version": "0.2.
|
|
82
|
+
"version": "0.2.3"
|
|
82
83
|
}
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
"qwenwork-template/NOTICE": "6b4eec391144fcbd96ec7b45a28764ab1932722a96325248377c3e28aac2c62d",
|
|
15
15
|
"qwenwork-template/THIRD_PARTY_NOTICES.md": "bfcab921c6c15ccc47f9b1a6cc5941675c95962de5ea5b0edc50fbfa2aef136a",
|
|
16
16
|
"qwenwork-template/authoring/studio-creators/index.md": "01eb453e4bcbd7cd104bdd9032a1c1d09c3a4de5b69982eaf18ae528c6a7ea37",
|
|
17
|
-
"qwenwork-template/authoring/studio-creators/material.json": "
|
|
17
|
+
"qwenwork-template/authoring/studio-creators/material.json": "c2fdb30666942a942157c7f1e1a9ecfe542b87bf35b30412a6a541e584fac216",
|
|
18
18
|
"qwenwork-template/authoring/studio-creators/source/.agents/skills/design-bundle-creator/SKILL.md": "99c0ddca35a9a65ca9b097ee9072994a1ca2a4848ef6fe3ca07f5f29956806ed",
|
|
19
19
|
"qwenwork-template/authoring/studio-creators/source/.agents/skills/design-bundle-creator/agents/openai.yaml": "60da07d566f3c27a4f9d373d14473db1bbae82fa36f1ada035c6f9128d74bb00",
|
|
20
20
|
"qwenwork-template/authoring/studio-creators/source/.agents/skills/design-bundle-creator/assets/skill.template.yaml": "d7a6c63460403c981a7a107f9a4a715919b8653ce5aa268ce6aecf100b925b59",
|
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
"qwenwork-template/authoring/studio-creators/source/docs/bundle-contract.md": "aa4da3d9be862de30f70f5539061c7018144047e8bef9bcc37e54ca119a1767f",
|
|
39
39
|
"qwenwork-template/authoring/studio-creators/source/docs/dsl-spec.md": "9d2897f48ff470d1a51d93af0b1d90b8173052f1a6e0380ba4629470dfdcfc5e",
|
|
40
40
|
"qwenwork-template/authoring/studio-creators/source/docs/panel-uiux-standard.md": "37d3f5095fd4e7b62fb46a13375bc5b265e5ca4798f5016a0cba42ba9129c9b8",
|
|
41
|
-
"qwenwork-template/authoring/studio-creators/source/docs/system-design-baseline.md": "
|
|
41
|
+
"qwenwork-template/authoring/studio-creators/source/docs/system-design-baseline.md": "eecd569936892c90d32d7822547972913d373ef42af2970ffdac9d38abb2cbe7",
|
|
42
42
|
"qwenwork-template/authoring/studio-creators/source/docs/wiki/extending.md": "2774e855d86104dcf49559cbcf868b1083da0d39c669cec4d914c56b82852b3d",
|
|
43
43
|
"qwenwork-template/authoring/studio-creators/source/docs/wiki/terminology.md": "e17ac6fd530861295dbf8f6fd7bc742f93fb32707cc19f377632c2352f9385a0",
|
|
44
44
|
"qwenwork-template/authoring/studio-creators/source/examples/community-workshop-delivery/mindset.md": "647002e93e0ca4700ad167f08990a7360da148a46c0830b862769840c0dc93d8",
|
|
@@ -127,7 +127,7 @@
|
|
|
127
127
|
"src/workbuddy-relay-service.mjs": "44d60d6956250417507fb76c71c3030a01bc38e565e4572a761b46f255f8e669",
|
|
128
128
|
"src/workbuddy-ui-probes.mjs": "a91d4651248125769254755bdf66a44bbc9e5a793dad0a137c35acbb10a89a88",
|
|
129
129
|
"studio-authoring-template/authoring/studio-creators/index.md": "01eb453e4bcbd7cd104bdd9032a1c1d09c3a4de5b69982eaf18ae528c6a7ea37",
|
|
130
|
-
"studio-authoring-template/authoring/studio-creators/material.json": "
|
|
130
|
+
"studio-authoring-template/authoring/studio-creators/material.json": "c2fdb30666942a942157c7f1e1a9ecfe542b87bf35b30412a6a541e584fac216",
|
|
131
131
|
"studio-authoring-template/authoring/studio-creators/source/.agents/skills/design-bundle-creator/SKILL.md": "99c0ddca35a9a65ca9b097ee9072994a1ca2a4848ef6fe3ca07f5f29956806ed",
|
|
132
132
|
"studio-authoring-template/authoring/studio-creators/source/.agents/skills/design-bundle-creator/agents/openai.yaml": "60da07d566f3c27a4f9d373d14473db1bbae82fa36f1ada035c6f9128d74bb00",
|
|
133
133
|
"studio-authoring-template/authoring/studio-creators/source/.agents/skills/design-bundle-creator/assets/skill.template.yaml": "d7a6c63460403c981a7a107f9a4a715919b8653ce5aa268ce6aecf100b925b59",
|
|
@@ -151,7 +151,7 @@
|
|
|
151
151
|
"studio-authoring-template/authoring/studio-creators/source/docs/bundle-contract.md": "aa4da3d9be862de30f70f5539061c7018144047e8bef9bcc37e54ca119a1767f",
|
|
152
152
|
"studio-authoring-template/authoring/studio-creators/source/docs/dsl-spec.md": "9d2897f48ff470d1a51d93af0b1d90b8173052f1a6e0380ba4629470dfdcfc5e",
|
|
153
153
|
"studio-authoring-template/authoring/studio-creators/source/docs/panel-uiux-standard.md": "37d3f5095fd4e7b62fb46a13375bc5b265e5ca4798f5016a0cba42ba9129c9b8",
|
|
154
|
-
"studio-authoring-template/authoring/studio-creators/source/docs/system-design-baseline.md": "
|
|
154
|
+
"studio-authoring-template/authoring/studio-creators/source/docs/system-design-baseline.md": "eecd569936892c90d32d7822547972913d373ef42af2970ffdac9d38abb2cbe7",
|
|
155
155
|
"studio-authoring-template/authoring/studio-creators/source/docs/wiki/extending.md": "2774e855d86104dcf49559cbcf868b1083da0d39c669cec4d914c56b82852b3d",
|
|
156
156
|
"studio-authoring-template/authoring/studio-creators/source/docs/wiki/terminology.md": "e17ac6fd530861295dbf8f6fd7bc742f93fb32707cc19f377632c2352f9385a0",
|
|
157
157
|
"studio-authoring-template/authoring/studio-creators/source/examples/community-workshop-delivery/mindset.md": "647002e93e0ca4700ad167f08990a7360da148a46c0830b862769840c0dc93d8",
|