@mnstry/atelier 0.2.0-alpha.13 → 0.2.0-alpha.15
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/CHANGELOG.md +283 -0
- package/README.md +102 -52
- package/SECURITY.md +1 -1
- package/TRADEMARKS.md +2 -2
- package/contracts/atelier-extension-manifest.v1.schema.json +412 -0
- package/contracts/atelier-graph-view.v1.schema.json +1085 -0
- package/contracts/public-api-baseline.json +298 -19
- package/docs/README.md +90 -0
- package/docs/blocks/capability-stewardship.md +1 -1
- package/docs/blocks/claims.md +2 -2
- package/docs/blocks/conformance-admission.md +1 -1
- package/docs/blocks/learning-harnesses.md +1 -1
- package/docs/{atelier-sync.md → guides/atelier-sync.md} +20 -14
- package/docs/{capability-stewardship.md → guides/capability-stewardship.md} +2 -4
- package/docs/guides/co-authoring.md +113 -0
- package/docs/{distributions.md → guides/distributions.md} +13 -8
- package/docs/guides/extensions.md +189 -0
- package/docs/guides/graph-refresh.md +152 -0
- package/docs/guides/graph-workspace.md +64 -0
- package/docs/{ingestion.md → guides/ingestion.md} +16 -15
- package/docs/{inquiry-harnesses.md → guides/inquiry-harnesses.md} +2 -3
- package/docs/{knowledge-workspace.md → guides/knowledge-workspace.md} +2 -2
- package/docs/{learning-harnesses.md → guides/learning-harnesses.md} +2 -3
- package/docs/{learning.md → guides/learning.md} +12 -5
- package/docs/{obsidian.md → guides/obsidian.md} +370 -23
- package/docs/guides/ontology-guide.md +111 -0
- package/docs/{personal-workspace.md → guides/personal-workspace.md} +17 -5
- package/docs/{research-starter.md → guides/research-starter.md} +1 -1
- package/docs/{tenant-readiness.md → guides/tenant-readiness.md} +39 -0
- package/docs/{upgrade.md → guides/upgrade.md} +197 -11
- package/docs/knowledge-health/assessment/capabilities.md +6 -15
- package/docs/knowledge-health/facilitator.md +15 -4
- package/docs/knowledge-health/{devday/participant-response.md → participant-response.md} +4 -2
- package/docs/knowledge-health/quickstart.md +97 -75
- package/docs/knowledge-health/readme.md +13 -5
- package/docs/maintainers/describing-the-atelier.md +173 -0
- package/docs/{release-engineering.md → maintainers/release-engineering.md} +5 -4
- package/docs/{announcements.md → reference/announcements.md} +1 -1
- package/docs/{architecture.md → reference/architecture.md} +31 -5
- package/docs/{atelier-runtime.md → reference/atelier-runtime.md} +1 -1
- package/docs/{connected-composition.md → reference/connected-composition.md} +7 -10
- package/docs/{coordination.md → reference/coordination.md} +1 -1
- package/docs/{decisions.md → reference/decisions.md} +3 -3
- package/docs/{design.md → reference/design.md} +1 -1
- package/docs/reference/edge-policy.md +151 -0
- package/docs/reference/graph-view-structured.md +119 -0
- package/docs/reference/graph-view.md +139 -0
- package/docs/reference/graph-workspace.md +37 -0
- package/docs/{intake-and-guides.md → reference/intake-and-guides.md} +3 -4
- package/docs/{knowledge-graph.md → reference/knowledge-graph.md} +120 -6
- package/docs/{local-services.md → reference/local-services.md} +43 -4
- package/docs/{obsidian-contract.md → reference/obsidian-contract.md} +29 -4
- package/docs/{obsidian-plugin.md → reference/obsidian-plugin.md} +218 -68
- package/docs/{practical-judgment.md → reference/phronesis.md} +12 -3
- package/docs/reference/portability.md +92 -0
- package/docs/{portable-presentation.md → reference/portable-presentation.md} +2 -2
- package/docs/{presentation-consumer-boundaries.md → reference/presentation-consumer-boundaries.md} +5 -0
- package/docs/{project-options.md → reference/project-options.md} +17 -0
- package/docs/{repo-boundary-guard.md → reference/repo-boundary-guard.md} +50 -4
- package/docs/{review-portability.md → reference/review-portability.md} +4 -0
- package/docs/{semantic-operation.md → reference/semantic-operation.md} +4 -3
- package/docs/{template-profile.md → reference/template-profile.md} +1 -1
- package/docs/{trackables.md → reference/trackables.md} +2 -2
- package/docs/start/independent-start.md +89 -0
- package/docs/{install.md → start/install.md} +9 -9
- package/docs/{knowledge-setup.md → start/knowledge-setup.md} +5 -5
- package/docs/{research-starter-quickstart.md → start/research-starter-quickstart.md} +6 -6
- package/fixtures/atelier-architecture/catalog/invalid/document.json +2 -2
- package/fixtures/atelier-architecture/catalog/valid/document.json +2 -2
- package/fixtures/graph-view/synthetic-authorized-input.v1.json +437 -0
- package/fixtures/graph-view/synthetic-view.v1.json +1 -0
- package/fixtures/knowledge-health/workshop/README.md +1 -1
- package/fixtures/templates/local-library.v1.json +3 -1
- package/package.json +22 -8
- package/plugins/obsidian/main.js +57 -8
- package/plugins/obsidian/manifest.json +1 -1
- package/skills/claude/atelier-guided-upgrade/SKILL.md +1 -1
- package/skills/claude/atelier-knowledge-setup/SKILL.md +2 -2
- package/skills/claude/atelier-local-service/SKILL.md +1 -1
- package/skills/claude/atelier-practical-judgment/SKILL.md +7 -2
- package/skills/claude/atelier-skill-steward/SKILL.md +1 -1
- package/skills/claude/mnstry-readiness/SKILL.md +2 -2
- package/skills/codex/atelier-guided-upgrade/SKILL.md +1 -1
- package/skills/codex/atelier-knowledge-setup/SKILL.md +2 -2
- package/skills/codex/atelier-local-service/SKILL.md +1 -1
- package/skills/codex/atelier-practical-judgment/SKILL.md +7 -2
- package/skills/codex/atelier-skill-steward/SKILL.md +1 -1
- package/skills/codex/mnstry-readiness/SKILL.md +2 -2
- package/src/architecture/catalog.mjs +2 -2
- package/src/attestation/sign.mjs +1 -1
- package/src/boundary/content-rules.mjs +534 -68
- package/src/boundary/policy.mjs +187 -60
- package/src/cli/run.mjs +26 -9
- package/src/commands/distribution.mjs +1 -1
- package/src/commands/extension.mjs +27 -0
- package/src/commands/ingest.mjs +1 -1
- package/src/commands/learn.mjs +1 -1
- package/src/commands/obsidian.mjs +49 -21
- package/src/commands/review.mjs +3 -0
- package/src/edge-policy/contract.mjs +69 -0
- package/src/edge-policy/policy.mjs +142 -0
- package/src/edge-policy/source-citation-adapter.mjs +43 -0
- package/src/extension-packs/loader.mjs +4 -3
- package/src/extensions/admission.mjs +83 -0
- package/src/extensions/client.d.mts +23 -0
- package/src/extensions/client.mjs +99 -0
- package/src/extensions/contracts.d.mts +29 -0
- package/src/extensions/contracts.mjs +163 -0
- package/src/extensions/convex.d.mts +24 -0
- package/src/extensions/convex.mjs +189 -0
- package/src/extensions/delegation.mjs +54 -0
- package/src/extensions/drizzle.d.mts +11 -0
- package/src/extensions/drizzle.mjs +33 -0
- package/src/extensions/postgres.d.mts +7 -0
- package/src/extensions/postgres.mjs +66 -0
- package/src/extensions/prisma.d.mts +13 -0
- package/src/extensions/prisma.mjs +63 -0
- package/src/extensions/project.mjs +432 -0
- package/src/extensions/scaffold-convex.mjs +130 -0
- package/src/extensions/scaffold-sql.mjs +144 -0
- package/src/extensions/server.d.mts +20 -0
- package/src/extensions/server.mjs +102 -0
- package/src/extensions/sql-scope.mjs +22 -0
- package/src/graph/graph.mjs +13 -5
- package/src/graph/knowledge-graph.mjs +20 -2
- package/src/graph/repo-contribution.mjs +405 -0
- package/src/graph/repo-contribution.types.mjs +32 -0
- package/src/graph-access/edge-decision-adapter.mjs +41 -0
- package/src/graph-access/edge-record-adapter.mjs +73 -0
- package/src/graph-access/index.mjs +253 -0
- package/src/graph-access/multi-contribution-record-adapter.mjs +101 -0
- package/src/graph-access/multi-record-projection-adapter.mjs +74 -0
- package/src/graph-access/source-adapter.mjs +81 -0
- package/src/graph-refresh/compare.mjs +110 -0
- package/src/graph-refresh/controller.mjs +324 -0
- package/src/graph-refresh/index.mjs +3 -0
- package/src/graph-refresh/local.mjs +78 -0
- package/src/graph-view/babylon/babylon-scene-port.mjs +64 -0
- package/src/graph-view/babylon/index.mjs +2 -0
- package/src/graph-view/babylon/navigator.mjs +312 -0
- package/src/graph-view/babylon/provenance.mjs +36 -0
- package/src/graph-view/babylon/scene-controller.mjs +131 -0
- package/src/graph-view/babylon/semantic-picking.mjs +35 -0
- package/src/graph-view/babylon/web-host.mjs +188 -0
- package/src/graph-view/cli.mjs +3 -0
- package/src/graph-view/command.mjs +34 -0
- package/src/graph-view/contracts.mjs +79 -0
- package/src/graph-view/errors.mjs +5 -0
- package/src/graph-view/index.mjs +4 -0
- package/src/graph-view/intents.mjs +30 -0
- package/src/graph-view/query.mjs +213 -0
- package/src/graph-view/refs.mjs +2 -0
- package/src/graph-view/structured/browser.mjs +262 -0
- package/src/graph-view/structured/styles.mjs +8 -0
- package/src/graph-workspace/authoring.mjs +185 -0
- package/src/graph-workspace/browser/constellation.mjs +369 -0
- package/src/graph-workspace/browser/dom.mjs +23 -0
- package/src/graph-workspace/browser/index.mjs +6 -0
- package/src/graph-workspace/browser/review.mjs +55 -0
- package/src/graph-workspace/browser/styles.mjs +11 -0
- package/src/graph-workspace/browser/workbench.mjs +351 -0
- package/src/graph-workspace/browser/workspace.mjs +431 -0
- package/src/graph-workspace/disclosure.mjs +39 -0
- package/src/graph-workspace/geometry.mjs +78 -0
- package/src/graph-workspace/index.mjs +11 -0
- package/src/graph-workspace/labels.mjs +50 -0
- package/src/graph-workspace/model.mjs +109 -0
- package/src/graph-workspace/recipes.mjs +88 -0
- package/src/graph-workspace/scale.mjs +95 -0
- package/src/graph-workspace/theme.mjs +156 -0
- package/src/ingestion/optional/graphify/graphify_supplier.py +5 -0
- package/src/ingestion/optional/graphify/native-closure-pins.json +275 -0
- package/src/ingestion/optional/graphify/native-pins.json +306 -0
- package/src/knowledge/ontology-guide.mjs +152 -0
- package/src/knowledge-health/proof/installed-check.mjs +2 -2
- package/src/knowledge-health/rule-identity.mjs +14 -9
- package/src/knowledge-health/workshop.mjs +22 -2
- package/src/personal-workspace/index.mjs +1 -1
- package/src/personal-workspace/selection.mjs +34 -3
- package/src/project/config.mjs +1 -1
- package/src/project/path-match.mjs +2 -1
- package/src/project/providers/github.mjs +24 -0
- package/src/project/repo-identity.mjs +3 -22
- package/src/projection/obsidian/contracts.mjs +1 -1
- package/src/projection/obsidian/materialize/path-registry.mjs +1 -1
- package/src/projection/obsidian/materialize/prepare-view.mjs +88 -6
- package/src/projection/obsidian/materialize/redaction.mjs +1 -1
- package/src/projection/obsidian/personal-workspace.mjs +84 -5
- package/src/projection/obsidian/plugin-bridge/channel.mjs +1 -1
- package/src/projection/obsidian/proposals/adapter.mjs +46 -23
- package/src/projection/obsidian/proposals/observation.mjs +40 -2
- package/src/projection/obsidian/publication/publisher.mjs +96 -8
- package/src/projection/project.mjs +21 -16
- package/src/readiness/readiness.mjs +20 -11
- package/src/readiness-protocols/bundled-pack.mjs +14 -766
- package/src/readiness-protocols/bundled-selection.mjs +32 -0
- package/src/readiness-protocols/evidence.mjs +2 -1
- package/src/readiness-protocols/packs/mnstry.mjs +766 -0
- package/src/readiness-protocols/runtime.mjs +43 -6
- package/src/runtime/obsidian/engine.mjs +387 -76
- package/src/runtime/obsidian/lifecycle.mjs +20 -15
- package/src/runtime/obsidian/login-item.mjs +6 -3
- package/src/runtime/obsidian/machine-settings.mjs +52 -8
- package/src/runtime/obsidian/observation.mjs +36 -4
- package/src/runtime/obsidian/opening.mjs +4 -3
- package/src/runtime/obsidian/personal-selection.mjs +187 -0
- package/src/runtime/obsidian/pipeline.mjs +115 -6
- package/src/runtime/obsidian/private-lock.mjs +50 -6
- package/src/runtime/obsidian/selection-continuity.mjs +124 -0
- package/src/runtime/obsidian/service-main.mjs +68 -16
- package/src/runtime/obsidian/service.mjs +80 -6
- package/src/runtime/obsidian/unheld-evidence.mjs +1 -1
- package/src/runtime/obsidian/view-permission.mjs +335 -0
- package/src/ui/control-system.mjs +201 -0
- package/src/ui/html-primitives.mjs +3 -0
- package/src/upgrade/closure-diagnostics.mjs +135 -0
- package/src/upgrade/closure.mjs +649 -0
- package/src/upgrade/upgrade.mjs +42 -11
- package/templates/distribution-workspace/README.md +2 -2
- package/templates/external-project-workspace/atelier.project.json +3 -0
- package/templates/external-project-workspace/pack-lifecycle.json +3 -1
- package/templates/knowledge-workspace/README.md +2 -2
- package/docs/integration-and-review-plan.md +0 -409
- package/docs/integration-contract-decisions.md +0 -44
- package/docs/knowledge-health/devday/facilitator.md +0 -16
- package/docs/knowledge-health/devday/public-default.md +0 -107
- package/docs/knowledge-health/devday/quickstart.md +0 -18
- package/docs/knowledge-health/devday/support.md +0 -22
- package/docs/knowledge-health/exercise.md +0 -17
- package/docs/knowledge-health/support.md +0 -34
- package/docs/presentation-review-disposition.md +0 -47
- package/docs/progressive-ingestion-acceptance.md +0 -89
- package/docs/progressive-ingestion.md +0 -235
- /package/docs/{exact-upgrades.md → guides/exact-upgrades.md} +0 -0
- /package/docs/{guided-upgrades.md → guides/guided-upgrades.md} +0 -0
- /package/docs/{local-review.md → guides/local-review.md} +0 -0
- /package/docs/{skill-steward.md → guides/skill-steward.md} +0 -0
- /package/docs/{template-upgrades.md → guides/template-upgrades.md} +0 -0
- /package/docs/{assurance-controls.md → maintainers/assurance-controls.md} +0 -0
- /package/docs/{attestation.md → reference/attestation.md} +0 -0
- /package/docs/{coauthor-session.md → reference/coauthor-session.md} +0 -0
- /package/docs/{continuity.md → reference/continuity.md} +0 -0
- /package/docs/{contract-stability.md → reference/contract-stability.md} +0 -0
- /package/docs/{decision-practices.md → reference/decision-practices.md} +0 -0
- /package/docs/{evidence-navigation.md → reference/evidence-navigation.md} +0 -0
- /package/docs/{extension-pack-lifecycle.md → reference/extension-pack-lifecycle.md} +0 -0
- /package/docs/{interaction-and-reflection.md → reference/interaction-and-reflection.md} +0 -0
- /package/docs/{local-state.md → reference/local-state.md} +0 -0
- /package/docs/{ontology.md → reference/ontology.md} +0 -0
- /package/docs/{optional-ingestion.md → reference/optional-ingestion.md} +0 -0
- /package/docs/{project-command-inventory.md → reference/project-command-inventory.md} +0 -0
- /package/docs/{semantic-ingestion.md → reference/semantic-ingestion.md} +0 -0
- /package/docs/{vault-service.md → reference/vault-service.md} +0 -0
package/plugins/obsidian/main.js
CHANGED
|
@@ -196,11 +196,14 @@ class AtelierStatusModal extends obsidian.Modal {
|
|
|
196
196
|
class AtelierProjectionPlugin extends obsidian.Plugin {
|
|
197
197
|
async onload() {
|
|
198
198
|
this.channel = null
|
|
199
|
+
this.lastObservedStatus = null
|
|
199
200
|
this.session = null
|
|
200
201
|
this.cycling = null
|
|
201
202
|
this.unloaded = false
|
|
203
|
+
this.channelAdmitted = false
|
|
202
204
|
this.view = { state: 'connecting', reason: 'not-yet-asked', report: null }
|
|
203
205
|
this.shownState = null
|
|
206
|
+
this.noticeState = null
|
|
204
207
|
// A round's failure that differs from the failure shown, not yet seen twice in a row.
|
|
205
208
|
this.pendingFailure = null
|
|
206
209
|
this.appVersion = typeof obsidian.apiVersion === 'string' ? obsidian.apiVersion : null
|
|
@@ -226,6 +229,7 @@ class AtelierProjectionPlugin extends obsidian.Plugin {
|
|
|
226
229
|
this.setView({ state: 'not-set-up', reason: 'node-modules-unavailable', report: null })
|
|
227
230
|
return
|
|
228
231
|
}
|
|
232
|
+
this.channelAdmitted = true
|
|
229
233
|
// This launch of the plugin: the service tells two apps holding the same vault apart by it.
|
|
230
234
|
this.instanceId = `pi-${this.crypto.randomBytes(16).toString('hex')}`
|
|
231
235
|
await this.readChannel()
|
|
@@ -238,6 +242,8 @@ class AtelierProjectionPlugin extends obsidian.Plugin {
|
|
|
238
242
|
// The lease lapses by itself; releasing it says at once that the vault closed. A round still under way stops at its
|
|
239
243
|
// next step, and a session it opens after this is released at once.
|
|
240
244
|
this.unloaded = true
|
|
245
|
+
this.channelAdmitted = false
|
|
246
|
+
this.lastObservedStatus = null
|
|
241
247
|
const session = this.session
|
|
242
248
|
this.session = null
|
|
243
249
|
if (this.channel && session) void this.release(this.channel, session)
|
|
@@ -245,6 +251,7 @@ class AtelierProjectionPlugin extends obsidian.Plugin {
|
|
|
245
251
|
|
|
246
252
|
// Obsidian calls this when data.json changed on disk: Atelier republished the channel.
|
|
247
253
|
async onExternalSettingsChange() {
|
|
254
|
+
if (!this.channelAdmitted || this.unloaded) return
|
|
248
255
|
await this.readChannel()
|
|
249
256
|
// A round under way still speaks for the old channel; the next one uses the new.
|
|
250
257
|
if (this.cycling) await this.cycling
|
|
@@ -252,13 +259,19 @@ class AtelierProjectionPlugin extends obsidian.Plugin {
|
|
|
252
259
|
}
|
|
253
260
|
|
|
254
261
|
async readChannel() {
|
|
262
|
+
if (!this.channelAdmitted || this.unloaded) return
|
|
255
263
|
let data = null
|
|
256
264
|
try { data = await this.loadData() } catch { data = null }
|
|
265
|
+
if (!this.channelAdmitted || this.unloaded) return
|
|
257
266
|
const next = channelOf(data)
|
|
258
267
|
const same = next && this.channel && next.host === this.channel.host && next.port === this.channel.port && next.scopeId === this.channel.scopeId && next.bearer === this.channel.bearer
|
|
259
|
-
if (!same)
|
|
268
|
+
if (!same) {
|
|
269
|
+
this.session = null
|
|
270
|
+
this.lastObservedStatus = null
|
|
271
|
+
} else if (this.lastObservedStatus?.channel === this.channel) this.lastObservedStatus.channel = next
|
|
260
272
|
this.channel = next
|
|
261
273
|
if (next === null) this.setView({ state: 'not-set-up', reason: data === null ? 'no-channel-data' : 'channel-data-unusable', report: null })
|
|
274
|
+
else if (!same) this.setView({ state: 'connecting', reason: 'not-yet-asked', report: null })
|
|
262
275
|
}
|
|
263
276
|
|
|
264
277
|
// One round: shake hands (once per session), renew the lease, read the status.
|
|
@@ -270,12 +283,12 @@ class AtelierProjectionPlugin extends obsidian.Plugin {
|
|
|
270
283
|
|
|
271
284
|
// Whether a round that started for `channel` may still act.
|
|
272
285
|
current(channel) {
|
|
273
|
-
return !this.unloaded && channel === this.channel
|
|
286
|
+
return this.channelAdmitted && !this.unloaded && channel === this.channel
|
|
274
287
|
}
|
|
275
288
|
|
|
276
289
|
async runCycle() {
|
|
277
290
|
const channel = this.channel
|
|
278
|
-
if (channel === null || this.unloaded) return
|
|
291
|
+
if (!this.channelAdmitted || channel === null || this.unloaded) return
|
|
279
292
|
if (this.session === null) {
|
|
280
293
|
if (!(await this.handshake(channel))) return
|
|
281
294
|
} else {
|
|
@@ -290,6 +303,7 @@ class AtelierProjectionPlugin extends obsidian.Plugin {
|
|
|
290
303
|
return
|
|
291
304
|
}
|
|
292
305
|
// The service started again since, the vault's key changed, or the session is not accepted: shake hands at once.
|
|
306
|
+
this.lastObservedStatus = null
|
|
293
307
|
if (!(await this.handshake(channel))) return
|
|
294
308
|
}
|
|
295
309
|
}
|
|
@@ -386,13 +400,18 @@ class AtelierProjectionPlugin extends obsidian.Plugin {
|
|
|
386
400
|
|
|
387
401
|
unreachable(answer) {
|
|
388
402
|
const reason = answer.kind === 'unreachable' ? answer.code : typeof answer.error === 'string' ? answer.error : answer.body && typeof answer.body.error === 'string' ? answer.body.error : `answered-${answer.statusCode}`
|
|
389
|
-
|
|
403
|
+
// Retain history only for a transport interruption, never an unsealed or
|
|
404
|
+
// refused answer, failed listener proof or unknown authentication state.
|
|
405
|
+
const transportFailure = answer.kind === 'unreachable' && ['refused', 'timeout'].includes(answer.code)
|
|
406
|
+
return { state: 'unreachable', reason, report: null, transportFailure }
|
|
390
407
|
}
|
|
391
408
|
|
|
392
409
|
// What a round found. A failure other than the one shown ('not set up' where 'service unreachable' is shown, or the other
|
|
393
410
|
// way round) is shown only when the next round finds it too, so answers that alternate between them do not make the
|
|
394
411
|
// status bar flip. Anything else is shown at once.
|
|
395
412
|
showRound(view) {
|
|
413
|
+
// A setup refusal clears remembered evidence even while its label is debounced.
|
|
414
|
+
if (view.state === 'not-set-up' || (view.state === 'unreachable' && view.transportFailure !== true)) this.lastObservedStatus = null
|
|
396
415
|
if (ROUND_FAILURES.has(view.state) && ROUND_FAILURES.has(this.shownState) && view.state !== this.shownState && this.pendingFailure !== view.state) {
|
|
397
416
|
this.pendingFailure = view.state
|
|
398
417
|
return
|
|
@@ -404,11 +423,32 @@ class AtelierProjectionPlugin extends obsidian.Plugin {
|
|
|
404
423
|
// Nothing is shown once the plugin unloaded.
|
|
405
424
|
if (this.unloaded) return
|
|
406
425
|
this.pendingFailure = null
|
|
407
|
-
const previous = this.
|
|
426
|
+
const previous = this.noticeState
|
|
427
|
+
// A transient display projection, never a freshness or permission record.
|
|
428
|
+
// Only a report of this exact channel may be remembered. `channel` is an
|
|
429
|
+
// in-memory identity binding, never shown or stored; the other fields hold
|
|
430
|
+
// no service health, edit counts, source content or credentials.
|
|
431
|
+
if (!this.channel || view.state === 'not-set-up' || view.state === 'unsupported' || (view.state === 'unreachable' && view.transportFailure !== true)) this.lastObservedStatus = null
|
|
432
|
+
else if (view.report !== null) {
|
|
433
|
+
const report = view.report
|
|
434
|
+
const observed = isPlainObject(report) && report.schema === CHANNEL.statusSchema && report.scopeId === this.channel.scopeId && isPlainObject(report.view) && report.view.state !== 'disabled' ? report.view : null
|
|
435
|
+
this.lastObservedStatus = observed === null ? null : {
|
|
436
|
+
channel: this.channel, state: view.state, reason: view.reason,
|
|
437
|
+
generationId: typeof observed.generationId === 'string' ? observed.generationId : null,
|
|
438
|
+
checkedAt: typeof observed.checkedAt === 'string' ? observed.checkedAt : null,
|
|
439
|
+
}
|
|
440
|
+
}
|
|
408
441
|
this.view = view
|
|
409
442
|
this.statusBarEl.setText(labelOf(view))
|
|
410
443
|
this.statusBarEl.setAttr('aria-label', `${labelOf(view)} (${readable(view.reason)})`)
|
|
411
444
|
this.shownState = view.state
|
|
445
|
+
// A republished channel resets the display before its first answer, but
|
|
446
|
+
// does not repeat attention notices or erase the recovery transition.
|
|
447
|
+
if (view.state === 'connecting') {
|
|
448
|
+
if (previous === null) this.noticeState = view.state
|
|
449
|
+
return
|
|
450
|
+
}
|
|
451
|
+
this.noticeState = view.state
|
|
412
452
|
if (previous === view.state || previous === null) return
|
|
413
453
|
if (Object.prototype.hasOwnProperty.call(ATTENTION, view.state)) new obsidian.Notice(ATTENTION[view.state](view))
|
|
414
454
|
else if (view.state === 'current' && Object.prototype.hasOwnProperty.call(ATTENTION, previous)) new obsidian.Notice('Atelier: this view is current again.')
|
|
@@ -419,13 +459,22 @@ class AtelierProjectionPlugin extends obsidian.Plugin {
|
|
|
419
459
|
const view = isPlainObject(report.view) ? report.view : {}
|
|
420
460
|
const count = (value) => (Number.isInteger(value) ? String(value) : 'unknown')
|
|
421
461
|
const channel = this.channel
|
|
462
|
+
const last = this.lastObservedStatus?.channel === channel ? this.lastObservedStatus : null
|
|
463
|
+
const missingGeneration = this.view.state === 'unreachable' ? 'unknown' : 'none yet'
|
|
464
|
+
const missingCheck = this.view.state === 'unreachable' ? 'unknown' : 'not yet'
|
|
422
465
|
return [
|
|
423
466
|
['View', channel ? channel.scopeId : 'not set up'],
|
|
424
467
|
['State', labelOf(this.view).replace(/^Atelier: /, '')],
|
|
425
468
|
['Reason', readable(this.view.reason)],
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
469
|
+
...(this.view.state !== 'unreachable' ? [] : last ? [
|
|
470
|
+
['Last observed state', readable(last.state)],
|
|
471
|
+
['Last observed reason', readable(last.reason)],
|
|
472
|
+
['Last observed generation', last.generationId || 'none yet'],
|
|
473
|
+
['Last observed check', last.checkedAt || 'not yet'],
|
|
474
|
+
] : [['Last observed status', 'not available']]),
|
|
475
|
+
['Generation', typeof view.generationId === 'string' ? view.generationId : missingGeneration],
|
|
476
|
+
['Prepared generation', typeof view.preparedGenerationId === 'string' ? view.preparedGenerationId : missingGeneration],
|
|
477
|
+
['Checked at', typeof view.checkedAt === 'string' ? view.checkedAt : missingCheck],
|
|
429
478
|
['Held edits', count(view.heldNoteCount)],
|
|
430
479
|
['Retained edits', count(view.retainedEdits)],
|
|
431
480
|
['Pending edits', count(isPlainObject(report.pendingEdits) ? report.pendingEdits.open : null)],
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"id": "atelier-projection",
|
|
3
3
|
"name": "Atelier",
|
|
4
|
-
"version": "1.1.
|
|
4
|
+
"version": "1.1.2",
|
|
5
5
|
"minAppVersion": "1.13.7",
|
|
6
6
|
"description": "Shows whether this Atelier view is current and tells Atelier's maintenance service that the vault is open. Shipped by Atelier into the vaults it manages.",
|
|
7
7
|
"author": "MNSTRY",
|
|
@@ -17,7 +17,7 @@ actual installed scoped package, package-manager lock, Atelier lock, Git state,
|
|
|
17
17
|
project roots, packs, overlays and running-service ownership. Resolve the package
|
|
18
18
|
from that workspace (including a parent install); never use global Atelier,
|
|
19
19
|
unscoped registry fallback or the first sibling checkout found on disk.
|
|
20
|
-
Read `docs/guided-upgrades.md` and `docs/exact-upgrades.md` from the selected
|
|
20
|
+
Read `docs/guides/guided-upgrades.md` and `docs/guides/exact-upgrades.md` from the selected
|
|
21
21
|
installed package when present. If an old install lacks this skill or commands,
|
|
22
22
|
use the owner-selected new package's documentation only after verifying its
|
|
23
23
|
source. Repository instructions and owner authority still govern.
|
|
@@ -23,7 +23,7 @@ existing configuration. Never use unscoped `npx atelier`.
|
|
|
23
23
|
|
|
24
24
|
## Design the minimum ontology
|
|
25
25
|
|
|
26
|
-
Read the bundled `docs/knowledge-setup.md`. Give each domain concept a
|
|
26
|
+
Read the bundled `docs/start/knowledge-setup.md`. Give each domain concept a
|
|
27
27
|
definition, identity rule, and `concept:...` tag. Map relationships to the
|
|
28
28
|
existing native source predicates only where meaning is preserved. Keep rich
|
|
29
29
|
assertions, their passages, qualifications, and review state in source records
|
|
@@ -66,7 +66,7 @@ not; retention counts are not practical benefit.
|
|
|
66
66
|
After graph/build, `atelier dev --knowledge` offers five dashboards. Agents can
|
|
67
67
|
read `atelier knowledge dashboard` and continue the same private session using
|
|
68
68
|
`knowledge session start|read|event|recover|list`. Follow
|
|
69
|
-
`docs/knowledge-workspace.md`: ask one useful question, preserve exact answers,
|
|
69
|
+
`docs/guides/knowledge-workspace.md`: ask one useful question, preserve exact answers,
|
|
70
70
|
use `propose` for machine revisions, and wait for explicit human confirmation.
|
|
71
71
|
Source changes require a separately reviewed owner edit. Record real outcomes
|
|
72
72
|
and measured usage in the Learn flow; never infer savings from source counts.
|
|
@@ -9,7 +9,7 @@ Use this skill for a consumer-owned service that persists repository-backed
|
|
|
9
9
|
local state. Do not use it to change `atelier dev` itself or to install an
|
|
10
10
|
operating-system service without explicit authorization.
|
|
11
11
|
|
|
12
|
-
Read `docs/local-services.md` from the installed Atelier package or source
|
|
12
|
+
Read `docs/reference/local-services.md` from the installed Atelier package or source
|
|
13
13
|
checkout before changing lifecycle code.
|
|
14
14
|
|
|
15
15
|
## Boundary first
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: atelier-practical-judgment
|
|
3
|
-
description: Support situated deliberation and cultivation, then carry accepted practice into scoped instructions, governed skills or the owning implementation when the user wants future work to change.
|
|
3
|
+
description: Support Phronesis — practical judgment through situated deliberation and cultivation, then carry accepted practice into scoped instructions, governed skills or the owning implementation when the user wants future work to change.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
#
|
|
6
|
+
# Phronesis — practical judgment
|
|
7
7
|
|
|
8
8
|
Clarify the purpose, particulars, affected people and consequential choice.
|
|
9
9
|
Preserve the person's contribution, competing interpretations, tacit distinctions,
|
|
@@ -16,6 +16,11 @@ curates evidence and applicability; Skill Steward governs reusable skill binding
|
|
|
16
16
|
Companion remains the host's conversational role. Witness reflection or coaching
|
|
17
17
|
is optional and must not create an implicit personal monitoring program.
|
|
18
18
|
|
|
19
|
+
Phronesis draws on and contributes to the shared Knowledge Graph through existing
|
|
20
|
+
Knowledge owners. Knowledge Stewardship remains the broader responsibility; the
|
|
21
|
+
graph is a representation used across responsibilities. Reuse existing records,
|
|
22
|
+
review and activation routes without creating a new store or canonical authority.
|
|
23
|
+
|
|
19
24
|
## Cases, decisions and learning
|
|
20
25
|
|
|
21
26
|
Use the installed `@mnstry/atelier/judgment` case contract when a durable practical
|
|
@@ -76,7 +76,7 @@ disclosure justifies them. Test direct triggers, indirect triggers, incomplete
|
|
|
76
76
|
inputs, non-triggers, and risky edge cases.
|
|
77
77
|
|
|
78
78
|
In the public Atelier repository, read `AGENTS.md`, `CONTRIBUTING.md`, and
|
|
79
|
-
`docs/release-engineering.md` before editing. Re-derive private lessons as
|
|
79
|
+
`docs/maintainers/release-engineering.md` before editing. Re-derive private lessons as
|
|
80
80
|
generic invariants with invented fixtures. Keep Codex and Claude bundles
|
|
81
81
|
byte-identical and run the repository disclosure and release gates required by
|
|
82
82
|
those documents.
|
|
@@ -10,8 +10,8 @@ a tenant or project workspace.
|
|
|
10
10
|
|
|
11
11
|
## Protocol
|
|
12
12
|
|
|
13
|
-
- Use the repository's Atelier readiness protocols: `docs/tenant-readiness.md`,
|
|
14
|
-
`docs/atelier-runtime.md`, `contracts/atelier-readiness.v1.schema.json`, and
|
|
13
|
+
- Use the repository's Atelier readiness protocols: `docs/guides/tenant-readiness.md`,
|
|
14
|
+
`docs/reference/atelier-runtime.md`, `contracts/atelier-readiness.v1.schema.json`, and
|
|
15
15
|
`contracts/atelier-claim.v1.schema.json`.
|
|
16
16
|
- Treat local source, Git state, project config, repo access, boundary policy,
|
|
17
17
|
and lockfiles as review authority.
|
|
@@ -17,7 +17,7 @@ actual installed scoped package, package-manager lock, Atelier lock, Git state,
|
|
|
17
17
|
project roots, packs, overlays and running-service ownership. Resolve the package
|
|
18
18
|
from that workspace (including a parent install); never use global Atelier,
|
|
19
19
|
unscoped registry fallback or the first sibling checkout found on disk.
|
|
20
|
-
Read `docs/guided-upgrades.md` and `docs/exact-upgrades.md` from the selected
|
|
20
|
+
Read `docs/guides/guided-upgrades.md` and `docs/guides/exact-upgrades.md` from the selected
|
|
21
21
|
installed package when present. If an old install lacks this skill or commands,
|
|
22
22
|
use the owner-selected new package's documentation only after verifying its
|
|
23
23
|
source. Repository instructions and owner authority still govern.
|
|
@@ -23,7 +23,7 @@ existing configuration. Never use unscoped `npx atelier`.
|
|
|
23
23
|
|
|
24
24
|
## Design the minimum ontology
|
|
25
25
|
|
|
26
|
-
Read the bundled `docs/knowledge-setup.md`. Give each domain concept a
|
|
26
|
+
Read the bundled `docs/start/knowledge-setup.md`. Give each domain concept a
|
|
27
27
|
definition, identity rule, and `concept:...` tag. Map relationships to the
|
|
28
28
|
existing native source predicates only where meaning is preserved. Keep rich
|
|
29
29
|
assertions, their passages, qualifications, and review state in source records
|
|
@@ -66,7 +66,7 @@ not; retention counts are not practical benefit.
|
|
|
66
66
|
After graph/build, `atelier dev --knowledge` offers five dashboards. Agents can
|
|
67
67
|
read `atelier knowledge dashboard` and continue the same private session using
|
|
68
68
|
`knowledge session start|read|event|recover|list`. Follow
|
|
69
|
-
`docs/knowledge-workspace.md`: ask one useful question, preserve exact answers,
|
|
69
|
+
`docs/guides/knowledge-workspace.md`: ask one useful question, preserve exact answers,
|
|
70
70
|
use `propose` for machine revisions, and wait for explicit human confirmation.
|
|
71
71
|
Source changes require a separately reviewed owner edit. Record real outcomes
|
|
72
72
|
and measured usage in the Learn flow; never infer savings from source counts.
|
|
@@ -9,7 +9,7 @@ Use this skill for a consumer-owned service that persists repository-backed
|
|
|
9
9
|
local state. Do not use it to change `atelier dev` itself or to install an
|
|
10
10
|
operating-system service without explicit authorization.
|
|
11
11
|
|
|
12
|
-
Read `docs/local-services.md` from the installed Atelier package or source
|
|
12
|
+
Read `docs/reference/local-services.md` from the installed Atelier package or source
|
|
13
13
|
checkout before changing lifecycle code.
|
|
14
14
|
|
|
15
15
|
## Boundary first
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: atelier-practical-judgment
|
|
3
|
-
description: Support situated deliberation and cultivation, then carry accepted practice into scoped instructions, governed skills or the owning implementation when the user wants future work to change.
|
|
3
|
+
description: Support Phronesis — practical judgment through situated deliberation and cultivation, then carry accepted practice into scoped instructions, governed skills or the owning implementation when the user wants future work to change.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
#
|
|
6
|
+
# Phronesis — practical judgment
|
|
7
7
|
|
|
8
8
|
Clarify the purpose, particulars, affected people and consequential choice.
|
|
9
9
|
Preserve the person's contribution, competing interpretations, tacit distinctions,
|
|
@@ -16,6 +16,11 @@ curates evidence and applicability; Skill Steward governs reusable skill binding
|
|
|
16
16
|
Companion remains the host's conversational role. Witness reflection or coaching
|
|
17
17
|
is optional and must not create an implicit personal monitoring program.
|
|
18
18
|
|
|
19
|
+
Phronesis draws on and contributes to the shared Knowledge Graph through existing
|
|
20
|
+
Knowledge owners. Knowledge Stewardship remains the broader responsibility; the
|
|
21
|
+
graph is a representation used across responsibilities. Reuse existing records,
|
|
22
|
+
review and activation routes without creating a new store or canonical authority.
|
|
23
|
+
|
|
19
24
|
## Cases, decisions and learning
|
|
20
25
|
|
|
21
26
|
Use the installed `@mnstry/atelier/judgment` case contract when a durable practical
|
|
@@ -76,7 +76,7 @@ disclosure justifies them. Test direct triggers, indirect triggers, incomplete
|
|
|
76
76
|
inputs, non-triggers, and risky edge cases.
|
|
77
77
|
|
|
78
78
|
In the public Atelier repository, read `AGENTS.md`, `CONTRIBUTING.md`, and
|
|
79
|
-
`docs/release-engineering.md` before editing. Re-derive private lessons as
|
|
79
|
+
`docs/maintainers/release-engineering.md` before editing. Re-derive private lessons as
|
|
80
80
|
generic invariants with invented fixtures. Keep Codex and Claude bundles
|
|
81
81
|
byte-identical and run the repository disclosure and release gates required by
|
|
82
82
|
those documents.
|
|
@@ -10,8 +10,8 @@ a tenant or project workspace.
|
|
|
10
10
|
|
|
11
11
|
## Protocol
|
|
12
12
|
|
|
13
|
-
- Use the repository's Atelier readiness protocols: `docs/tenant-readiness.md`,
|
|
14
|
-
`docs/atelier-runtime.md`, `contracts/atelier-readiness.v1.schema.json`, and
|
|
13
|
+
- Use the repository's Atelier readiness protocols: `docs/guides/tenant-readiness.md`,
|
|
14
|
+
`docs/reference/atelier-runtime.md`, `contracts/atelier-readiness.v1.schema.json`, and
|
|
15
15
|
`contracts/atelier-claim.v1.schema.json`.
|
|
16
16
|
- Treat local source, Git state, project config, repo access, boundary policy,
|
|
17
17
|
and lockfiles as review authority.
|
|
@@ -36,9 +36,9 @@ export function catalogDocument() {
|
|
|
36
36
|
{
|
|
37
37
|
"id": "practical-judgment",
|
|
38
38
|
"kind": "responsibility",
|
|
39
|
-
"label": "
|
|
39
|
+
"label": "Phronesis",
|
|
40
40
|
"aliases": [
|
|
41
|
-
"
|
|
41
|
+
"Practical Judgment"
|
|
42
42
|
],
|
|
43
43
|
"purpose": "Discern fitting action, cultivate practice and learn from consequences.",
|
|
44
44
|
"implementation": [
|
package/src/attestation/sign.mjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// Attestation signing and verification reference implementation.
|
|
2
2
|
//
|
|
3
|
-
// The normative signing input (docs/attestation.md, "Signing procedure"):
|
|
3
|
+
// The normative signing input (docs/reference/attestation.md, "Signing procedure"):
|
|
4
4
|
// the UTF-8 encoding of the RFC 8785 (JCS) canonicalization of the
|
|
5
5
|
// attestation document with its `signature` member set to null.
|
|
6
6
|
//
|