@hraness/message-like-me 0.8.6 → 0.8.8
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 +21 -0
- package/README.md +41 -33
- package/SECURITY.md +6 -6
- package/dist/agentic-messaging-v1.d.ts +44 -25
- package/dist/agentic-messaging-v1.js +81 -67
- package/dist/cli.js +91 -83
- package/docs/local-message-bundle-v1.md +11 -10
- package/docs/local-message-bundle-v2.md +10 -9
- package/docs/methodology.md +1 -1
- package/docs/publishing.md +57 -25
- package/package.json +2 -1
- package/skills/message-like-me/SKILL.md +6 -6
- package/skills/message-like-me/references/privacy.md +2 -2
package/docs/publishing.md
CHANGED
|
@@ -14,6 +14,12 @@ the leased ref move only while the matching App-sourced success is current.
|
|
|
14
14
|
No personal access token, deploy key, Vercel token, or repository-administration
|
|
15
15
|
permission belongs in either workflow.
|
|
16
16
|
|
|
17
|
+
Routine production promotion needs no human confirmation. The current-main
|
|
18
|
+
source, public artifacts, complete workflow history, App authority, writer
|
|
19
|
+
denial, expected-old lease, and provider readback are machine gates. An agent
|
|
20
|
+
may perform the independent review and exact dispatch required for a changed
|
|
21
|
+
workflow-control epoch; that review precedes dispatch.
|
|
22
|
+
|
|
17
23
|
## Establish the production controls once
|
|
18
24
|
|
|
19
25
|
Apply these controls in order. Record the exact readbacks in the change review.
|
|
@@ -59,9 +65,12 @@ for this rollout and do not create a replacement Sites project.
|
|
|
59
65
|
GitHub's authenticated repository API and do not substitute a name at the
|
|
60
66
|
token-mint boundary.
|
|
61
67
|
5. Create environment `production-ref-writer-key`. Limit deployment branches
|
|
62
|
-
to selected branch `main` only.
|
|
63
|
-
|
|
64
|
-
|
|
68
|
+
to selected branch `main` only. Configure no required reviewers, no wait
|
|
69
|
+
timer, and no custom deployment-protection-rule App. Keep administrator
|
|
70
|
+
bypass disabled (`can_admins_bypass=false`). The checked workflow admits
|
|
71
|
+
only verified releases and revalidates the complete control range before
|
|
72
|
+
reading the key; environment admission does not wait for a person. Store the
|
|
73
|
+
private key only as
|
|
65
74
|
environment secret `MLM_RELEASE_APP_PRIVATE_KEY`; store checked variables
|
|
66
75
|
`MLM_RELEASE_APP_CLIENT_ID`, `MLM_RELEASE_APP_ID`,
|
|
67
76
|
`MLM_RELEASE_APP_INSTALLATION_ID`, and `MLM_RELEASE_APP_SLUG` in that
|
|
@@ -88,9 +97,10 @@ for this rollout and do not create a replacement Sites project.
|
|
|
88
97
|
8. Keep active no-bypass ruleset `Immutable version tags` scoped exactly to
|
|
89
98
|
`refs/tags/v*`, with only update and deletion restrictions. It allows a new
|
|
90
99
|
stable tag to be created but prevents an existing release tag from moving or
|
|
91
|
-
disappearing. Read back `current_user_can_bypass=never`
|
|
92
|
-
|
|
93
|
-
|
|
100
|
+
disappearing. Read back `current_user_can_bypass=never` during the
|
|
101
|
+
administrative controls census below.
|
|
102
|
+
9. Enable immutable releases for the repository. During that census, use
|
|
103
|
+
owner-admin access out of band to require the repository
|
|
94
104
|
immutable-releases endpoint to report `enabled=true`; record whether owner
|
|
95
105
|
policy also reports `enforced_by_owner`. The Actions token cannot perform
|
|
96
106
|
this administrative read. The workflow must still prove the resulting
|
|
@@ -118,9 +128,14 @@ for this rollout and do not create a replacement Sites project.
|
|
|
118
128
|
Never retag or reuse `v0.8.0`. The public repository and package must retain
|
|
119
129
|
automatic npm provenance for every automated release.
|
|
120
130
|
|
|
121
|
-
After setup, use owner-admin access out of band
|
|
122
|
-
production branch, environment,
|
|
123
|
-
|
|
131
|
+
After setup, use owner-admin access out of band for a complete administrative
|
|
132
|
+
controls census: read back the exact Vercel production branch, environment,
|
|
133
|
+
variables, secret names, complete App installation, immutable-release setting,
|
|
134
|
+
and all GitHub ref rulesets. Refresh this census when control configuration or
|
|
135
|
+
workflow authority changes, when drift is detected, and during interrupted
|
|
136
|
+
authority recovery. Keep the reviewed evidence with that change or incident;
|
|
137
|
+
do not replay the historical bootstrap mutations to refresh it. Ordinary
|
|
138
|
+
releases do not repeat the complete owner-admin census. Never give that administrative
|
|
124
139
|
credential or evidence collector to the release workflow. Its narrowed App
|
|
125
140
|
token proves only its own effective identity, repository, permission, and
|
|
126
141
|
expiry closure. The Message Like Me post-control record must prove all of these
|
|
@@ -142,9 +157,9 @@ assertions together:
|
|
|
142
157
|
`workflows` authority, and an exhaustive
|
|
143
158
|
`/installation/repositories` set of exactly
|
|
144
159
|
`{hraness/message-like-me}` with repository ID `1342143606`;
|
|
145
|
-
- `production-ref-writer-key` admits only `main`,
|
|
146
|
-
|
|
147
|
-
|
|
160
|
+
- `production-ref-writer-key` admits only `main`, has no required reviewers,
|
|
161
|
+
wait timer, or custom deployment-protection rules, disables administrator
|
|
162
|
+
bypass, and exposes only the expected key and checked variables;
|
|
148
163
|
- the Vercel project reads back
|
|
149
164
|
`link.productionBranch=website-production`, while its project root, build,
|
|
150
165
|
install, Git, domain, environment, and deployment settings remain identical
|
|
@@ -158,11 +173,27 @@ dependency, lockfile, or generated documentation.
|
|
|
158
173
|
|
|
159
174
|
Treat the production and canary ruleset IDs and their complete live readbacks as
|
|
160
175
|
an external release gate, not as inputs the promotion workflow may administer.
|
|
161
|
-
The workflow must not create, replace, patch, disable, or broaden a ruleset.
|
|
162
|
-
|
|
163
|
-
App-pinned status context, integration ID, enforcement state, and empty
|
|
164
|
-
sets
|
|
165
|
-
and
|
|
176
|
+
The workflow must not create, replace, patch, disable, or broaden a ruleset.
|
|
177
|
+
The administrative census establishes the existing IDs, targets, lifecycle
|
|
178
|
+
rules, App-pinned status context, integration ID, enforcement state, and empty
|
|
179
|
+
bypass sets. Every production attempt still validates the exact current
|
|
180
|
+
source and artifact, helper hashes and control epoch, effective App token
|
|
181
|
+
permissions and repository scope, live rules exposed to its scoped token,
|
|
182
|
+
App-sourced status, writer-denial proof, expected-old lease, and provider
|
|
183
|
+
outcome. These checks do not claim an administrator's complete controls view.
|
|
184
|
+
Observed drift blocks promotion until the controls are reviewed, repaired,
|
|
185
|
+
and admitted through a fresh administrative census.
|
|
186
|
+
|
|
187
|
+
For an existing environment that still requires a person, first merge this
|
|
188
|
+
admission policy after independent review and the required checks. Revalidate
|
|
189
|
+
the current workflow and helper hashes, the successful production and writer
|
|
190
|
+
canary evidence, exact ref rules, App scope, and provider state. Then remove
|
|
191
|
+
only the required-reviewer rule through the environment API, preserving its
|
|
192
|
+
main-only branch policy, disabled administrator bypass, key, and variables.
|
|
193
|
+
Read back the complete environment and the unchanged authority controls.
|
|
194
|
+
Existing machine gates remain required, including control-epoch admission and
|
|
195
|
+
interrupted-authority quarantine. An unrelated release failure is not a reason
|
|
196
|
+
to remove or bypass them.
|
|
166
197
|
|
|
167
198
|
### Review one workflow-control epoch
|
|
168
199
|
|
|
@@ -258,17 +289,18 @@ When an established protected ref predates reviewed workflow-control changes:
|
|
|
258
289
|
the workflow source for a canary review. Do not fetch an unbounded ref
|
|
259
290
|
namespace, hand-assemble a digest, use a different checkout, or reorder the
|
|
260
291
|
inventory.
|
|
261
|
-
3.
|
|
292
|
+
3. Before dispatching the reviewed control-epoch transition, compare the tag,
|
|
293
|
+
v2 domain, protected ref, old SHA, target SHA, workflow-source SHA, ordered
|
|
294
|
+
inventory, change list, and digest with both the independently reviewed
|
|
295
|
+
failed-run summary and the locally reconstructed receipt. Reject the
|
|
296
|
+
dispatch if any field or ordered inventory row differs. Dispatch one fresh
|
|
297
|
+
manual attempt 1 from exact current `main` with that exact
|
|
262
298
|
digest. Automatic `workflow_run` events, rerun attempts, already-exact refs,
|
|
263
299
|
and unchanged-workflow ranges must reject any digest. The gate recomputes the
|
|
264
300
|
complete inventory and digest before environment admission; any source, tag,
|
|
265
301
|
ref, target, ancestry, inventory, or digest drift fails closed.
|
|
266
|
-
4.
|
|
267
|
-
|
|
268
|
-
ordered inventory, change list, and digest with both the independently
|
|
269
|
-
reviewed failed-run summary and the locally reconstructed receipt. Reject the
|
|
270
|
-
environment admission if any field or ordered
|
|
271
|
-
inventory row differs. After approval, the hash-pinned helper
|
|
302
|
+
4. The workflow enters `production-ref-writer-key` after its read-only
|
|
303
|
+
admission jobs succeed, without a human approval. The hash-pinned helper
|
|
272
304
|
recomputes and revalidates the same transition before reading the key. The
|
|
273
305
|
normal split-authority sequence then applies unchanged: terminalize the status
|
|
274
306
|
to the exact App-authored `error`, then prove the writer is denied with one exact
|
|
@@ -674,7 +706,7 @@ or decreasing inventory digest fails closed. Because an administrator could
|
|
|
674
706
|
delete and recreate evidence between API reads, the owner freeze and
|
|
675
707
|
before/after admin readbacks remain part of admission.
|
|
676
708
|
|
|
677
|
-
After the main-only environment
|
|
709
|
+
After the main-only environment admission, the helper repeats the complete
|
|
678
710
|
snapshot before it may read the private key. The status-only App may then POST
|
|
679
711
|
only one distinct `error` for the exact failed target, prove that exact status
|
|
680
712
|
through the combined-status endpoint, and revoke the token through the same
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hraness/message-like-me",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.8",
|
|
4
4
|
"description": "A local-first CLI and Agent Skill for studying private messaging history and drafting messages that sound like you.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -85,6 +85,7 @@
|
|
|
85
85
|
"devDependencies": {
|
|
86
86
|
"@types/bun": "1.3.14",
|
|
87
87
|
"effect": "3.22.1",
|
|
88
|
+
"fast-check": "4.9.0",
|
|
88
89
|
"sigstore": "4.1.1",
|
|
89
90
|
"typescript": "6.0.3"
|
|
90
91
|
}
|
|
@@ -91,7 +91,7 @@ and message overlap or fail closed. Group DMs remain separate. Keep both
|
|
|
91
91
|
provenances and treat the resulting exact-message dedupe as a source fact, not
|
|
92
92
|
an identity inference.
|
|
93
93
|
|
|
94
|
-
When the user supplies a finished
|
|
94
|
+
When the user supplies a finished Ghostget/Beeper Message Like Me bundle, ingest
|
|
95
95
|
only its normalized absolute directory path:
|
|
96
96
|
|
|
97
97
|
```sh
|
|
@@ -100,13 +100,13 @@ messagelikeme sources list --json
|
|
|
100
100
|
```
|
|
101
101
|
|
|
102
102
|
Do not request or handle the Beeper credential, call Beeper directly, improvise
|
|
103
|
-
a provider parser, or open the bundle's NDJSON files.
|
|
103
|
+
a provider parser, or open the bundle's NDJSON files. Ghostget owns provider
|
|
104
104
|
capture; Message Like Me owns strict verification, normalization, and local
|
|
105
105
|
analysis. Use `sources show <source-id> --json` for redacted completeness and
|
|
106
106
|
health. Add `--private` only when the user's task requires provider account
|
|
107
107
|
metadata.
|
|
108
108
|
|
|
109
|
-
When the user supplies a finished
|
|
109
|
+
When the user supplies a finished Ghostget/Wacli native WhatsApp v2 bundle, use
|
|
110
110
|
the same strict importer:
|
|
111
111
|
|
|
112
112
|
```sh
|
|
@@ -115,8 +115,8 @@ messagelikeme ingest bundle --input <absolute-private-whatsapp-bundle> --json
|
|
|
115
115
|
|
|
116
116
|
Do not request or handle Wacli session state or WhatsApp linked-device
|
|
117
117
|
authentication, call Wacli, inspect its database, synchronize the account, or
|
|
118
|
-
open bundle records in agent context.
|
|
119
|
-
The
|
|
118
|
+
open bundle records in agent context. Ghostget owns those provider operations.
|
|
119
|
+
The Ghostget v0.17.1/Wacli v0.15.0 producer omits every reaction-shaped row and
|
|
120
120
|
reports `reaction-state-unproven` when it encounters one because current active
|
|
121
121
|
or removed state is not durable. Treat that warning, and an empty reaction
|
|
122
122
|
artifact from this producer, as unobservable reaction behavior. Do not infer
|
|
@@ -185,7 +185,7 @@ parameters changes the operational meaning of turns, sessions, and latency.
|
|
|
185
185
|
|
|
186
186
|
Study packets, Ensoul source packets, evaluation packets, and explicit private
|
|
187
187
|
handoffs are the only CLI exports that contain message bodies. A handoff is for
|
|
188
|
-
bounded coordination with
|
|
188
|
+
bounded coordination with Ghostget and is not evidence that anything was sent.
|
|
189
189
|
Retain the study
|
|
190
190
|
command's JSON receipt and copy its `packetSha256`
|
|
191
191
|
into the finished profile; the packet does not contain its own digest. Analyze
|
|
@@ -19,9 +19,9 @@ sensitive local data.
|
|
|
19
19
|
- A native WhatsApp bundle is still only a finished offline input. Do not
|
|
20
20
|
request Wacli session files or WhatsApp authentication, invoke Wacli,
|
|
21
21
|
synchronize a linked device, inspect its database, or expose exact JIDs.
|
|
22
|
-
|
|
22
|
+
Ghostget owns that provider boundary. `--overlap-source` requires explicit
|
|
23
23
|
intent and exact CLI proof; it never authorizes fuzzy account or contact
|
|
24
|
-
matching. The
|
|
24
|
+
matching. The Ghostget v0.17.1 producer omits reaction-shaped Wacli rows with
|
|
25
25
|
`reaction-state-unproven`; never turn that missing evidence into a claim that
|
|
26
26
|
no reactions occurred.
|
|
27
27
|
- Treat a caller-owned X data archive ZIP as private source evidence. Pass only
|