@codyswann/lisa 2.152.1 → 2.153.0
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/dist/cli/apply.js +3 -3
- package/dist/cli/apply.js.map +1 -1
- package/dist/cli/shared-options.d.ts.map +1 -1
- package/dist/cli/shared-options.js +7 -6
- package/dist/cli/shared-options.js.map +1 -1
- package/dist/core/config.d.ts +20 -8
- package/dist/core/config.d.ts.map +1 -1
- package/dist/core/config.js +20 -8
- package/dist/core/config.js.map +1 -1
- package/dist/core/lisa.d.ts +2 -1
- package/dist/core/lisa.d.ts.map +1 -1
- package/dist/core/lisa.js +2 -1
- package/dist/core/lisa.js.map +1 -1
- package/dist/core/project-config.d.ts +9 -0
- package/dist/core/project-config.d.ts.map +1 -1
- package/dist/core/project-config.js +17 -4
- package/dist/core/project-config.js.map +1 -1
- package/dist/migrations/index.d.ts +1 -0
- package/dist/migrations/index.d.ts.map +1 -1
- package/dist/migrations/index.js +3 -0
- package/dist/migrations/index.js.map +1 -1
- package/dist/migrations/reconcile-claude-stack-plugins.d.ts +33 -0
- package/dist/migrations/reconcile-claude-stack-plugins.d.ts.map +1 -0
- package/dist/migrations/reconcile-claude-stack-plugins.js +146 -0
- package/dist/migrations/reconcile-claude-stack-plugins.js.map +1 -0
- 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-agy/plugin.json +1 -1
- package/plugins/lisa-harper-fabric-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-harper-fabric-cursor/.claude-plugin/plugin.json +1 -1
- 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-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
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import type { Migration, MigrationContext, MigrationResult } from "./migration.interface.js";
|
|
2
|
+
/**
|
|
3
|
+
* Migration: reconcile Lisa stack plugins in `.claude/settings.json` against
|
|
4
|
+
* the project's currently detected types.
|
|
5
|
+
*
|
|
6
|
+
* Lisa enables `lisa-<type>@lisa` stack plugins by deep-merging each detected
|
|
7
|
+
* stack's `merge/.claude/settings.json` template. Because the merge only ever
|
|
8
|
+
* adds keys, a stack plugin enabled by a past apply persists forever even after
|
|
9
|
+
* the project's nature changes — e.g. a project that once detected as TypeScript
|
|
10
|
+
* but is now Rails keeps a stale `lisa-typescript@lisa`, and a TS backend that
|
|
11
|
+
* briefly looked like Nest keeps a stale `lisa-nestjs@lisa`. This migration runs
|
|
12
|
+
* after the merge strategies and prunes any managed stack plugin whose type is
|
|
13
|
+
* no longer detected, while ensuring the detected stacks' plugins are present.
|
|
14
|
+
* Non-stack plugins (`lisa@lisa`, `lisa-wiki@lisa`) and third-party marketplace
|
|
15
|
+
* plugins are never touched.
|
|
16
|
+
*/
|
|
17
|
+
export declare class ReconcileClaudeStackPluginsMigration implements Migration {
|
|
18
|
+
readonly name = "reconcile-claude-stack-plugins";
|
|
19
|
+
readonly description = "Prune stale Lisa stack plugins from .claude/settings.json that no longer match detected types";
|
|
20
|
+
/**
|
|
21
|
+
* Whether reconciliation would change any managed stack plugin key.
|
|
22
|
+
* @param ctx - Migration context
|
|
23
|
+
* @returns True when a managed stack plugin would be added or removed
|
|
24
|
+
*/
|
|
25
|
+
applies(ctx: MigrationContext): Promise<boolean>;
|
|
26
|
+
/**
|
|
27
|
+
* Reconcile the managed stack plugins and write the result back.
|
|
28
|
+
* @param ctx - Migration context
|
|
29
|
+
* @returns Result describing the keys removed and added
|
|
30
|
+
*/
|
|
31
|
+
apply(ctx: MigrationContext): Promise<MigrationResult>;
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=reconcile-claude-stack-plugins.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reconcile-claude-stack-plugins.d.ts","sourceRoot":"","sources":["../../src/migrations/reconcile-claude-stack-plugins.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,SAAS,EACT,gBAAgB,EAChB,eAAe,EAChB,MAAM,0BAA0B,CAAC;AA+GlC;;;;;;;;;;;;;;GAcG;AACH,qBAAa,oCAAqC,YAAW,SAAS;IACpE,QAAQ,CAAC,IAAI,oCAAoC;IACjD,QAAQ,CAAC,WAAW,mGAC8E;IAElG;;;;OAIG;IACG,OAAO,CAAC,GAAG,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC;IAYtD;;;;OAIG;IACG,KAAK,CAAC,GAAG,EAAE,gBAAgB,GAAG,OAAO,CAAC,eAAe,CAAC;CA4C7D"}
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
import * as path from "node:path";
|
|
2
|
+
import { readJsonOrNull, writeJson } from "../utils/json-utils.js";
|
|
3
|
+
const SETTINGS_REL_PATH = path.join(".claude", "settings.json");
|
|
4
|
+
/**
|
|
5
|
+
* Project types that ship their own `lisa-<type>@lisa` stack plugin.
|
|
6
|
+
*
|
|
7
|
+
* `npm-package` is intentionally excluded: it has no dedicated plugin and is
|
|
8
|
+
* represented by its `typescript` parent (see PROJECT_TYPE_HIERARCHY). Every
|
|
9
|
+
* other detectable type ships a stack plugin whose enablement Lisa owns.
|
|
10
|
+
*/
|
|
11
|
+
const STACK_PLUGIN_TYPES = [
|
|
12
|
+
"typescript",
|
|
13
|
+
"expo",
|
|
14
|
+
"nestjs",
|
|
15
|
+
"cdk",
|
|
16
|
+
"harper-fabric",
|
|
17
|
+
"rails",
|
|
18
|
+
];
|
|
19
|
+
/**
|
|
20
|
+
* The full set of `lisa-<type>@lisa` plugin keys that this migration manages.
|
|
21
|
+
* Any key outside this set (e.g. `lisa@lisa`, `lisa-wiki@lisa`, third-party
|
|
22
|
+
* marketplace plugins like `typescript-lsp@claude-plugins-official`) is left
|
|
23
|
+
* untouched.
|
|
24
|
+
*/
|
|
25
|
+
const MANAGED_STACK_PLUGIN_KEYS = new Set(STACK_PLUGIN_TYPES.map(type => stackPluginKey(type)));
|
|
26
|
+
/**
|
|
27
|
+
* Build the canonical enabledPlugins key for a stack plugin type.
|
|
28
|
+
* @param type - Project type that ships a stack plugin
|
|
29
|
+
* @returns The `lisa-<type>@lisa` enabledPlugins key
|
|
30
|
+
*/
|
|
31
|
+
function stackPluginKey(type) {
|
|
32
|
+
return `lisa-${type}@lisa`;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Compute the reconciled enabledPlugins map for the managed stack plugin keys.
|
|
36
|
+
*
|
|
37
|
+
* Rules (only the managed `lisa-<type>@lisa` keys are considered):
|
|
38
|
+
* - A stack plugin whose type is detected stays; if it is missing entirely it
|
|
39
|
+
* is added (`true`). An explicit existing value (including `false`, a
|
|
40
|
+
* deliberate opt-out) is preserved.
|
|
41
|
+
* - A stack plugin whose type is NOT detected is removed entirely — it does not
|
|
42
|
+
* apply to this project.
|
|
43
|
+
*
|
|
44
|
+
* All non-managed keys pass through unchanged.
|
|
45
|
+
* @param enabledPlugins - Current enabledPlugins map
|
|
46
|
+
* @param detectedTypes - Detected project types (already parent-expanded)
|
|
47
|
+
* @returns The reconciled map plus the lists of removed and added keys
|
|
48
|
+
*/
|
|
49
|
+
function reconcileStackPlugins(enabledPlugins, detectedTypes) {
|
|
50
|
+
const desiredKeys = new Set(detectedTypes
|
|
51
|
+
.filter(type => STACK_PLUGIN_TYPES.includes(type))
|
|
52
|
+
.map(type => stackPluginKey(type)));
|
|
53
|
+
const entries = Object.entries(enabledPlugins);
|
|
54
|
+
const isStale = (key) => MANAGED_STACK_PLUGIN_KEYS.has(key) && !desiredKeys.has(key);
|
|
55
|
+
const removed = entries.map(([key]) => key).filter(isStale);
|
|
56
|
+
const kept = entries.filter(([key]) => !isStale(key));
|
|
57
|
+
const keptKeys = new Set(kept.map(([key]) => key));
|
|
58
|
+
const added = [...desiredKeys].filter(key => !keptKeys.has(key));
|
|
59
|
+
const enabledPluginsNext = Object.fromEntries([
|
|
60
|
+
...kept,
|
|
61
|
+
...added.map(key => [key, true]),
|
|
62
|
+
]);
|
|
63
|
+
return { enabledPlugins: enabledPluginsNext, removed, added };
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Read the project's `.claude/settings.json`, returning null when absent.
|
|
67
|
+
* @param projectDir - Destination project directory
|
|
68
|
+
* @returns Parsed settings or null when missing/invalid
|
|
69
|
+
*/
|
|
70
|
+
async function readClaudeSettings(projectDir) {
|
|
71
|
+
return readJsonOrNull(path.join(projectDir, SETTINGS_REL_PATH));
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Migration: reconcile Lisa stack plugins in `.claude/settings.json` against
|
|
75
|
+
* the project's currently detected types.
|
|
76
|
+
*
|
|
77
|
+
* Lisa enables `lisa-<type>@lisa` stack plugins by deep-merging each detected
|
|
78
|
+
* stack's `merge/.claude/settings.json` template. Because the merge only ever
|
|
79
|
+
* adds keys, a stack plugin enabled by a past apply persists forever even after
|
|
80
|
+
* the project's nature changes — e.g. a project that once detected as TypeScript
|
|
81
|
+
* but is now Rails keeps a stale `lisa-typescript@lisa`, and a TS backend that
|
|
82
|
+
* briefly looked like Nest keeps a stale `lisa-nestjs@lisa`. This migration runs
|
|
83
|
+
* after the merge strategies and prunes any managed stack plugin whose type is
|
|
84
|
+
* no longer detected, while ensuring the detected stacks' plugins are present.
|
|
85
|
+
* Non-stack plugins (`lisa@lisa`, `lisa-wiki@lisa`) and third-party marketplace
|
|
86
|
+
* plugins are never touched.
|
|
87
|
+
*/
|
|
88
|
+
export class ReconcileClaudeStackPluginsMigration {
|
|
89
|
+
name = "reconcile-claude-stack-plugins";
|
|
90
|
+
description = "Prune stale Lisa stack plugins from .claude/settings.json that no longer match detected types";
|
|
91
|
+
/**
|
|
92
|
+
* Whether reconciliation would change any managed stack plugin key.
|
|
93
|
+
* @param ctx - Migration context
|
|
94
|
+
* @returns True when a managed stack plugin would be added or removed
|
|
95
|
+
*/
|
|
96
|
+
async applies(ctx) {
|
|
97
|
+
const settings = await readClaudeSettings(ctx.projectDir);
|
|
98
|
+
if (!settings?.enabledPlugins) {
|
|
99
|
+
return false;
|
|
100
|
+
}
|
|
101
|
+
const { removed, added } = reconcileStackPlugins(settings.enabledPlugins, ctx.detectedTypes);
|
|
102
|
+
return removed.length > 0 || added.length > 0;
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Reconcile the managed stack plugins and write the result back.
|
|
106
|
+
* @param ctx - Migration context
|
|
107
|
+
* @returns Result describing the keys removed and added
|
|
108
|
+
*/
|
|
109
|
+
async apply(ctx) {
|
|
110
|
+
const settings = await readClaudeSettings(ctx.projectDir);
|
|
111
|
+
if (!settings?.enabledPlugins) {
|
|
112
|
+
return { name: this.name, action: "noop" };
|
|
113
|
+
}
|
|
114
|
+
const { enabledPlugins, removed, added } = reconcileStackPlugins(settings.enabledPlugins, ctx.detectedTypes);
|
|
115
|
+
if (removed.length === 0 && added.length === 0) {
|
|
116
|
+
return { name: this.name, action: "noop" };
|
|
117
|
+
}
|
|
118
|
+
const parts = [];
|
|
119
|
+
if (removed.length > 0) {
|
|
120
|
+
parts.push(`removed stale ${removed.join(", ")}`);
|
|
121
|
+
}
|
|
122
|
+
if (added.length > 0) {
|
|
123
|
+
parts.push(`added ${added.join(", ")}`);
|
|
124
|
+
}
|
|
125
|
+
const message = `Reconciled stack plugins: ${parts.join("; ")}`;
|
|
126
|
+
if (ctx.dryRun) {
|
|
127
|
+
ctx.logger.dry(`Would update ${SETTINGS_REL_PATH}: ${message}`);
|
|
128
|
+
return {
|
|
129
|
+
name: this.name,
|
|
130
|
+
action: "applied",
|
|
131
|
+
changedFiles: [SETTINGS_REL_PATH],
|
|
132
|
+
message,
|
|
133
|
+
};
|
|
134
|
+
}
|
|
135
|
+
const nextSettings = { ...settings, enabledPlugins };
|
|
136
|
+
await writeJson(path.join(ctx.projectDir, SETTINGS_REL_PATH), nextSettings);
|
|
137
|
+
ctx.logger.success(message);
|
|
138
|
+
return {
|
|
139
|
+
name: this.name,
|
|
140
|
+
action: "applied",
|
|
141
|
+
changedFiles: [SETTINGS_REL_PATH],
|
|
142
|
+
message,
|
|
143
|
+
};
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
//# sourceMappingURL=reconcile-claude-stack-plugins.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reconcile-claude-stack-plugins.js","sourceRoot":"","sources":["../../src/migrations/reconcile-claude-stack-plugins.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAOnE,MAAM,iBAAiB,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;AAEhE;;;;;;GAMG;AACH,MAAM,kBAAkB,GAA2B;IACjD,YAAY;IACZ,MAAM;IACN,QAAQ;IACR,KAAK;IACL,eAAe;IACf,OAAO;CACR,CAAC;AAEF;;;;;GAKG;AACH,MAAM,yBAAyB,GAAwB,IAAI,GAAG,CAC5D,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CACrD,CAAC;AAEF;;;;GAIG;AACH,SAAS,cAAc,CAAC,IAAiB;IACvC,OAAO,QAAQ,IAAI,OAAO,CAAC;AAC7B,CAAC;AAmBD;;;;;;;;;;;;;;GAcG;AACH,SAAS,qBAAqB,CAC5B,cAAiD,EACjD,aAAqC;IAErC,MAAM,WAAW,GAAG,IAAI,GAAG,CACzB,aAAa;SACV,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,kBAAkB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;SACjD,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CACrC,CAAC;IAEF,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;IAC/C,MAAM,OAAO,GAAG,CAAC,GAAW,EAAW,EAAE,CACvC,yBAAyB,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAE9D,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC5D,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;IACtD,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACnD,MAAM,KAAK,GAAG,CAAC,GAAG,WAAW,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;IAEjE,MAAM,kBAAkB,GAAG,MAAM,CAAC,WAAW,CAAC;QAC5C,GAAG,IAAI;QACP,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,IAAI,CAAU,CAAC;KAC1C,CAAC,CAAC;IAEH,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;AAChE,CAAC;AAED;;;;GAIG;AACH,KAAK,UAAU,kBAAkB,CAC/B,UAAkB;IAElB,OAAO,cAAc,CACnB,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,iBAAiB,CAAC,CACzC,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,OAAO,oCAAoC;IACtC,IAAI,GAAG,gCAAgC,CAAC;IACxC,WAAW,GAClB,+FAA+F,CAAC;IAElG;;;;OAIG;IACH,KAAK,CAAC,OAAO,CAAC,GAAqB;QACjC,MAAM,QAAQ,GAAG,MAAM,kBAAkB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAC1D,IAAI,CAAC,QAAQ,EAAE,cAAc,EAAE,CAAC;YAC9B,OAAO,KAAK,CAAC;QACf,CAAC;QACD,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,qBAAqB,CAC9C,QAAQ,CAAC,cAAc,EACvB,GAAG,CAAC,aAAa,CAClB,CAAC;QACF,OAAO,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;IAChD,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,KAAK,CAAC,GAAqB;QAC/B,MAAM,QAAQ,GAAG,MAAM,kBAAkB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAC1D,IAAI,CAAC,QAAQ,EAAE,cAAc,EAAE,CAAC;YAC9B,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;QAC7C,CAAC;QAED,MAAM,EAAE,cAAc,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,qBAAqB,CAC9D,QAAQ,CAAC,cAAc,EACvB,GAAG,CAAC,aAAa,CAClB,CAAC;QAEF,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC/C,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;QAC7C,CAAC;QAED,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvB,KAAK,CAAC,IAAI,CAAC,iBAAiB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACpD,CAAC;QACD,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrB,KAAK,CAAC,IAAI,CAAC,SAAS,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC1C,CAAC;QACD,MAAM,OAAO,GAAG,6BAA6B,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAEhE,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;YACf,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,gBAAgB,iBAAiB,KAAK,OAAO,EAAE,CAAC,CAAC;YAChE,OAAO;gBACL,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,MAAM,EAAE,SAAS;gBACjB,YAAY,EAAE,CAAC,iBAAiB,CAAC;gBACjC,OAAO;aACR,CAAC;QACJ,CAAC;QAED,MAAM,YAAY,GAAmB,EAAE,GAAG,QAAQ,EAAE,cAAc,EAAE,CAAC;QACrE,MAAM,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,iBAAiB,CAAC,EAAE,YAAY,CAAC,CAAC;QAC5E,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC5B,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,MAAM,EAAE,SAAS;YACjB,YAAY,EAAE,CAAC,iBAAiB,CAAC;YACjC,OAAO;SACR,CAAC;IACJ,CAAC;CACF"}
|
package/package.json
CHANGED
|
@@ -84,7 +84,7 @@
|
|
|
84
84
|
"lodash": ">=4.18.1"
|
|
85
85
|
},
|
|
86
86
|
"name": "@codyswann/lisa",
|
|
87
|
-
"version": "2.
|
|
87
|
+
"version": "2.153.0",
|
|
88
88
|
"description": "Claude Code governance framework that applies guardrails, guidance, and automated enforcement to projects",
|
|
89
89
|
"main": "dist/index.js",
|
|
90
90
|
"exports": {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "lisa-openclaw",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.153.0",
|
|
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.
|
|
3
|
+
"version": "2.153.0",
|
|
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.
|
|
3
|
+
"version": "2.153.0",
|
|
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.
|
|
3
|
+
"version": "2.153.0",
|
|
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.
|
|
3
|
+
"version": "2.153.0",
|
|
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"
|