@mnstry/atelier 0.2.0-alpha.8 → 0.2.0-alpha.9
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 +11 -0
- package/README.md +3 -3
- package/docs/install.md +3 -3
- package/docs/upgrade.md +10 -2
- package/package.json +1 -1
- package/src/commands/obsidian.mjs +1 -1
- package/src/runtime/obsidian/lifecycle.mjs +1 -1
- package/src/runtime/obsidian/service-entry-path.mjs +9 -0
- package/src/runtime/obsidian/service-main.mjs +4 -2
- package/templates/external-project-workspace/pack-lifecycle.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,16 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.2.0-alpha.9
|
|
4
|
+
|
|
5
|
+
### Fixed
|
|
6
|
+
|
|
7
|
+
- The maintenance service process could not start from the shipped package:
|
|
8
|
+
its entry awaits the command contributions at top level, and the selection
|
|
9
|
+
contribution shipped in 0.2.0-alpha.8 reaches the entry again through
|
|
10
|
+
`opening.mjs` → `lifecycle.mjs`, so the process deadlocked on its own await
|
|
11
|
+
and exited 13 before it listened. `SERVICE_ENTRY_PATH` now lives in its own
|
|
12
|
+
module that nothing else depends on, and a test spawns the real entry.
|
|
13
|
+
|
|
3
14
|
## 0.2.0-alpha.8
|
|
4
15
|
|
|
5
16
|
### Added
|
package/README.md
CHANGED
|
@@ -54,7 +54,7 @@ governed projections
|
|
|
54
54
|
You can see the complete loop in a disposable sample workspace:
|
|
55
55
|
|
|
56
56
|
```bash
|
|
57
|
-
npm install --save-dev @mnstry/atelier@0.2.0-alpha.
|
|
57
|
+
npm install --save-dev @mnstry/atelier@0.2.0-alpha.9
|
|
58
58
|
npx mnstry-atelier init --fixture=sample-workspace --target ./sample
|
|
59
59
|
npx mnstry-atelier graph --project ./sample/atelier.project.json
|
|
60
60
|
npx mnstry-atelier project --project ./sample/atelier.project.json
|
|
@@ -378,7 +378,7 @@ Node.js `>=22.18.0 <23` is required. Pin the prerelease while the package
|
|
|
378
378
|
remains in alpha:
|
|
379
379
|
|
|
380
380
|
```bash
|
|
381
|
-
npm install --save-dev @mnstry/atelier@0.2.0-alpha.
|
|
381
|
+
npm install --save-dev @mnstry/atelier@0.2.0-alpha.9
|
|
382
382
|
```
|
|
383
383
|
|
|
384
384
|
Then choose the path that matches what you are building:
|
|
@@ -397,7 +397,7 @@ Then choose the path that matches what you are building:
|
|
|
397
397
|
|
|
398
398
|
## Status and command reference
|
|
399
399
|
|
|
400
|
-
Current package: `@mnstry/atelier@0.2.0-alpha.
|
|
400
|
+
Current package: `@mnstry/atelier@0.2.0-alpha.9`.
|
|
401
401
|
|
|
402
402
|
The alpha package is usable and contract-tested, but its library API may still
|
|
403
403
|
change before a stable release. Pin the exact version in production toolchains.
|
package/docs/install.md
CHANGED
|
@@ -34,19 +34,19 @@ The registry is the distribution channel of record, as `docs/continuity.md`
|
|
|
34
34
|
commits:
|
|
35
35
|
|
|
36
36
|
```bash
|
|
37
|
-
npm install --save-dev @mnstry/atelier@0.2.0-alpha.
|
|
37
|
+
npm install --save-dev @mnstry/atelier@0.2.0-alpha.9
|
|
38
38
|
```
|
|
39
39
|
|
|
40
40
|
Installing from the matching Git tag resolves to the same reviewed commit:
|
|
41
41
|
|
|
42
42
|
```bash
|
|
43
|
-
npm install --save-dev "git+https://github.com/MNSTRY/atelier.git#v0.2.0-alpha.
|
|
43
|
+
npm install --save-dev "git+https://github.com/MNSTRY/atelier.git#v0.2.0-alpha.9"
|
|
44
44
|
```
|
|
45
45
|
|
|
46
46
|
Or over SSH:
|
|
47
47
|
|
|
48
48
|
```bash
|
|
49
|
-
npm install --save-dev "git+ssh://git@github.com/MNSTRY/atelier.git#v0.2.0-alpha.
|
|
49
|
+
npm install --save-dev "git+ssh://git@github.com/MNSTRY/atelier.git#v0.2.0-alpha.9"
|
|
50
50
|
```
|
|
51
51
|
|
|
52
52
|
Keep the `@mnstry/` scope — see the command-form note above for why the
|
package/docs/upgrade.md
CHANGED
|
@@ -9,6 +9,14 @@ workspace between Atelier package releases. The flow is local-only: it does not
|
|
|
9
9
|
provision repositories, contact a Git host, mutate the MNSTRY runtime, or write
|
|
10
10
|
through a browser view.
|
|
11
11
|
|
|
12
|
+
## Upgrading to 0.2.0-alpha.9
|
|
13
|
+
|
|
14
|
+
This release fixes a defect in 0.2.0-alpha.8: the Obsidian maintenance service
|
|
15
|
+
could not start from the published package (`atelier obsidian service start`
|
|
16
|
+
reported `start-failed` with `service-exited-13`). Upgrade from 0.2.0-alpha.8
|
|
17
|
+
directly; nothing else changes and no project or machine setting needs to be
|
|
18
|
+
touched. 0.2.0-alpha.8 is deprecated.
|
|
19
|
+
|
|
12
20
|
## Upgrading to 0.2.0-alpha.8
|
|
13
21
|
|
|
14
22
|
This release adds typed advisory decision contracts and an experimental,
|
|
@@ -158,7 +166,7 @@ For registry installs, pin the exact version and record the resolved version
|
|
|
158
166
|
in the lockfile:
|
|
159
167
|
|
|
160
168
|
```bash
|
|
161
|
-
npm install --save-dev @mnstry/atelier@0.2.0-alpha.
|
|
169
|
+
npm install --save-dev @mnstry/atelier@0.2.0-alpha.9
|
|
162
170
|
npx mnstry-atelier lock write --project ./atelier.project.json
|
|
163
171
|
```
|
|
164
172
|
|
|
@@ -166,7 +174,7 @@ For Git installs, pin the release tag rather than a branch, so the lock file
|
|
|
166
174
|
records exactly what was reviewed:
|
|
167
175
|
|
|
168
176
|
```bash
|
|
169
|
-
npm install --save-dev "git+https://github.com/MNSTRY/atelier.git#v0.2.0-alpha.
|
|
177
|
+
npm install --save-dev "git+https://github.com/MNSTRY/atelier.git#v0.2.0-alpha.9"
|
|
170
178
|
npx mnstry-atelier lock write --project ./atelier.project.json
|
|
171
179
|
```
|
|
172
180
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mnstry/atelier",
|
|
3
|
-
"version": "0.2.0-alpha.
|
|
3
|
+
"version": "0.2.0-alpha.9",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "Local toolkit that turns a Git repository into an ontology-governed knowledge graph, enforcement layer, and runtime for people, agents, and tools. No telemetry or required hosted account; optional host-bound vault adapters.",
|
|
6
6
|
"keywords": [
|
|
@@ -143,7 +143,7 @@ export async function runObsidianCommandForOracleTests(options = {}, rules = {})
|
|
|
143
143
|
const serviceSeam = async () => {
|
|
144
144
|
if (seams !== null) { if (typeof seams.service?.entryPath !== 'string') refuse('seams-required', 'the service seam names the entry this command may start'); return seams.service }
|
|
145
145
|
if (flags.adapter !== PRODUCTION_ADAPTER) refuse('app-adapter-not-selected', 'no editor adapter was selected; a service that reaches the installed app is never a default')
|
|
146
|
-
const { SERVICE_ENTRY_PATH } = await import('../runtime/obsidian/service-
|
|
146
|
+
const { SERVICE_ENTRY_PATH } = await import('../runtime/obsidian/service-entry-path.mjs')
|
|
147
147
|
return { entryPath: SERVICE_ENTRY_PATH, entryArgs: [`--adapter=${PRODUCTION_ADAPTER}`] }
|
|
148
148
|
}
|
|
149
149
|
const appSeams = async () => {
|
|
@@ -8,7 +8,7 @@ import { ensureWorkspaceIdentity } from './machine-settings.mjs'
|
|
|
8
8
|
import { acquirePrivateGenerationLock, createAbandonmentProof, isProcessAlive } from './private-lock.mjs'
|
|
9
9
|
import { processRunsRecordedExecutable } from './process-identity.mjs'
|
|
10
10
|
import { DEFAULT_PROBE_TIMEOUT_MS, LOOPBACK_HOSTS, probeHealth, requestLoopback } from './service-client.mjs'
|
|
11
|
-
import { SERVICE_ENTRY_PATH } from './service-
|
|
11
|
+
import { SERVICE_ENTRY_PATH } from './service-entry-path.mjs'
|
|
12
12
|
import {
|
|
13
13
|
CONSENT_COVERAGES, SERVICE_SETTINGS_SCHEMA, executableIdentity, openServiceLog, publicRecord, readServiceRecord, readServiceSettings, removeServiceRecord,
|
|
14
14
|
serviceNameFor, servicePaths, writeServiceSettings,
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { fileURLToPath } from 'node:url'
|
|
2
|
+
|
|
3
|
+
// The absolute path of the maintenance service entry, kept in its own module
|
|
4
|
+
// so that nothing which needs the path has to import the entry itself. The
|
|
5
|
+
// entry awaits at top level (it loads the command contributions before it
|
|
6
|
+
// serves), and a module that both reaches it through a static import and is
|
|
7
|
+
// itself reached by that load would deadlock the process: the contribution
|
|
8
|
+
// graph waits for the entry, the entry waits for the contribution graph.
|
|
9
|
+
export const SERVICE_ENTRY_PATH = fileURLToPath(new URL('./service-main.mjs', import.meta.url))
|
|
@@ -33,7 +33,9 @@ const ADAPTERS = Object.freeze({
|
|
|
33
33
|
},
|
|
34
34
|
})
|
|
35
35
|
|
|
36
|
-
|
|
36
|
+
import { SERVICE_ENTRY_PATH } from './service-entry-path.mjs'
|
|
37
|
+
|
|
38
|
+
export { SERVICE_ENTRY_PATH }
|
|
37
39
|
export const EXIT_REFUSED = 2
|
|
38
40
|
|
|
39
41
|
const log = (entry) => { try { process.stdout.write(`${JSON.stringify(entry)}\n`) } catch { /* a closed log never ends the service */ } }
|
|
@@ -68,7 +70,7 @@ export function serviceOptionsFromArgv(argv, { env = process.env } = {}) {
|
|
|
68
70
|
}
|
|
69
71
|
}
|
|
70
72
|
|
|
71
|
-
const invokedDirectly = (() => { try { return Boolean(process.argv[1]) && fs.realpathSync(process.argv[1]) === fs.realpathSync(
|
|
73
|
+
const invokedDirectly = (() => { try { return Boolean(process.argv[1]) && fs.realpathSync(process.argv[1]) === fs.realpathSync(fileURLToPath(import.meta.url)) } catch { return false } })()
|
|
72
74
|
|
|
73
75
|
if (invokedDirectly) {
|
|
74
76
|
let options = null
|