@codyswann/lisa 2.166.2 → 2.166.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/package.json +1 -1
- package/plugins/lisa/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-agy/plugin.json +1 -1
- package/plugins/lisa-cdk/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-cdk/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-cdk-agy/plugin.json +1 -1
- package/plugins/lisa-cdk-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-cdk-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-expo/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-expo/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-expo-agy/plugin.json +1 -1
- package/plugins/lisa-expo-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-expo-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-harper-fabric/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-harper-fabric/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-harper-fabric/skills/harper-build-and-deploy/SKILL.md +70 -8
- package/plugins/lisa-harper-fabric-agy/plugin.json +1 -1
- package/plugins/lisa-harper-fabric-agy/skills/harper-build-and-deploy/SKILL.md +70 -8
- package/plugins/lisa-harper-fabric-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-harper-fabric-copilot/skills/harper-build-and-deploy/SKILL.md +70 -8
- package/plugins/lisa-harper-fabric-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-harper-fabric-cursor/skills/harper-build-and-deploy/SKILL.md +70 -8
- package/plugins/lisa-nestjs/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-nestjs/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-nestjs-agy/plugin.json +1 -1
- package/plugins/lisa-nestjs-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-nestjs-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-openclaw/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-openclaw/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-openclaw-agy/plugin.json +1 -1
- package/plugins/lisa-openclaw-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-openclaw-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-phaser/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-phaser/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-phaser-agy/plugin.json +1 -1
- package/plugins/lisa-phaser-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-phaser-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-rails/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-rails/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-rails-agy/plugin.json +1 -1
- package/plugins/lisa-rails-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-rails-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-typescript/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-typescript/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-typescript-agy/plugin.json +1 -1
- package/plugins/lisa-typescript-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-typescript-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-wiki/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-wiki/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-wiki-agy/plugin.json +1 -1
- package/plugins/lisa-wiki-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-wiki-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/src/harper-fabric/skills/harper-build-and-deploy/SKILL.md +70 -8
package/package.json
CHANGED
|
@@ -85,7 +85,7 @@
|
|
|
85
85
|
"lodash": ">=4.18.1"
|
|
86
86
|
},
|
|
87
87
|
"name": "@codyswann/lisa",
|
|
88
|
-
"version": "2.166.
|
|
88
|
+
"version": "2.166.3",
|
|
89
89
|
"description": "Claude Code governance framework that applies guardrails, guidance, and automated enforcement to projects",
|
|
90
90
|
"main": "dist/index.js",
|
|
91
91
|
"exports": {
|
|
@@ -27,14 +27,42 @@ The CLI binary is `harper` (v5; older installs use `harperdb`). Key commands:
|
|
|
27
27
|
In this project, dev typically runs against the component dir, e.g.
|
|
28
28
|
`harper dev harper-app` (use the project's documented run command if it wraps this).
|
|
29
29
|
|
|
30
|
-
## The build step (TypeScript
|
|
30
|
+
## The build step (TypeScript -> generated artifacts)
|
|
31
31
|
|
|
32
32
|
Harper loads JavaScript (`resources.js`) and serves static files (`web/**`). In this
|
|
33
|
-
project those are **generated**, not authored
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
33
|
+
project those are **generated**, not authored.
|
|
34
|
+
|
|
35
|
+
What the build actually does:
|
|
36
|
+
|
|
37
|
+
1. Compiles the TypeScript source under `src/` into deployable JavaScript.
|
|
38
|
+
2. Emits `harper-app/resources.js`, the aggregate resource module loaded by the
|
|
39
|
+
`jsResource` extension.
|
|
40
|
+
3. Emits per-resource modules such as `harper-app/resource-*.js` when the project
|
|
41
|
+
build splits resources for Harper's runtime loader.
|
|
42
|
+
4. Copies browser/static output into `harper-app/web/**` for the `static`
|
|
43
|
+
extension to serve.
|
|
44
|
+
5. Mirrors shared library output into `harper-app/lib/**` and rewrites imports
|
|
45
|
+
such as `../lib/foo.js` to `./lib/foo.js`. Fabric packages the component root
|
|
46
|
+
as a flat deploy unit, and Node resolves real paths at runtime, so imports must
|
|
47
|
+
point at files that exist inside the packaged `harper-app/` root.
|
|
48
|
+
6. Adds cache-busting `?v=` query parameters to browser-module imports when the
|
|
49
|
+
project build owns web asset versioning.
|
|
50
|
+
|
|
51
|
+
Generated Harper deploy artifacts usually include:
|
|
52
|
+
|
|
53
|
+
- `harper-app/resources.js`
|
|
54
|
+
- `harper-app/resource-*.js`
|
|
55
|
+
- `harper-app/web/**`
|
|
56
|
+
- `harper-app/lib/**`
|
|
57
|
+
|
|
58
|
+
Every lint, format, dead-code, search, or generated-artifact guard must ignore
|
|
59
|
+
those generated paths unless it is explicitly validating the build output itself.
|
|
60
|
+
When a new generated path appears, add it to every relevant ignore surface in the
|
|
61
|
+
same change; partial ignores fail later gates in non-obvious ways.
|
|
62
|
+
|
|
63
|
+
- **TypeScript under `src/` is source.** `bun run build` produces the deployable
|
|
64
|
+
Harper assets from it.
|
|
65
|
+
- **Never edit generated Harper assets directly** — change the TypeScript and
|
|
38
66
|
rebuild. See [[harper-resources]] and [[harper-component-model]].
|
|
39
67
|
- **Build before symlinking, packaging, or deploying `harper-app/`.** Deploying
|
|
40
68
|
stale artifacts ships code that does not match `src/`.
|
|
@@ -86,11 +114,45 @@ harper deploy_component \
|
|
|
86
114
|
|
|
87
115
|
- Omitting `package` deploys the current directory.
|
|
88
116
|
- `restart=true` restarts threads after deploy so new code loads.
|
|
89
|
-
- `replicated=true`
|
|
90
|
-
|
|
117
|
+
- `replicated=true` asks Harper/Fabric to apply the component deploy across the
|
|
118
|
+
cluster rather than only the node receiving the deploy request. Include it when
|
|
119
|
+
targeting Fabric or any clustered deployment.
|
|
91
120
|
- Credentials can come from `CLI_TARGET_USERNAME` / `CLI_TARGET_PASSWORD` instead of
|
|
92
121
|
inline flags — prefer that so secrets never land in shell history or tracked files.
|
|
93
122
|
|
|
123
|
+
## Replication and topology
|
|
124
|
+
|
|
125
|
+
Fabric is a distributed runtime: a project can run on one or more Harper nodes,
|
|
126
|
+
often grouped by region or environment. Your application code is packaged as a
|
|
127
|
+
component, and the data layer is replicated through Harper's database and
|
|
128
|
+
clustering model.
|
|
129
|
+
|
|
130
|
+
Keep these semantics separate:
|
|
131
|
+
|
|
132
|
+
- **Component code replication** is controlled by deploy behavior. With
|
|
133
|
+
`replicated=true`, the deployed component package should reach the cluster nodes
|
|
134
|
+
that serve the application. Without it, you may update only the target node and
|
|
135
|
+
leave other nodes running older code.
|
|
136
|
+
- **Data replication** is runtime/database behavior. Deploying code does not by
|
|
137
|
+
itself prove that existing rows, schema changes, caches, or realtime state are
|
|
138
|
+
consistent across regions or nodes.
|
|
139
|
+
- **Thread restart** is local process behavior. `restart=true` reloads code after
|
|
140
|
+
the package lands; it is not a substitute for checking every node or region that
|
|
141
|
+
receives traffic.
|
|
142
|
+
|
|
143
|
+
After a replicated deploy, verify from the topology the app actually uses:
|
|
144
|
+
|
|
145
|
+
1. Confirm the deploy command or workflow used `replicated=true` for Fabric/cluster
|
|
146
|
+
targets.
|
|
147
|
+
2. Read `harper status` or the project's Fabric status command to see the expected
|
|
148
|
+
nodes/regions.
|
|
149
|
+
3. Hit the public smoke endpoint through the production route, then hit a direct
|
|
150
|
+
node or region endpoint when the project exposes one.
|
|
151
|
+
4. For schema or data changes, verify a write/read path that proves the expected
|
|
152
|
+
data is visible where traffic can land.
|
|
153
|
+
5. If one node serves old assets or resources, treat the deploy as incomplete even
|
|
154
|
+
when the initial target node passed smoke.
|
|
155
|
+
|
|
94
156
|
## Secrets
|
|
95
157
|
|
|
96
158
|
Keep runtime secrets out of tracked files. Use environment variables, the
|
|
@@ -27,14 +27,42 @@ The CLI binary is `harper` (v5; older installs use `harperdb`). Key commands:
|
|
|
27
27
|
In this project, dev typically runs against the component dir, e.g.
|
|
28
28
|
`harper dev harper-app` (use the project's documented run command if it wraps this).
|
|
29
29
|
|
|
30
|
-
## The build step (TypeScript
|
|
30
|
+
## The build step (TypeScript -> generated artifacts)
|
|
31
31
|
|
|
32
32
|
Harper loads JavaScript (`resources.js`) and serves static files (`web/**`). In this
|
|
33
|
-
project those are **generated**, not authored
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
33
|
+
project those are **generated**, not authored.
|
|
34
|
+
|
|
35
|
+
What the build actually does:
|
|
36
|
+
|
|
37
|
+
1. Compiles the TypeScript source under `src/` into deployable JavaScript.
|
|
38
|
+
2. Emits `harper-app/resources.js`, the aggregate resource module loaded by the
|
|
39
|
+
`jsResource` extension.
|
|
40
|
+
3. Emits per-resource modules such as `harper-app/resource-*.js` when the project
|
|
41
|
+
build splits resources for Harper's runtime loader.
|
|
42
|
+
4. Copies browser/static output into `harper-app/web/**` for the `static`
|
|
43
|
+
extension to serve.
|
|
44
|
+
5. Mirrors shared library output into `harper-app/lib/**` and rewrites imports
|
|
45
|
+
such as `../lib/foo.js` to `./lib/foo.js`. Fabric packages the component root
|
|
46
|
+
as a flat deploy unit, and Node resolves real paths at runtime, so imports must
|
|
47
|
+
point at files that exist inside the packaged `harper-app/` root.
|
|
48
|
+
6. Adds cache-busting `?v=` query parameters to browser-module imports when the
|
|
49
|
+
project build owns web asset versioning.
|
|
50
|
+
|
|
51
|
+
Generated Harper deploy artifacts usually include:
|
|
52
|
+
|
|
53
|
+
- `harper-app/resources.js`
|
|
54
|
+
- `harper-app/resource-*.js`
|
|
55
|
+
- `harper-app/web/**`
|
|
56
|
+
- `harper-app/lib/**`
|
|
57
|
+
|
|
58
|
+
Every lint, format, dead-code, search, or generated-artifact guard must ignore
|
|
59
|
+
those generated paths unless it is explicitly validating the build output itself.
|
|
60
|
+
When a new generated path appears, add it to every relevant ignore surface in the
|
|
61
|
+
same change; partial ignores fail later gates in non-obvious ways.
|
|
62
|
+
|
|
63
|
+
- **TypeScript under `src/` is source.** `bun run build` produces the deployable
|
|
64
|
+
Harper assets from it.
|
|
65
|
+
- **Never edit generated Harper assets directly** — change the TypeScript and
|
|
38
66
|
rebuild. See [[harper-resources]] and [[harper-component-model]].
|
|
39
67
|
- **Build before symlinking, packaging, or deploying `harper-app/`.** Deploying
|
|
40
68
|
stale artifacts ships code that does not match `src/`.
|
|
@@ -86,11 +114,45 @@ harper deploy_component \
|
|
|
86
114
|
|
|
87
115
|
- Omitting `package` deploys the current directory.
|
|
88
116
|
- `restart=true` restarts threads after deploy so new code loads.
|
|
89
|
-
- `replicated=true`
|
|
90
|
-
|
|
117
|
+
- `replicated=true` asks Harper/Fabric to apply the component deploy across the
|
|
118
|
+
cluster rather than only the node receiving the deploy request. Include it when
|
|
119
|
+
targeting Fabric or any clustered deployment.
|
|
91
120
|
- Credentials can come from `CLI_TARGET_USERNAME` / `CLI_TARGET_PASSWORD` instead of
|
|
92
121
|
inline flags — prefer that so secrets never land in shell history or tracked files.
|
|
93
122
|
|
|
123
|
+
## Replication and topology
|
|
124
|
+
|
|
125
|
+
Fabric is a distributed runtime: a project can run on one or more Harper nodes,
|
|
126
|
+
often grouped by region or environment. Your application code is packaged as a
|
|
127
|
+
component, and the data layer is replicated through Harper's database and
|
|
128
|
+
clustering model.
|
|
129
|
+
|
|
130
|
+
Keep these semantics separate:
|
|
131
|
+
|
|
132
|
+
- **Component code replication** is controlled by deploy behavior. With
|
|
133
|
+
`replicated=true`, the deployed component package should reach the cluster nodes
|
|
134
|
+
that serve the application. Without it, you may update only the target node and
|
|
135
|
+
leave other nodes running older code.
|
|
136
|
+
- **Data replication** is runtime/database behavior. Deploying code does not by
|
|
137
|
+
itself prove that existing rows, schema changes, caches, or realtime state are
|
|
138
|
+
consistent across regions or nodes.
|
|
139
|
+
- **Thread restart** is local process behavior. `restart=true` reloads code after
|
|
140
|
+
the package lands; it is not a substitute for checking every node or region that
|
|
141
|
+
receives traffic.
|
|
142
|
+
|
|
143
|
+
After a replicated deploy, verify from the topology the app actually uses:
|
|
144
|
+
|
|
145
|
+
1. Confirm the deploy command or workflow used `replicated=true` for Fabric/cluster
|
|
146
|
+
targets.
|
|
147
|
+
2. Read `harper status` or the project's Fabric status command to see the expected
|
|
148
|
+
nodes/regions.
|
|
149
|
+
3. Hit the public smoke endpoint through the production route, then hit a direct
|
|
150
|
+
node or region endpoint when the project exposes one.
|
|
151
|
+
4. For schema or data changes, verify a write/read path that proves the expected
|
|
152
|
+
data is visible where traffic can land.
|
|
153
|
+
5. If one node serves old assets or resources, treat the deploy as incomplete even
|
|
154
|
+
when the initial target node passed smoke.
|
|
155
|
+
|
|
94
156
|
## Secrets
|
|
95
157
|
|
|
96
158
|
Keep runtime secrets out of tracked files. Use environment variables, the
|
|
@@ -27,14 +27,42 @@ The CLI binary is `harper` (v5; older installs use `harperdb`). Key commands:
|
|
|
27
27
|
In this project, dev typically runs against the component dir, e.g.
|
|
28
28
|
`harper dev harper-app` (use the project's documented run command if it wraps this).
|
|
29
29
|
|
|
30
|
-
## The build step (TypeScript
|
|
30
|
+
## The build step (TypeScript -> generated artifacts)
|
|
31
31
|
|
|
32
32
|
Harper loads JavaScript (`resources.js`) and serves static files (`web/**`). In this
|
|
33
|
-
project those are **generated**, not authored
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
33
|
+
project those are **generated**, not authored.
|
|
34
|
+
|
|
35
|
+
What the build actually does:
|
|
36
|
+
|
|
37
|
+
1. Compiles the TypeScript source under `src/` into deployable JavaScript.
|
|
38
|
+
2. Emits `harper-app/resources.js`, the aggregate resource module loaded by the
|
|
39
|
+
`jsResource` extension.
|
|
40
|
+
3. Emits per-resource modules such as `harper-app/resource-*.js` when the project
|
|
41
|
+
build splits resources for Harper's runtime loader.
|
|
42
|
+
4. Copies browser/static output into `harper-app/web/**` for the `static`
|
|
43
|
+
extension to serve.
|
|
44
|
+
5. Mirrors shared library output into `harper-app/lib/**` and rewrites imports
|
|
45
|
+
such as `../lib/foo.js` to `./lib/foo.js`. Fabric packages the component root
|
|
46
|
+
as a flat deploy unit, and Node resolves real paths at runtime, so imports must
|
|
47
|
+
point at files that exist inside the packaged `harper-app/` root.
|
|
48
|
+
6. Adds cache-busting `?v=` query parameters to browser-module imports when the
|
|
49
|
+
project build owns web asset versioning.
|
|
50
|
+
|
|
51
|
+
Generated Harper deploy artifacts usually include:
|
|
52
|
+
|
|
53
|
+
- `harper-app/resources.js`
|
|
54
|
+
- `harper-app/resource-*.js`
|
|
55
|
+
- `harper-app/web/**`
|
|
56
|
+
- `harper-app/lib/**`
|
|
57
|
+
|
|
58
|
+
Every lint, format, dead-code, search, or generated-artifact guard must ignore
|
|
59
|
+
those generated paths unless it is explicitly validating the build output itself.
|
|
60
|
+
When a new generated path appears, add it to every relevant ignore surface in the
|
|
61
|
+
same change; partial ignores fail later gates in non-obvious ways.
|
|
62
|
+
|
|
63
|
+
- **TypeScript under `src/` is source.** `bun run build` produces the deployable
|
|
64
|
+
Harper assets from it.
|
|
65
|
+
- **Never edit generated Harper assets directly** — change the TypeScript and
|
|
38
66
|
rebuild. See [[harper-resources]] and [[harper-component-model]].
|
|
39
67
|
- **Build before symlinking, packaging, or deploying `harper-app/`.** Deploying
|
|
40
68
|
stale artifacts ships code that does not match `src/`.
|
|
@@ -86,11 +114,45 @@ harper deploy_component \
|
|
|
86
114
|
|
|
87
115
|
- Omitting `package` deploys the current directory.
|
|
88
116
|
- `restart=true` restarts threads after deploy so new code loads.
|
|
89
|
-
- `replicated=true`
|
|
90
|
-
|
|
117
|
+
- `replicated=true` asks Harper/Fabric to apply the component deploy across the
|
|
118
|
+
cluster rather than only the node receiving the deploy request. Include it when
|
|
119
|
+
targeting Fabric or any clustered deployment.
|
|
91
120
|
- Credentials can come from `CLI_TARGET_USERNAME` / `CLI_TARGET_PASSWORD` instead of
|
|
92
121
|
inline flags — prefer that so secrets never land in shell history or tracked files.
|
|
93
122
|
|
|
123
|
+
## Replication and topology
|
|
124
|
+
|
|
125
|
+
Fabric is a distributed runtime: a project can run on one or more Harper nodes,
|
|
126
|
+
often grouped by region or environment. Your application code is packaged as a
|
|
127
|
+
component, and the data layer is replicated through Harper's database and
|
|
128
|
+
clustering model.
|
|
129
|
+
|
|
130
|
+
Keep these semantics separate:
|
|
131
|
+
|
|
132
|
+
- **Component code replication** is controlled by deploy behavior. With
|
|
133
|
+
`replicated=true`, the deployed component package should reach the cluster nodes
|
|
134
|
+
that serve the application. Without it, you may update only the target node and
|
|
135
|
+
leave other nodes running older code.
|
|
136
|
+
- **Data replication** is runtime/database behavior. Deploying code does not by
|
|
137
|
+
itself prove that existing rows, schema changes, caches, or realtime state are
|
|
138
|
+
consistent across regions or nodes.
|
|
139
|
+
- **Thread restart** is local process behavior. `restart=true` reloads code after
|
|
140
|
+
the package lands; it is not a substitute for checking every node or region that
|
|
141
|
+
receives traffic.
|
|
142
|
+
|
|
143
|
+
After a replicated deploy, verify from the topology the app actually uses:
|
|
144
|
+
|
|
145
|
+
1. Confirm the deploy command or workflow used `replicated=true` for Fabric/cluster
|
|
146
|
+
targets.
|
|
147
|
+
2. Read `harper status` or the project's Fabric status command to see the expected
|
|
148
|
+
nodes/regions.
|
|
149
|
+
3. Hit the public smoke endpoint through the production route, then hit a direct
|
|
150
|
+
node or region endpoint when the project exposes one.
|
|
151
|
+
4. For schema or data changes, verify a write/read path that proves the expected
|
|
152
|
+
data is visible where traffic can land.
|
|
153
|
+
5. If one node serves old assets or resources, treat the deploy as incomplete even
|
|
154
|
+
when the initial target node passed smoke.
|
|
155
|
+
|
|
94
156
|
## Secrets
|
|
95
157
|
|
|
96
158
|
Keep runtime secrets out of tracked files. Use environment variables, the
|
|
@@ -27,14 +27,42 @@ The CLI binary is `harper` (v5; older installs use `harperdb`). Key commands:
|
|
|
27
27
|
In this project, dev typically runs against the component dir, e.g.
|
|
28
28
|
`harper dev harper-app` (use the project's documented run command if it wraps this).
|
|
29
29
|
|
|
30
|
-
## The build step (TypeScript
|
|
30
|
+
## The build step (TypeScript -> generated artifacts)
|
|
31
31
|
|
|
32
32
|
Harper loads JavaScript (`resources.js`) and serves static files (`web/**`). In this
|
|
33
|
-
project those are **generated**, not authored
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
33
|
+
project those are **generated**, not authored.
|
|
34
|
+
|
|
35
|
+
What the build actually does:
|
|
36
|
+
|
|
37
|
+
1. Compiles the TypeScript source under `src/` into deployable JavaScript.
|
|
38
|
+
2. Emits `harper-app/resources.js`, the aggregate resource module loaded by the
|
|
39
|
+
`jsResource` extension.
|
|
40
|
+
3. Emits per-resource modules such as `harper-app/resource-*.js` when the project
|
|
41
|
+
build splits resources for Harper's runtime loader.
|
|
42
|
+
4. Copies browser/static output into `harper-app/web/**` for the `static`
|
|
43
|
+
extension to serve.
|
|
44
|
+
5. Mirrors shared library output into `harper-app/lib/**` and rewrites imports
|
|
45
|
+
such as `../lib/foo.js` to `./lib/foo.js`. Fabric packages the component root
|
|
46
|
+
as a flat deploy unit, and Node resolves real paths at runtime, so imports must
|
|
47
|
+
point at files that exist inside the packaged `harper-app/` root.
|
|
48
|
+
6. Adds cache-busting `?v=` query parameters to browser-module imports when the
|
|
49
|
+
project build owns web asset versioning.
|
|
50
|
+
|
|
51
|
+
Generated Harper deploy artifacts usually include:
|
|
52
|
+
|
|
53
|
+
- `harper-app/resources.js`
|
|
54
|
+
- `harper-app/resource-*.js`
|
|
55
|
+
- `harper-app/web/**`
|
|
56
|
+
- `harper-app/lib/**`
|
|
57
|
+
|
|
58
|
+
Every lint, format, dead-code, search, or generated-artifact guard must ignore
|
|
59
|
+
those generated paths unless it is explicitly validating the build output itself.
|
|
60
|
+
When a new generated path appears, add it to every relevant ignore surface in the
|
|
61
|
+
same change; partial ignores fail later gates in non-obvious ways.
|
|
62
|
+
|
|
63
|
+
- **TypeScript under `src/` is source.** `bun run build` produces the deployable
|
|
64
|
+
Harper assets from it.
|
|
65
|
+
- **Never edit generated Harper assets directly** — change the TypeScript and
|
|
38
66
|
rebuild. See [[harper-resources]] and [[harper-component-model]].
|
|
39
67
|
- **Build before symlinking, packaging, or deploying `harper-app/`.** Deploying
|
|
40
68
|
stale artifacts ships code that does not match `src/`.
|
|
@@ -86,11 +114,45 @@ harper deploy_component \
|
|
|
86
114
|
|
|
87
115
|
- Omitting `package` deploys the current directory.
|
|
88
116
|
- `restart=true` restarts threads after deploy so new code loads.
|
|
89
|
-
- `replicated=true`
|
|
90
|
-
|
|
117
|
+
- `replicated=true` asks Harper/Fabric to apply the component deploy across the
|
|
118
|
+
cluster rather than only the node receiving the deploy request. Include it when
|
|
119
|
+
targeting Fabric or any clustered deployment.
|
|
91
120
|
- Credentials can come from `CLI_TARGET_USERNAME` / `CLI_TARGET_PASSWORD` instead of
|
|
92
121
|
inline flags — prefer that so secrets never land in shell history or tracked files.
|
|
93
122
|
|
|
123
|
+
## Replication and topology
|
|
124
|
+
|
|
125
|
+
Fabric is a distributed runtime: a project can run on one or more Harper nodes,
|
|
126
|
+
often grouped by region or environment. Your application code is packaged as a
|
|
127
|
+
component, and the data layer is replicated through Harper's database and
|
|
128
|
+
clustering model.
|
|
129
|
+
|
|
130
|
+
Keep these semantics separate:
|
|
131
|
+
|
|
132
|
+
- **Component code replication** is controlled by deploy behavior. With
|
|
133
|
+
`replicated=true`, the deployed component package should reach the cluster nodes
|
|
134
|
+
that serve the application. Without it, you may update only the target node and
|
|
135
|
+
leave other nodes running older code.
|
|
136
|
+
- **Data replication** is runtime/database behavior. Deploying code does not by
|
|
137
|
+
itself prove that existing rows, schema changes, caches, or realtime state are
|
|
138
|
+
consistent across regions or nodes.
|
|
139
|
+
- **Thread restart** is local process behavior. `restart=true` reloads code after
|
|
140
|
+
the package lands; it is not a substitute for checking every node or region that
|
|
141
|
+
receives traffic.
|
|
142
|
+
|
|
143
|
+
After a replicated deploy, verify from the topology the app actually uses:
|
|
144
|
+
|
|
145
|
+
1. Confirm the deploy command or workflow used `replicated=true` for Fabric/cluster
|
|
146
|
+
targets.
|
|
147
|
+
2. Read `harper status` or the project's Fabric status command to see the expected
|
|
148
|
+
nodes/regions.
|
|
149
|
+
3. Hit the public smoke endpoint through the production route, then hit a direct
|
|
150
|
+
node or region endpoint when the project exposes one.
|
|
151
|
+
4. For schema or data changes, verify a write/read path that proves the expected
|
|
152
|
+
data is visible where traffic can land.
|
|
153
|
+
5. If one node serves old assets or resources, treat the deploy as incomplete even
|
|
154
|
+
when the initial target node passed smoke.
|
|
155
|
+
|
|
94
156
|
## Secrets
|
|
95
157
|
|
|
96
158
|
Keep runtime secrets out of tracked files. Use environment variables, the
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "lisa-openclaw",
|
|
3
|
-
"version": "2.166.
|
|
3
|
+
"version": "2.166.3",
|
|
4
4
|
"description": "Connect staff roles to Telegram or Slack via OpenClaw — facilitator/specialist hub-and-spoke routing and repo-coding topics, for Claude Code and Codex",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Cody Swann"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "lisa-openclaw",
|
|
3
|
-
"version": "2.166.
|
|
3
|
+
"version": "2.166.3",
|
|
4
4
|
"description": "Connect staff roles to Telegram or Slack via OpenClaw — facilitator/specialist hub-and-spoke routing and repo-coding topics, across Claude and Codex.",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Cody Swann"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "lisa-openclaw",
|
|
3
|
-
"version": "2.166.
|
|
3
|
+
"version": "2.166.3",
|
|
4
4
|
"description": "Connect staff roles to Telegram or Slack via OpenClaw — facilitator/specialist hub-and-spoke routing and repo-coding topics, for Claude Code and Codex",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Cody Swann"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "lisa-openclaw",
|
|
3
|
-
"version": "2.166.
|
|
3
|
+
"version": "2.166.3",
|
|
4
4
|
"description": "Connect staff roles to Telegram or Slack via OpenClaw — facilitator/specialist hub-and-spoke routing and repo-coding topics, for Claude Code and Codex",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Cody Swann"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "lisa-openclaw",
|
|
3
|
-
"version": "2.166.
|
|
3
|
+
"version": "2.166.3",
|
|
4
4
|
"description": "Connect staff roles to Telegram or Slack via OpenClaw — facilitator/specialist hub-and-spoke routing and repo-coding topics, for Claude Code and Codex",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Cody Swann"
|
|
@@ -27,14 +27,42 @@ The CLI binary is `harper` (v5; older installs use `harperdb`). Key commands:
|
|
|
27
27
|
In this project, dev typically runs against the component dir, e.g.
|
|
28
28
|
`harper dev harper-app` (use the project's documented run command if it wraps this).
|
|
29
29
|
|
|
30
|
-
## The build step (TypeScript
|
|
30
|
+
## The build step (TypeScript -> generated artifacts)
|
|
31
31
|
|
|
32
32
|
Harper loads JavaScript (`resources.js`) and serves static files (`web/**`). In this
|
|
33
|
-
project those are **generated**, not authored
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
33
|
+
project those are **generated**, not authored.
|
|
34
|
+
|
|
35
|
+
What the build actually does:
|
|
36
|
+
|
|
37
|
+
1. Compiles the TypeScript source under `src/` into deployable JavaScript.
|
|
38
|
+
2. Emits `harper-app/resources.js`, the aggregate resource module loaded by the
|
|
39
|
+
`jsResource` extension.
|
|
40
|
+
3. Emits per-resource modules such as `harper-app/resource-*.js` when the project
|
|
41
|
+
build splits resources for Harper's runtime loader.
|
|
42
|
+
4. Copies browser/static output into `harper-app/web/**` for the `static`
|
|
43
|
+
extension to serve.
|
|
44
|
+
5. Mirrors shared library output into `harper-app/lib/**` and rewrites imports
|
|
45
|
+
such as `../lib/foo.js` to `./lib/foo.js`. Fabric packages the component root
|
|
46
|
+
as a flat deploy unit, and Node resolves real paths at runtime, so imports must
|
|
47
|
+
point at files that exist inside the packaged `harper-app/` root.
|
|
48
|
+
6. Adds cache-busting `?v=` query parameters to browser-module imports when the
|
|
49
|
+
project build owns web asset versioning.
|
|
50
|
+
|
|
51
|
+
Generated Harper deploy artifacts usually include:
|
|
52
|
+
|
|
53
|
+
- `harper-app/resources.js`
|
|
54
|
+
- `harper-app/resource-*.js`
|
|
55
|
+
- `harper-app/web/**`
|
|
56
|
+
- `harper-app/lib/**`
|
|
57
|
+
|
|
58
|
+
Every lint, format, dead-code, search, or generated-artifact guard must ignore
|
|
59
|
+
those generated paths unless it is explicitly validating the build output itself.
|
|
60
|
+
When a new generated path appears, add it to every relevant ignore surface in the
|
|
61
|
+
same change; partial ignores fail later gates in non-obvious ways.
|
|
62
|
+
|
|
63
|
+
- **TypeScript under `src/` is source.** `bun run build` produces the deployable
|
|
64
|
+
Harper assets from it.
|
|
65
|
+
- **Never edit generated Harper assets directly** — change the TypeScript and
|
|
38
66
|
rebuild. See [[harper-resources]] and [[harper-component-model]].
|
|
39
67
|
- **Build before symlinking, packaging, or deploying `harper-app/`.** Deploying
|
|
40
68
|
stale artifacts ships code that does not match `src/`.
|
|
@@ -86,11 +114,45 @@ harper deploy_component \
|
|
|
86
114
|
|
|
87
115
|
- Omitting `package` deploys the current directory.
|
|
88
116
|
- `restart=true` restarts threads after deploy so new code loads.
|
|
89
|
-
- `replicated=true`
|
|
90
|
-
|
|
117
|
+
- `replicated=true` asks Harper/Fabric to apply the component deploy across the
|
|
118
|
+
cluster rather than only the node receiving the deploy request. Include it when
|
|
119
|
+
targeting Fabric or any clustered deployment.
|
|
91
120
|
- Credentials can come from `CLI_TARGET_USERNAME` / `CLI_TARGET_PASSWORD` instead of
|
|
92
121
|
inline flags — prefer that so secrets never land in shell history or tracked files.
|
|
93
122
|
|
|
123
|
+
## Replication and topology
|
|
124
|
+
|
|
125
|
+
Fabric is a distributed runtime: a project can run on one or more Harper nodes,
|
|
126
|
+
often grouped by region or environment. Your application code is packaged as a
|
|
127
|
+
component, and the data layer is replicated through Harper's database and
|
|
128
|
+
clustering model.
|
|
129
|
+
|
|
130
|
+
Keep these semantics separate:
|
|
131
|
+
|
|
132
|
+
- **Component code replication** is controlled by deploy behavior. With
|
|
133
|
+
`replicated=true`, the deployed component package should reach the cluster nodes
|
|
134
|
+
that serve the application. Without it, you may update only the target node and
|
|
135
|
+
leave other nodes running older code.
|
|
136
|
+
- **Data replication** is runtime/database behavior. Deploying code does not by
|
|
137
|
+
itself prove that existing rows, schema changes, caches, or realtime state are
|
|
138
|
+
consistent across regions or nodes.
|
|
139
|
+
- **Thread restart** is local process behavior. `restart=true` reloads code after
|
|
140
|
+
the package lands; it is not a substitute for checking every node or region that
|
|
141
|
+
receives traffic.
|
|
142
|
+
|
|
143
|
+
After a replicated deploy, verify from the topology the app actually uses:
|
|
144
|
+
|
|
145
|
+
1. Confirm the deploy command or workflow used `replicated=true` for Fabric/cluster
|
|
146
|
+
targets.
|
|
147
|
+
2. Read `harper status` or the project's Fabric status command to see the expected
|
|
148
|
+
nodes/regions.
|
|
149
|
+
3. Hit the public smoke endpoint through the production route, then hit a direct
|
|
150
|
+
node or region endpoint when the project exposes one.
|
|
151
|
+
4. For schema or data changes, verify a write/read path that proves the expected
|
|
152
|
+
data is visible where traffic can land.
|
|
153
|
+
5. If one node serves old assets or resources, treat the deploy as incomplete even
|
|
154
|
+
when the initial target node passed smoke.
|
|
155
|
+
|
|
94
156
|
## Secrets
|
|
95
157
|
|
|
96
158
|
Keep runtime secrets out of tracked files. Use environment variables, the
|