blun-king-cli 9.1.67 → 9.1.68
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/LIESMICH.txt
CHANGED
|
@@ -9,7 +9,7 @@ Installation
|
|
|
9
9
|
------------
|
|
10
10
|
Die geprüfte Version exakt global installieren:
|
|
11
11
|
|
|
12
|
-
npm install -g blun-king-cli@9.1.
|
|
12
|
+
npm install -g blun-king-cli@9.1.68
|
|
13
13
|
|
|
14
14
|
Start
|
|
15
15
|
-----
|
|
@@ -98,6 +98,22 @@ Chancen mit Gegenbeleg, Abbruchkriterium und einem direkt nutzbaren
|
|
|
98
98
|
/idea-Auftrag. Ohne Nische fragt er zuerst genau einmal nach. Schwache Belege
|
|
99
99
|
ergeben weniger Treffer oder no_action, niemals aufgefüllte Vorschläge.
|
|
100
100
|
|
|
101
|
+
Venture Flywheel: geprüfte Phase-0-Verträge
|
|
102
|
+
--------------------------------------------
|
|
103
|
+
Der Standardskill venture-flywheel enthält reine Verträge für
|
|
104
|
+
Projektidentität, Repository-Trust, Capability-Entscheidungen, versionierte
|
|
105
|
+
Laufzustände und hash-verkettete Prüfereignisse. Phase 0 führt selbst keine
|
|
106
|
+
Befehle, Netzwerkzugriffe oder Deployments aus.
|
|
107
|
+
|
|
108
|
+
Ein vollständiges CommonJS-Beispiel für alle sieben öffentlichen Funktionen
|
|
109
|
+
liegt hier:
|
|
110
|
+
|
|
111
|
+
standard-skills/venture-flywheel/references/BEISPIELE-phase0.md
|
|
112
|
+
|
|
113
|
+
Es zeigt unter anderem, warum sandbox.execute im Repository abgewiesen, in
|
|
114
|
+
einem isolierten Worktree aber erlaubt wird und wie eine Ereigniskette geprüft
|
|
115
|
+
wird.
|
|
116
|
+
|
|
101
117
|
Im automatisch angebundenen Telegram-Kanal werden ausschließlich /loop, /goal,
|
|
102
118
|
/idea, /chancenradar, /curiosity, /scout und /befehle als Befehle ausgeführt. Ist der Agent beschäftigt, bleiben
|
|
103
119
|
sie in der Warteschlange. Andere Slash-Eingaben werden aus Sicherheitsgründen
|
package/README.md
CHANGED
|
@@ -9,7 +9,7 @@ Voraussetzung ist Node.js 24.15 oder neuer. Die geprüfte Version wird exakt
|
|
|
9
9
|
installiert:
|
|
10
10
|
|
|
11
11
|
```powershell
|
|
12
|
-
npm install -g blun-king-cli@9.1.
|
|
12
|
+
npm install -g blun-king-cli@9.1.68
|
|
13
13
|
```
|
|
14
14
|
|
|
15
15
|
## Reproduzierbares Staging und Packen
|
|
@@ -122,6 +122,19 @@ Der sichtbare Verlauf behält standardmäßig die vollständige laufende und
|
|
|
122
122
|
wiederhergestellte Sitzung. Das Mausrad kann den Verlauf direkt beim ersten Zug
|
|
123
123
|
öffnen; Editor und Fußzeile bleiben dabei fest sichtbar.
|
|
124
124
|
|
|
125
|
+
## Venture Flywheel: geprüfte Phase-0-Verträge
|
|
126
|
+
|
|
127
|
+
Der mitgelieferte Standardskill `venture-flywheel` stellt reine, deterministische
|
|
128
|
+
Verträge für Projektidentität, Repository-Trust, Capability-Entscheidungen,
|
|
129
|
+
versionierte Laufzustände und hash-verkettete Prüfereignisse bereit. Phase 0
|
|
130
|
+
führt selbst keine Befehle, Netzwerkzugriffe oder Deployments aus.
|
|
131
|
+
|
|
132
|
+
Ein vollständiges CommonJS-Beispiel für alle sieben öffentlichen Funktionen
|
|
133
|
+
liegt unter
|
|
134
|
+
`standard-skills/venture-flywheel/references/BEISPIELE-phase0.md`. Es zeigt
|
|
135
|
+
unter anderem, warum `sandbox.execute` im Repository abgewiesen, in einem
|
|
136
|
+
isolierten Worktree aber erlaubt wird und wie eine Ereigniskette geprüft wird.
|
|
137
|
+
|
|
125
138
|
Im automatisch angebundenen Telegram-Kanal werden ausschließlich `/loop`,
|
|
126
139
|
`/goal`, `/idea`, `/chancenradar`, `/curiosity`, `/scout` und `/befehle` als Befehle ausgeführt. Ist der Agent
|
|
127
140
|
beschäftigt, bleiben sie in der Warteschlange. Andere Slash-Eingaben werden aus
|
package/blun.mjs
CHANGED
|
@@ -417230,7 +417230,6 @@ var TelegramChannelController = class {
|
|
|
417230
417230
|
stopped = false;
|
|
417231
417231
|
activeOwner = false;
|
|
417232
417232
|
ownershipLost = false;
|
|
417233
|
-
handoffWarningShown = false;
|
|
417234
417233
|
ownershipClaimedAt = 0;
|
|
417235
417234
|
ownedBridge;
|
|
417236
417235
|
stopPromise;
|
|
@@ -417367,9 +417366,9 @@ var TelegramChannelController = class {
|
|
|
417367
417366
|
this.activateOwnedChannel();
|
|
417368
417367
|
return;
|
|
417369
417368
|
}
|
|
417370
|
-
if (
|
|
417371
|
-
this.
|
|
417372
|
-
|
|
417369
|
+
if (Date.now() - this.ownershipClaimedAt >= this.ownershipHandoffWarningMs) {
|
|
417370
|
+
this.activateOwnedChannel();
|
|
417371
|
+
return;
|
|
417373
417372
|
}
|
|
417374
417373
|
this.handoffTimer = setTimeout(() => this.tryActivateOwnership(), this.ownershipPollMs);
|
|
417375
417374
|
this.handoffTimer.unref();
|
|
@@ -514664,6 +514663,7 @@ var BlunTUI = class {
|
|
|
514664
514663
|
});
|
|
514665
514664
|
this.syncChannelQueueDeadline();
|
|
514666
514665
|
this.channelQueueDeadline.requestDeliveryNow();
|
|
514666
|
+
this.scheduleQueueDrain();
|
|
514667
514667
|
this.track("input_queue");
|
|
514668
514668
|
this.updateQueueDisplay();
|
|
514669
514669
|
this.state.ui.requestRender();
|
package/package.json
CHANGED
|
@@ -26,3 +26,7 @@ Read [references/CAPABILITY-MAP.md](references/CAPABILITY-MAP.md) for the build
|
|
|
26
26
|
order and [references/SPEC-phase0-state-events.md](references/SPEC-phase0-state-events.md)
|
|
27
27
|
plus [references/SPEC-phase0-identity-trust.md](references/SPEC-phase0-identity-trust.md)
|
|
28
28
|
for the currently implemented contracts.
|
|
29
|
+
|
|
30
|
+
The German usage guide in
|
|
31
|
+
[references/BEISPIELE-phase0.md](references/BEISPIELE-phase0.md) contains one
|
|
32
|
+
complete example covering every public Phase 0 function.
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
# Venture Flywheel: Beispiele für Phase 0
|
|
2
|
+
|
|
3
|
+
Phase 0 stellt ausschließlich reine Verträge bereit. Sie führt keine
|
|
4
|
+
Repository-Befehle aus, verwendet kein Netzwerk und führt weder Deployments
|
|
5
|
+
noch Veröffentlichungen, Käufe oder ausgehende Nachrichten durch.
|
|
6
|
+
|
|
7
|
+
## Öffentliche Funktionen
|
|
8
|
+
|
|
9
|
+
- `deriveProjectIdentity` leitet aus Repository-Fakten und einem
|
|
10
|
+
authentifizierten Konto eine deterministische Projektidentität ab.
|
|
11
|
+
- `createRepositoryTrust` erzeugt den anfänglichen Datensatz mit `UNTRUSTED`.
|
|
12
|
+
- `transitionRepositoryTrust` wendet einen ausdrücklichen, versionierten
|
|
13
|
+
Trust-Wechsel an.
|
|
14
|
+
- `evaluateCapability` liefert `allow`, `deny` oder `approval_required` und
|
|
15
|
+
entscheidet bei Unklarheit ablehnend.
|
|
16
|
+
- `transitionRun` führt genau einen zulässigen, optimistisch versionierten
|
|
17
|
+
Zustandswechsel aus.
|
|
18
|
+
- `createExecutionEvent` erzeugt ein deterministisches, hash-verkettetes
|
|
19
|
+
Prüfereignis und weist geheimnisverdächtige Felder in Nutzdaten ab.
|
|
20
|
+
- `verifyEventChain` prüft Reihenfolge, Verknüpfungen und Hashes einer
|
|
21
|
+
vollständigen Ereigniskette.
|
|
22
|
+
|
|
23
|
+
## Vollständiges Beispiel
|
|
24
|
+
|
|
25
|
+
Das folgende CommonJS-Beispiel leitet eine Projektidentität ab, erzeugt lokalen
|
|
26
|
+
Trust, vergleicht die Ausführung im Repository mit der Ausführung in einem
|
|
27
|
+
isolierten Worktree, setzt einen Lauf fort, erzeugt zwei verkettete Ereignisse
|
|
28
|
+
und prüft anschließend die Kette.
|
|
29
|
+
|
|
30
|
+
```js
|
|
31
|
+
const { deriveProjectIdentity } = require('./identity/project-identity.cjs');
|
|
32
|
+
const {
|
|
33
|
+
CAPABILITIES,
|
|
34
|
+
createRepositoryTrust,
|
|
35
|
+
transitionRepositoryTrust,
|
|
36
|
+
} = require('./policy/repository-trust.cjs');
|
|
37
|
+
const { evaluateCapability } = require('./policy/capability-engine.cjs');
|
|
38
|
+
const { transitionRun } = require('./state/task-state-machine.cjs');
|
|
39
|
+
const {
|
|
40
|
+
createExecutionEvent,
|
|
41
|
+
verifyEventChain,
|
|
42
|
+
} = require('./state/execution-event.cjs');
|
|
43
|
+
|
|
44
|
+
const identity = deriveProjectIdentity({
|
|
45
|
+
repository_host: 'github.com',
|
|
46
|
+
repository_owner: 'example',
|
|
47
|
+
repository_name: 'venture',
|
|
48
|
+
canonical_remote_url: 'git@github.com:example/venture.git',
|
|
49
|
+
local_repository_root: 'C:/Work/venture',
|
|
50
|
+
initial_repository_fingerprint: `sha256:${'a'.repeat(64)}`,
|
|
51
|
+
}, { account_id: 'account-123' });
|
|
52
|
+
|
|
53
|
+
const initialTrust = createRepositoryTrust(identity);
|
|
54
|
+
const localCapabilities = [
|
|
55
|
+
'network.none',
|
|
56
|
+
'repo.metadata.read',
|
|
57
|
+
'repo.read',
|
|
58
|
+
'sandbox.execute',
|
|
59
|
+
'workspace.write',
|
|
60
|
+
'worktree.create',
|
|
61
|
+
];
|
|
62
|
+
const granted = new Set(localCapabilities);
|
|
63
|
+
const localTrust = transitionRepositoryTrust(initialTrust, {
|
|
64
|
+
event_id: 'evt-trust-local',
|
|
65
|
+
expected_version: initialTrust.version,
|
|
66
|
+
from_trust_level: initialTrust.trust_level,
|
|
67
|
+
to_trust_level: 'TRUSTED_LOCAL',
|
|
68
|
+
granted_capabilities: [...granted].sort(),
|
|
69
|
+
denied_capabilities: CAPABILITIES.filter(
|
|
70
|
+
(capability) => !granted.has(capability),
|
|
71
|
+
),
|
|
72
|
+
});
|
|
73
|
+
|
|
74
|
+
const deniedInRepository = evaluateCapability({
|
|
75
|
+
project_identity: identity,
|
|
76
|
+
repository_trust: localTrust,
|
|
77
|
+
capability: 'sandbox.execute',
|
|
78
|
+
execution_scope: 'repository',
|
|
79
|
+
});
|
|
80
|
+
const allowedInWorktree = evaluateCapability({
|
|
81
|
+
project_identity: identity,
|
|
82
|
+
repository_trust: localTrust,
|
|
83
|
+
capability: 'sandbox.execute',
|
|
84
|
+
execution_scope: 'isolated_worktree',
|
|
85
|
+
});
|
|
86
|
+
|
|
87
|
+
let run = { run_id: 'run-001', state: 'discovered', version: 0 };
|
|
88
|
+
run = transitionRun(run, {
|
|
89
|
+
event_id: 'evt-profiled',
|
|
90
|
+
expected_version: 0,
|
|
91
|
+
from_state: 'discovered',
|
|
92
|
+
to_state: 'profiled',
|
|
93
|
+
});
|
|
94
|
+
|
|
95
|
+
const firstEvent = createExecutionEvent({
|
|
96
|
+
event_id: 'evt-profiled',
|
|
97
|
+
run_id: run.run_id,
|
|
98
|
+
project_id: identity.project_id,
|
|
99
|
+
actor: { type: 'agent', id: 'agent-1', session_id: 'session-1' },
|
|
100
|
+
event_type: 'run.profiled',
|
|
101
|
+
occurred_at: '2026-08-24T10:00:00.000Z',
|
|
102
|
+
payload: {
|
|
103
|
+
from_state: 'discovered',
|
|
104
|
+
to_state: 'profiled',
|
|
105
|
+
version: run.version,
|
|
106
|
+
},
|
|
107
|
+
});
|
|
108
|
+
const secondEvent = createExecutionEvent({
|
|
109
|
+
event_id: 'evt-policy',
|
|
110
|
+
run_id: run.run_id,
|
|
111
|
+
project_id: identity.project_id,
|
|
112
|
+
actor: { type: 'agent', id: 'agent-1', session_id: 'session-1' },
|
|
113
|
+
event_type: 'policy.checked',
|
|
114
|
+
occurred_at: '2026-08-24T10:01:00.000Z',
|
|
115
|
+
payload: { decision: allowedInWorktree.decision },
|
|
116
|
+
previous_event_hash: firstEvent.event_hash,
|
|
117
|
+
});
|
|
118
|
+
|
|
119
|
+
console.log(deniedInRepository);
|
|
120
|
+
console.log(allowedInWorktree);
|
|
121
|
+
console.log(verifyEventChain([firstEvent, secondEvent]));
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
Erwartete Entscheidungen: Die Ausführung im Repository wird mit
|
|
125
|
+
`isolated_worktree_required` abgewiesen, die Ausführung im isolierten Worktree
|
|
126
|
+
wird erlaubt und die Kettenprüfung liefert `{ ok: true }`.
|
|
127
|
+
|
|
128
|
+
## Wichtige Schutzregeln
|
|
129
|
+
|
|
130
|
+
- Ein Repository beginnt mit `UNTRUSTED`; Trust-Hochstufungen müssen
|
|
131
|
+
nacheinander erfolgen.
|
|
132
|
+
- Jeder Trust- und Laufwechsel muss die aktuelle `expected_version` verwenden.
|
|
133
|
+
- `workspace.write` und `sandbox.execute` erfordern
|
|
134
|
+
`execution_scope: 'isolated_worktree'`.
|
|
135
|
+
- Externe oder irreversible Fähigkeiten liefern niemals `allow`, sondern
|
|
136
|
+
höchstens `approval_required`.
|
|
137
|
+
- `completed` erfordert `final_evidence_id`, `rolled_back` erfordert
|
|
138
|
+
`rollback_evidence_id` innerhalb von `evidence`.
|
|
139
|
+
- Ereignisnutzdaten mit Feldern wie `token`, `password`, `secret`, `api_key`
|
|
140
|
+
oder `access_token` werden vor dem Hashen abgewiesen.
|
|
141
|
+
- `no_action` ist ein gültiges Endergebnis.
|
|
142
|
+
|
|
143
|
+
## Prüfung
|
|
144
|
+
|
|
145
|
+
Führe `node --test test/venture-flywheel-state.test.js`,
|
|
146
|
+
`node --test test/venture-flywheel-trust.test.js` und `npm test` aus.
|