charness 3.1.0 → 3.2.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/.env.example +8 -7
- package/DEVELOPMENT.md +12 -6
- package/MIGRATION_1_TO_2.md +1 -1
- package/MIGRATION_RENAME_TO_CHARNESS.md +133 -0
- package/README.md +75 -581
- package/SETUP.md +539 -0
- package/dist/adapters/claudeCliAdapter.d.ts +1 -1
- package/dist/adapters/claudeCliAdapter.js +1 -1
- package/dist/adapters/claudeJsonStreamAdapter.d.ts.map +1 -1
- package/dist/adapters/claudeJsonStreamAdapter.js +2 -1
- package/dist/adapters/claudeJsonStreamAdapter.js.map +1 -1
- package/dist/adapters/openCodeAdapter.js +1 -1
- package/dist/bot.d.ts.map +1 -1
- package/dist/bot.js +7 -6
- package/dist/bot.js.map +1 -1
- package/dist/cli/bot.d.ts +4 -2
- package/dist/cli/bot.d.ts.map +1 -1
- package/dist/cli/bot.js +11 -3
- package/dist/cli/bot.js.map +1 -1
- package/dist/cli/botEntry.js +3 -1
- package/dist/cli/botEntry.js.map +1 -1
- package/dist/cli/claudeProfiles.d.ts +3 -3
- package/dist/cli/claudeProfiles.js +4 -4
- package/dist/cli/claudeProfiles.js.map +1 -1
- package/dist/cli/envLoader.d.ts +6 -5
- package/dist/cli/envLoader.d.ts.map +1 -1
- package/dist/cli/envLoader.js +8 -27
- package/dist/cli/envLoader.js.map +1 -1
- package/dist/cli/hot.d.ts +2 -2
- package/dist/cli/hot.d.ts.map +1 -1
- package/dist/cli/hot.js +26 -16
- package/dist/cli/hot.js.map +1 -1
- package/dist/cli.js +12 -12
- package/dist/cli.js.map +1 -1
- package/dist/connectors/jira/adf.d.ts +21 -0
- package/dist/connectors/jira/adf.d.ts.map +1 -1
- package/dist/connectors/jira/adf.js +39 -0
- package/dist/connectors/jira/adf.js.map +1 -1
- package/dist/connectors/jira/answerSink.d.ts +20 -3
- package/dist/connectors/jira/answerSink.d.ts.map +1 -1
- package/dist/connectors/jira/answerSink.js +126 -13
- package/dist/connectors/jira/answerSink.js.map +1 -1
- package/dist/connectors/jira/client.d.ts +4 -0
- package/dist/connectors/jira/client.d.ts.map +1 -1
- package/dist/connectors/jira/client.js +3 -0
- package/dist/connectors/jira/client.js.map +1 -1
- package/dist/connectors/jira/config.d.ts +10 -1
- package/dist/connectors/jira/config.d.ts.map +1 -1
- package/dist/connectors/jira/config.js +11 -2
- package/dist/connectors/jira/config.js.map +1 -1
- package/dist/connectors/jira/connector.d.ts +7 -1
- package/dist/connectors/jira/connector.d.ts.map +1 -1
- package/dist/connectors/jira/connector.js +23 -4
- package/dist/connectors/jira/connector.js.map +1 -1
- package/dist/connectors/jira/contextLedger.d.ts +6 -0
- package/dist/connectors/jira/contextLedger.d.ts.map +1 -1
- package/dist/connectors/jira/contextLedger.js +16 -0
- package/dist/connectors/jira/contextLedger.js.map +1 -1
- package/dist/connectors/jira/contextPreamble.d.ts.map +1 -1
- package/dist/connectors/jira/contextPreamble.js +6 -3
- package/dist/connectors/jira/contextPreamble.js.map +1 -1
- package/dist/connectors/jira/inbound.d.ts +60 -7
- package/dist/connectors/jira/inbound.d.ts.map +1 -1
- package/dist/connectors/jira/inbound.js +169 -16
- package/dist/connectors/jira/inbound.js.map +1 -1
- package/dist/connectors/jira/issueBlocks.d.ts +6 -1
- package/dist/connectors/jira/issueBlocks.d.ts.map +1 -1
- package/dist/connectors/jira/issueBlocks.js +5 -1
- package/dist/connectors/jira/issueBlocks.js.map +1 -1
- package/dist/connectors/jira/prompt.d.ts +2 -0
- package/dist/connectors/jira/prompt.d.ts.map +1 -1
- package/dist/connectors/jira/prompt.js +16 -0
- package/dist/connectors/jira/prompt.js.map +1 -1
- package/dist/connectors/jira/trigger.d.ts +12 -3
- package/dist/connectors/jira/trigger.d.ts.map +1 -1
- package/dist/connectors/jira/trigger.js +8 -1
- package/dist/connectors/jira/trigger.js.map +1 -1
- package/dist/connectors/jira/triggerLog.d.ts +10 -3
- package/dist/connectors/jira/triggerLog.d.ts.map +1 -1
- package/dist/connectors/jira/triggerLog.js +18 -2
- package/dist/connectors/jira/triggerLog.js.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/installManager.d.ts +16 -2
- package/dist/installManager.d.ts.map +1 -1
- package/dist/installManager.js +42 -12
- package/dist/installManager.js.map +1 -1
- package/dist/instanceLock.d.ts.map +1 -1
- package/dist/instanceLock.js +10 -8
- package/dist/instanceLock.js.map +1 -1
- package/dist/legacyMigration.d.ts +69 -0
- package/dist/legacyMigration.d.ts.map +1 -0
- package/dist/legacyMigration.js +338 -0
- package/dist/legacyMigration.js.map +1 -0
- package/dist/legacyNames.d.ts +107 -0
- package/dist/legacyNames.d.ts.map +1 -0
- package/dist/legacyNames.js +230 -0
- package/dist/legacyNames.js.map +1 -0
- package/dist/platform/answerSink.d.ts +5 -0
- package/dist/platform/answerSink.d.ts.map +1 -1
- package/dist/platform/answerSink.js.map +1 -1
- package/dist/requests/answerRequest.d.ts +2 -0
- package/dist/requests/answerRequest.d.ts.map +1 -1
- package/dist/requests/answerRequest.js +3 -1
- package/dist/requests/answerRequest.js.map +1 -1
- package/dist/requests/answerStyle.d.ts +11 -0
- package/dist/requests/answerStyle.d.ts.map +1 -0
- package/dist/requests/answerStyle.js +14 -0
- package/dist/requests/answerStyle.js.map +1 -0
- package/dist/requests/answerTail.d.ts.map +1 -1
- package/dist/requests/answerTail.js +2 -0
- package/dist/requests/answerTail.js.map +1 -1
- package/dist/requests/requestHeader.d.ts.map +1 -1
- package/dist/requests/requestHeader.js +3 -0
- package/dist/requests/requestHeader.js.map +1 -1
- package/dist/requests/requestLedger.js +1 -1
- package/dist/requests/requestLedger.js.map +1 -1
- package/dist/requests/types.d.ts +3 -1
- package/dist/requests/types.d.ts.map +1 -1
- package/dist/scheduler/mcpSurface.d.ts +9 -1
- package/dist/scheduler/mcpSurface.d.ts.map +1 -1
- package/dist/scheduler/mcpSurface.js +45 -12
- package/dist/scheduler/mcpSurface.js.map +1 -1
- package/dist/state.d.ts +3 -1
- package/dist/state.d.ts.map +1 -1
- package/dist/state.js +5 -2
- package/dist/state.js.map +1 -1
- package/dist/utils/claudeProfiles.d.ts +7 -0
- package/dist/utils/claudeProfiles.d.ts.map +1 -1
- package/dist/utils/claudeProfiles.js +19 -0
- package/dist/utils/claudeProfiles.js.map +1 -1
- package/dist/utils/openCodeCompactPlugin.d.ts +11 -3
- package/dist/utils/openCodeCompactPlugin.d.ts.map +1 -1
- package/dist/utils/openCodeCompactPlugin.js +37 -5
- package/dist/utils/openCodeCompactPlugin.js.map +1 -1
- package/examples/.env.example +7 -7
- package/examples/docker-compose.yml +15 -14
- package/package.json +3 -1
package/dist/cli/bot.d.ts
CHANGED
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
* `process.env.*` values at top-level (TELEGRAM_BOT_TOKEN, WORK_ROOT,
|
|
11
11
|
* ALLOWED_GROUP_ID, etc.).
|
|
12
12
|
* 2. Default `WORK_ROOT` to `process.cwd()` if still unset. This is the
|
|
13
|
-
* normal path: start `
|
|
13
|
+
* normal path: start `charness` from the parent folder containing
|
|
14
14
|
* the projects/topics you want to bind.
|
|
15
15
|
* 3. Validate `WORK_ROOT` resolves to an existing directory — fail fast
|
|
16
16
|
* with a clear message if not.
|
|
@@ -23,5 +23,7 @@
|
|
|
23
23
|
* the env load ran, and we'd see undefined tokens. `await import(...)`
|
|
24
24
|
* defers binding until after env is populated.
|
|
25
25
|
*/
|
|
26
|
-
export declare function runBot(
|
|
26
|
+
export declare function runBot(options?: {
|
|
27
|
+
isHotWorker?: boolean;
|
|
28
|
+
}): Promise<void>;
|
|
27
29
|
//# sourceMappingURL=bot.d.ts.map
|
package/dist/cli/bot.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bot.d.ts","sourceRoot":"","sources":["../../src/cli/bot.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"bot.d.ts","sourceRoot":"","sources":["../../src/cli/bot.ts"],"names":[],"mappings":"AAQA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAsB,MAAM,CAAC,OAAO,GAAE;IAAE,WAAW,CAAC,EAAE,OAAO,CAAA;CAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CA+CnF"}
|
package/dist/cli/bot.js
CHANGED
|
@@ -39,6 +39,8 @@ const connectorGuards_1 = require("./connectorGuards");
|
|
|
39
39
|
const instanceLock_1 = require("../instanceLock");
|
|
40
40
|
const state_1 = require("../state");
|
|
41
41
|
const consoleFileTap_1 = require("../utils/consoleFileTap");
|
|
42
|
+
const legacyNames_1 = require("../legacyNames");
|
|
43
|
+
const legacyMigration_1 = require("../legacyMigration");
|
|
42
44
|
/**
|
|
43
45
|
* @description Shared bot startup used by the public no-arg CLI and the
|
|
44
46
|
* internal hot-worker entry.
|
|
@@ -51,7 +53,7 @@ const consoleFileTap_1 = require("../utils/consoleFileTap");
|
|
|
51
53
|
* `process.env.*` values at top-level (TELEGRAM_BOT_TOKEN, WORK_ROOT,
|
|
52
54
|
* ALLOWED_GROUP_ID, etc.).
|
|
53
55
|
* 2. Default `WORK_ROOT` to `process.cwd()` if still unset. This is the
|
|
54
|
-
* normal path: start `
|
|
56
|
+
* normal path: start `charness` from the parent folder containing
|
|
55
57
|
* the projects/topics you want to bind.
|
|
56
58
|
* 3. Validate `WORK_ROOT` resolves to an existing directory — fail fast
|
|
57
59
|
* with a clear message if not.
|
|
@@ -64,7 +66,7 @@ const consoleFileTap_1 = require("../utils/consoleFileTap");
|
|
|
64
66
|
* the env load ran, and we'd see undefined tokens. `await import(...)`
|
|
65
67
|
* defers binding until after env is populated.
|
|
66
68
|
*/
|
|
67
|
-
async function runBot() {
|
|
69
|
+
async function runBot(options = {}) {
|
|
68
70
|
// The connector guards wrap the env load: a breach exits here, before the
|
|
69
71
|
// console tee, the lock or the bot module can do anything (Jira plan J3).
|
|
70
72
|
const { loaded } = (0, connectorGuards_1.loadEnvWithConnectorGuards)();
|
|
@@ -74,7 +76,7 @@ async function runBot() {
|
|
|
74
76
|
// preserved. Best-effort; never throws into a write.
|
|
75
77
|
(0, consoleFileTap_1.installConsoleFileTap)((0, state_1.resolveDataDir)());
|
|
76
78
|
if (loaded.length === 0) {
|
|
77
|
-
process.stderr.write(`Warning: no .env file found in $PWD or ~/.config/
|
|
79
|
+
process.stderr.write(`Warning: no .env file found in $PWD or ~/.config/charness/. ` +
|
|
78
80
|
`Required env (TELEGRAM_BOT_TOKEN) ` +
|
|
79
81
|
`must come from the shell instead. ALLOWED_GROUP_ID is optional ` +
|
|
80
82
|
`(auto-pairs on first contact if unset; access = the group's admins).\n`);
|
|
@@ -90,6 +92,12 @@ async function runBot() {
|
|
|
90
92
|
}
|
|
91
93
|
await (0, instanceLock_1.acquireLock)();
|
|
92
94
|
(0, instanceLock_1.installLockCleanupHandlers)();
|
|
95
|
+
// The pre-rename config / data dirs and keys move to the Charness names here: a COLD start, under the
|
|
96
|
+
// lock, before the bot module (and its state) loads. A hot worker's reload never migrates. What it
|
|
97
|
+
// could not move is announced next, once — after the tee, so the lines reach the bot log.
|
|
98
|
+
if (!options.isHotWorker)
|
|
99
|
+
(0, legacyMigration_1.migrateLegacyNames)();
|
|
100
|
+
(0, legacyNames_1.warnLegacyNamesAtBoot)();
|
|
93
101
|
// Lazy import so env is fully populated before the bot module's top-level
|
|
94
102
|
// `process.env.*` reads run. See file-level docstring for rationale.
|
|
95
103
|
const { startBot } = await Promise.resolve().then(() => __importStar(require('../bot')));
|
package/dist/cli/bot.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bot.js","sourceRoot":"","sources":["../../src/cli/bot.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"bot.js","sourceRoot":"","sources":["../../src/cli/bot.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiCA,wBA+CC;AAhFD,uCAAyB;AACzB,uDAA+D;AAC/D,kDAA0E;AAC1E,oCAA0C;AAC1C,4DAAgE;AAChE,gDAAuD;AACvD,wDAAwD;AAExD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACI,KAAK,UAAU,MAAM,CAAC,UAAqC,EAAE;IAClE,0EAA0E;IAC1E,0EAA0E;IAC1E,MAAM,EAAE,MAAM,EAAE,GAAG,IAAA,4CAA0B,GAAE,CAAC;IAEhD,wEAAwE;IACxE,4EAA4E;IAC5E,6EAA6E;IAC7E,qDAAqD;IACrD,IAAA,sCAAqB,EAAC,IAAA,sBAAc,GAAE,CAAC,CAAC;IAExC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,8DAA8D;YAC5D,oCAAoC;YACpC,iEAAiE;YACjE,wEAAwE,CAC3E,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;QAC3B,OAAO,CAAC,GAAG,CAAC,SAAS,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;QACtC,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,4BAA4B,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,CACtD,CAAC;IACJ,CAAC;IACD,MAAM,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC;IACjC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;QACzD,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,mDAAmD,EAAE,IAAI,CAC1D,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,IAAA,0BAAW,GAAE,CAAC;IACpB,IAAA,yCAA0B,GAAE,CAAC;IAE7B,sGAAsG;IACtG,mGAAmG;IACnG,0FAA0F;IAC1F,IAAI,CAAC,OAAO,CAAC,WAAW;QAAE,IAAA,oCAAkB,GAAE,CAAC;IAC/C,IAAA,mCAAqB,GAAE,CAAC;IAExB,0EAA0E;IAC1E,qEAAqE;IACrE,MAAM,EAAE,QAAQ,EAAE,GAAG,wDAAa,QAAQ,GAAC,CAAC;IAC5C,MAAM,QAAQ,EAAE,CAAC;AACnB,CAAC"}
|
package/dist/cli/botEntry.js
CHANGED
|
@@ -4,7 +4,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
4
4
|
const applyDnsFix_1 = require("./applyDnsFix");
|
|
5
5
|
const bot_1 = require("./bot");
|
|
6
6
|
(0, applyDnsFix_1.applyDnsFix)();
|
|
7
|
-
(
|
|
7
|
+
// The nodemon-restarted worker of `charness hot`: its supervisor (maybe pre-rename code) and the running
|
|
8
|
+
// agents hold paths in DATA_DIR, so a worker reload never migrates the legacy names.
|
|
9
|
+
(0, bot_1.runBot)({ isHotWorker: true }).catch((error) => {
|
|
8
10
|
console.error(error);
|
|
9
11
|
process.exit(1);
|
|
10
12
|
});
|
package/dist/cli/botEntry.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"botEntry.js","sourceRoot":"","sources":["../../src/cli/botEntry.ts"],"names":[],"mappings":";;;AAEA,+CAA4C;AAC5C,+BAA+B;AAE/B,IAAA,yBAAW,GAAE,CAAC;AAEd,IAAA,YAAM,
|
|
1
|
+
{"version":3,"file":"botEntry.js","sourceRoot":"","sources":["../../src/cli/botEntry.ts"],"names":[],"mappings":";;;AAEA,+CAA4C;AAC5C,+BAA+B;AAE/B,IAAA,yBAAW,GAAE,CAAC;AAEd,yGAAyG;AACzG,qFAAqF;AACrF,IAAA,YAAM,EAAC,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IAC5C,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACrB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @description `
|
|
2
|
+
* @description `charness claude-profiles [--best] [--model <name>] [--json]` — the command-line twin of the
|
|
3
3
|
* `claude_profiles` MCP tool, for a worker that has no MCP (a shell script, a child started by hand): which
|
|
4
4
|
* Claude account profile a new process should run on. It reads the bot's cache off `DATA_DIR/state.json`
|
|
5
5
|
* (`utils/claudeUsage.ts`; the bot polls every profile's usage on a timer, so the figures are at most a poll
|
|
6
6
|
* old) and never opens the `StateStore` (that would migrate and lock a live bot's file) nor the network.
|
|
7
7
|
*
|
|
8
8
|
* --best print ONLY the recommended profile's config directory — an EMPTY line for the default
|
|
9
|
-
* profile (set nothing) — so `CLAUDE_CONFIG_DIR="$(
|
|
9
|
+
* profile (set nothing) — so `CLAUDE_CONFIG_DIR="$(charness claude-profiles --best)"`
|
|
10
10
|
* works as is; exit 1 when no profile is eligible
|
|
11
11
|
* --model <name> the model the child will run (`fable` → the Fable weekly window counts)
|
|
12
12
|
* --json the full report as JSON (the MCP tool's shape)
|
|
13
13
|
*
|
|
14
14
|
* Without a flag: one human line per profile. `DATA_DIR` comes from the environment the bot itself reads
|
|
15
|
-
* (`~/.config/
|
|
15
|
+
* (`~/.config/charness/.env`, `$PWD/.env`, or `ENV_FILE`).
|
|
16
16
|
*/
|
|
17
17
|
import { type ClaudeProfileReportEntry } from '../utils/claudeUsage';
|
|
18
18
|
export interface ClaudeProfilesCliArgs {
|
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/**
|
|
3
|
-
* @description `
|
|
3
|
+
* @description `charness claude-profiles [--best] [--model <name>] [--json]` — the command-line twin of the
|
|
4
4
|
* `claude_profiles` MCP tool, for a worker that has no MCP (a shell script, a child started by hand): which
|
|
5
5
|
* Claude account profile a new process should run on. It reads the bot's cache off `DATA_DIR/state.json`
|
|
6
6
|
* (`utils/claudeUsage.ts`; the bot polls every profile's usage on a timer, so the figures are at most a poll
|
|
7
7
|
* old) and never opens the `StateStore` (that would migrate and lock a live bot's file) nor the network.
|
|
8
8
|
*
|
|
9
9
|
* --best print ONLY the recommended profile's config directory — an EMPTY line for the default
|
|
10
|
-
* profile (set nothing) — so `CLAUDE_CONFIG_DIR="$(
|
|
10
|
+
* profile (set nothing) — so `CLAUDE_CONFIG_DIR="$(charness claude-profiles --best)"`
|
|
11
11
|
* works as is; exit 1 when no profile is eligible
|
|
12
12
|
* --model <name> the model the child will run (`fable` → the Fable weekly window counts)
|
|
13
13
|
* --json the full report as JSON (the MCP tool's shape)
|
|
14
14
|
*
|
|
15
15
|
* Without a flag: one human line per profile. `DATA_DIR` comes from the environment the bot itself reads
|
|
16
|
-
* (`~/.config/
|
|
16
|
+
* (`~/.config/charness/.env`, `$PWD/.env`, or `ENV_FILE`).
|
|
17
17
|
*/
|
|
18
18
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
19
19
|
exports.parseClaudeProfilesCliArgs = parseClaudeProfilesCliArgs;
|
|
@@ -77,7 +77,7 @@ async function runClaudeProfilesCli(argv, io = {}) {
|
|
|
77
77
|
const stderr = io.stderr ?? ((text) => process.stderr.write(text));
|
|
78
78
|
const parsed = parseClaudeProfilesCliArgs(argv);
|
|
79
79
|
if (!parsed.ok) {
|
|
80
|
-
stderr(`${parsed.error}\nUsage:
|
|
80
|
+
stderr(`${parsed.error}\nUsage: charness claude-profiles [--best] [--model <name>] [--json]\n`);
|
|
81
81
|
return 2;
|
|
82
82
|
}
|
|
83
83
|
const { args } = parsed;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claudeProfiles.js","sourceRoot":"","sources":["../../src/cli/claudeProfiles.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"claudeProfiles.js","sourceRoot":"","sources":["../../src/cli/claudeProfiles.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/envLoader.d.ts
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @description Path to the per-user global config file.
|
|
3
3
|
*
|
|
4
|
-
* Prefers the canonical `~/.config/
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
4
|
+
* Prefers the canonical `~/.config/charness/.env`; falls back to the first
|
|
5
|
+
* existing of the earlier releases' `~/.config/telegramcode/.env` and
|
|
6
|
+
* `~/.config/telegram-code/.env` (the names live in `legacyNames.ts`, which also
|
|
7
|
+
* announces the fallback at boot). When none exists the canonical path is
|
|
8
|
+
* returned, so callers report the location a fresh install should use.
|
|
8
9
|
*
|
|
9
10
|
* Resolved lazily per call — tests may swap `HOME` between cases.
|
|
10
11
|
*/
|
|
@@ -26,7 +27,7 @@ export declare function localEnvPath(localDirectory?: string): string;
|
|
|
26
27
|
* then forces an override only for keys it explicitly sets.
|
|
27
28
|
*
|
|
28
29
|
* Returns the list of paths actually read, in load order. Useful for the
|
|
29
|
-
* `
|
|
30
|
+
* `charness` startup banner and for test assertions.
|
|
30
31
|
*/
|
|
31
32
|
export declare function loadEnvFiles(localDirectory?: string): {
|
|
32
33
|
loaded: string[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"envLoader.d.ts","sourceRoot":"","sources":["../../src/cli/envLoader.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"envLoader.d.ts","sourceRoot":"","sources":["../../src/cli/envLoader.ts"],"names":[],"mappings":"AAMA;;;;;;;;;;GAUG;AACH,wBAAgB,aAAa,IAAI,MAAM,CAEtC;AAED,2FAA2F;AAC3F,wBAAgB,YAAY,CAAC,cAAc,SAAgB,GAAG,MAAM,CAEnE;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,YAAY,CAAC,cAAc,SAAgB,GAAG;IAAE,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,CAiCjF"}
|
package/dist/cli/envLoader.js
CHANGED
|
@@ -38,37 +38,22 @@ exports.localEnvPath = localEnvPath;
|
|
|
38
38
|
exports.loadEnvFiles = loadEnvFiles;
|
|
39
39
|
const fs = __importStar(require("fs"));
|
|
40
40
|
const path = __importStar(require("path"));
|
|
41
|
-
const os = __importStar(require("os"));
|
|
42
41
|
const dotenv = __importStar(require("dotenv"));
|
|
43
42
|
const agentEnvironment_1 = require("../utils/agentEnvironment");
|
|
44
|
-
|
|
45
|
-
const configDirName = 'telegramcode';
|
|
46
|
-
/**
|
|
47
|
-
* Pre-rename config dir name — still honoured as a fallback so installs
|
|
48
|
-
* that predate the `telegramcode` rename keep working without moving files.
|
|
49
|
-
*/
|
|
50
|
-
const legacyConfigDirName = 'telegram-code';
|
|
51
|
-
function buildGlobalEnvPath(dirName) {
|
|
52
|
-
return path.join(os.homedir(), '.config', dirName, '.env');
|
|
53
|
-
}
|
|
43
|
+
const legacyNames_1 = require("../legacyNames");
|
|
54
44
|
/**
|
|
55
45
|
* @description Path to the per-user global config file.
|
|
56
46
|
*
|
|
57
|
-
* Prefers the canonical `~/.config/
|
|
58
|
-
*
|
|
59
|
-
*
|
|
60
|
-
*
|
|
47
|
+
* Prefers the canonical `~/.config/charness/.env`; falls back to the first
|
|
48
|
+
* existing of the earlier releases' `~/.config/telegramcode/.env` and
|
|
49
|
+
* `~/.config/telegram-code/.env` (the names live in `legacyNames.ts`, which also
|
|
50
|
+
* announces the fallback at boot). When none exists the canonical path is
|
|
51
|
+
* returned, so callers report the location a fresh install should use.
|
|
61
52
|
*
|
|
62
53
|
* Resolved lazily per call — tests may swap `HOME` between cases.
|
|
63
54
|
*/
|
|
64
55
|
function globalEnvPath() {
|
|
65
|
-
|
|
66
|
-
if (fs.existsSync(canonicalPath))
|
|
67
|
-
return canonicalPath;
|
|
68
|
-
const legacyPath = buildGlobalEnvPath(legacyConfigDirName);
|
|
69
|
-
if (fs.existsSync(legacyPath))
|
|
70
|
-
return legacyPath;
|
|
71
|
-
return canonicalPath;
|
|
56
|
+
return (0, legacyNames_1.resolveGlobalConfigEnvPath)();
|
|
72
57
|
}
|
|
73
58
|
/** @description Path to the local `.env` for a supplied directory (defaults to `$PWD`). */
|
|
74
59
|
function localEnvPath(localDirectory = process.cwd()) {
|
|
@@ -89,7 +74,7 @@ function localEnvPath(localDirectory = process.cwd()) {
|
|
|
89
74
|
* then forces an override only for keys it explicitly sets.
|
|
90
75
|
*
|
|
91
76
|
* Returns the list of paths actually read, in load order. Useful for the
|
|
92
|
-
* `
|
|
77
|
+
* `charness` startup banner and for test assertions.
|
|
93
78
|
*/
|
|
94
79
|
function loadEnvFiles(localDirectory = process.cwd()) {
|
|
95
80
|
// An isolated instance (Jira connector plan J3, D7): ONLY its own file — no
|
|
@@ -117,10 +102,6 @@ function loadEnvFiles(localDirectory = process.cwd()) {
|
|
|
117
102
|
if (fs.existsSync(globalPath)) {
|
|
118
103
|
dotenv.config({ path: globalPath, override: false });
|
|
119
104
|
loaded.push(globalPath);
|
|
120
|
-
if (globalPath === buildGlobalEnvPath(legacyConfigDirName)) {
|
|
121
|
-
process.stderr.write(`Using legacy config ${globalPath} — preferred location: ` +
|
|
122
|
-
`~/.config/${configDirName}/.env\n`);
|
|
123
|
-
}
|
|
124
105
|
}
|
|
125
106
|
const localPath = localEnvPath(localDirectory);
|
|
126
107
|
if (fs.existsSync(localPath)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"envLoader.js","sourceRoot":"","sources":["../../src/cli/envLoader.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"envLoader.js","sourceRoot":"","sources":["../../src/cli/envLoader.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiBA,sCAEC;AAGD,oCAEC;AAmBD,oCAiCC;AA5ED,uCAAyB;AACzB,2CAA6B;AAC7B,+CAAiC;AACjC,gEAAoE;AACpE,gDAA4D;AAE5D;;;;;;;;;;GAUG;AACH,SAAgB,aAAa;IAC3B,OAAO,IAAA,wCAA0B,GAAE,CAAC;AACtC,CAAC;AAED,2FAA2F;AAC3F,SAAgB,YAAY,CAAC,cAAc,GAAG,OAAO,CAAC,GAAG,EAAE;IACzD,OAAO,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;AAC3C,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,SAAgB,YAAY,CAAC,cAAc,GAAG,OAAO,CAAC,GAAG,EAAE;IACzD,4EAA4E;IAC5E,0EAA0E;IAC1E,uDAAuD;IACvD,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC;IACrC,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,2CAA2C,OAAO,IAAI,CAAC,CAAC;QACvG,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,4BAA4B,OAAO,EAAE,CAAC,CAAC;QACpF,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE;YAAE,MAAM,IAAI,KAAK,CAAC,mCAAmC,OAAO,EAAE,CAAC,CAAC;QAClG,6EAA6E;QAC7E,iEAAiE;QACjE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;QAC3E,IAAI,KAAK;YAAE,MAAM,IAAI,KAAK,CAAC,+BAA+B,OAAO,KAAK,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC;QACxF,gFAAgF;QAChF,IAAA,0CAAuB,EAAC,MAAM,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,CAAC;QACnD,OAAO,EAAE,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;IAC/B,CAAC;IAED,MAAM,MAAM,GAAa,EAAE,CAAC;IAE5B,MAAM,UAAU,GAAG,aAAa,EAAE,CAAC;IACnC,IAAI,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC9B,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;QACrD,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC1B,CAAC;IAED,MAAM,SAAS,GAAG,YAAY,CAAC,cAAc,CAAC,CAAC;IAC/C,IAAI,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC7B,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;QACnD,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACzB,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,CAAC;AACpB,CAAC"}
|
package/dist/cli/hot.d.ts
CHANGED
|
@@ -6,7 +6,7 @@ interface HotOpenCodeDeps {
|
|
|
6
6
|
}
|
|
7
7
|
type HotChildName = 'tsc' | 'nodemon';
|
|
8
8
|
/**
|
|
9
|
-
* @description Wrapper-entry for `
|
|
9
|
+
* @description Wrapper-entry for `charness hot` — hot-reload mode for
|
|
10
10
|
* the global terminal bin.
|
|
11
11
|
*
|
|
12
12
|
* **What it does:** starts `tsc -w` from the project root, then starts
|
|
@@ -20,7 +20,7 @@ type HotChildName = 'tsc' | 'nodemon';
|
|
|
20
20
|
* nodemon's worker subtree and in-flight turns survive reloads.
|
|
21
21
|
*
|
|
22
22
|
* **Why it lives in the bin** (not only as `yarn hot`): the user runs
|
|
23
|
-
* `
|
|
23
|
+
* `charness` as a globally-installed `npm link` symlink, so they don't
|
|
24
24
|
* have a yarn project in front of them. Exposing hot reload as a
|
|
25
25
|
* subcommand makes the same workflow reachable from any CWD — we just
|
|
26
26
|
* resolve the project root from the bin's own realpath. `yarn hot` in the
|
package/dist/cli/hot.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hot.d.ts","sourceRoot":"","sources":["../../src/cli/hot.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"hot.d.ts","sourceRoot":"","sources":["../../src/cli/hot.ts"],"names":[],"mappings":"AAiBA,UAAU,eAAe;IACvB,gBAAgB,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC;IAChD,oBAAoB,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1C,kBAAkB,EAAE,MAAM,IAAI,CAAC;IAC/B,YAAY,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CACzC;AAED,KAAK,YAAY,GAAG,KAAK,GAAG,SAAS,CAAC;AAMtC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AACH,wBAAsB,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAiK5C;AAED;;;;;GAKG;AACH,wBAAgB,yBAAyB,CACvC,SAAS,EAAE,YAAY,EACvB,aAAa,EAAE,MAAM,CAAC,OAAO,GAC5B,MAAM,CAAC,OAAO,CAEhB;AAED,yEAAyE;AACzE,wBAAgB,6BAA6B,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAEzE;AAED,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,OAAO,OAAO,CAAC,QAAQ,GAAG,OAAO,CAElF;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAE1D;AAED;;;;;GAKG;AACH,wBAAsB,wBAAwB,CAC5C,IAAI,GAAE,eAKL,GACA,OAAO,CAAC,OAAO,CAAC,CAclB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,MAAM,CAAC,UAAU,EAC1B,SAAS,EAAE,MAAM,GAChB,MAAM,CAAC,UAAU,CAQnB"}
|
package/dist/cli/hot.js
CHANGED
|
@@ -46,11 +46,13 @@ const child_process_1 = require("child_process");
|
|
|
46
46
|
const connectorGuards_1 = require("./connectorGuards");
|
|
47
47
|
const connectorSet_1 = require("../platform/connectorSet");
|
|
48
48
|
const installManager_1 = require("../installManager");
|
|
49
|
+
const legacyNames_1 = require("../legacyNames");
|
|
50
|
+
const legacyMigration_1 = require("../legacyMigration");
|
|
49
51
|
const tscWatchCompleteMarker = 'Watching for file changes.';
|
|
50
52
|
const tscWatchReadyMarker = `Found 0 errors. ${tscWatchCompleteMarker}`;
|
|
51
53
|
const tscWatchTailLength = tscWatchReadyMarker.length - 1;
|
|
52
54
|
/**
|
|
53
|
-
* @description Wrapper-entry for `
|
|
55
|
+
* @description Wrapper-entry for `charness hot` — hot-reload mode for
|
|
54
56
|
* the global terminal bin.
|
|
55
57
|
*
|
|
56
58
|
* **What it does:** starts `tsc -w` from the project root, then starts
|
|
@@ -64,7 +66,7 @@ const tscWatchTailLength = tscWatchReadyMarker.length - 1;
|
|
|
64
66
|
* nodemon's worker subtree and in-flight turns survive reloads.
|
|
65
67
|
*
|
|
66
68
|
* **Why it lives in the bin** (not only as `yarn hot`): the user runs
|
|
67
|
-
* `
|
|
69
|
+
* `charness` as a globally-installed `npm link` symlink, so they don't
|
|
68
70
|
* have a yarn project in front of them. Exposing hot reload as a
|
|
69
71
|
* subcommand makes the same workflow reachable from any CWD — we just
|
|
70
72
|
* resolve the project root from the bin's own realpath. `yarn hot` in the
|
|
@@ -90,12 +92,12 @@ const tscWatchTailLength = tscWatchReadyMarker.length - 1;
|
|
|
90
92
|
*/
|
|
91
93
|
async function runHot() {
|
|
92
94
|
// The operator's real launch directory (e.g. `~/src`). Captured BEFORE any
|
|
93
|
-
// spawn so it reflects where `
|
|
95
|
+
// spawn so it reflects where `charness hot` was invoked — the worker
|
|
94
96
|
// can't derive it later, because nodemon runs it with cwd = projectRoot.
|
|
95
97
|
const launchCwd = process.cwd();
|
|
96
98
|
const projectRoot = resolveProjectRoot();
|
|
97
99
|
if (!checkIsHotModeSupported(process.platform)) {
|
|
98
|
-
process.stderr.write('
|
|
100
|
+
process.stderr.write('charness hot: Windows is not supported because nodemon cannot gracefully drain its worker tree.\n');
|
|
99
101
|
process.exit(1);
|
|
100
102
|
return;
|
|
101
103
|
}
|
|
@@ -103,15 +105,21 @@ async function runHot() {
|
|
|
103
105
|
// WORK_ROOT. This is load-bearing when the repo .env selects a custom port.
|
|
104
106
|
// The connector guards wrap it, as in the plain start (Jira plan J3).
|
|
105
107
|
(0, connectorGuards_1.loadEnvWithConnectorGuards)(projectRoot);
|
|
108
|
+
// The supervisor's start is the cold start of a hot-mode instance (its workers never migrate): move the
|
|
109
|
+
// pre-rename config / data dirs now, under the instance lock, before anything below resolves a path in them.
|
|
110
|
+
(0, legacyMigration_1.migrateLegacyNamesUnderLock)();
|
|
106
111
|
// Only nodemon's replaceable worker externalizes later server generations.
|
|
107
112
|
// The long-lived supervisor owns the initial server directly.
|
|
108
|
-
|
|
109
|
-
|
|
113
|
+
(0, installManager_1.clearOpenCodeExternalHostEnv)();
|
|
114
|
+
(0, installManager_1.setOpenCodeOwnershipFileEnv)((0, installManager_1.getDefaultOpenCodeOwnershipFilePath)(projectRoot));
|
|
115
|
+
// After the handshake variables above are set: what is left to announce is the
|
|
116
|
+
// default data dir, not a legacy variable inherited from an older supervisor.
|
|
117
|
+
(0, legacyNames_1.warnLegacyNamesAtBoot)();
|
|
110
118
|
const distEntry = path.join(projectRoot, 'dist', 'cli', 'botEntry.js');
|
|
111
119
|
const tscBin = localBin(projectRoot, 'tsc');
|
|
112
120
|
const nodemonBin = localBin(projectRoot, 'nodemon');
|
|
113
121
|
if (!fs.existsSync(tscBin) || !fs.existsSync(nodemonBin)) {
|
|
114
|
-
process.stderr.write(`
|
|
122
|
+
process.stderr.write(`charness hot: missing devDependencies in ${projectRoot}.\n` +
|
|
115
123
|
` expected: ${tscBin}\n` +
|
|
116
124
|
` expected: ${nodemonBin}\n` +
|
|
117
125
|
`Run \`yarn install\` (or \`npm install\`) in the project root and retry.\n`);
|
|
@@ -126,9 +134,9 @@ async function runHot() {
|
|
|
126
134
|
const connectors = (0, connectorSet_1.parseConnectors)(process.env.CONNECTORS);
|
|
127
135
|
if (connectors.ok && connectors.connectors.includes('telegram'))
|
|
128
136
|
await prepareHotOpenCodeServer();
|
|
129
|
-
process.stderr.write(`
|
|
130
|
-
`
|
|
131
|
-
`
|
|
137
|
+
process.stderr.write(`charness hot: project=${projectRoot}\n` +
|
|
138
|
+
`charness hot: starting \`tsc -w\`; nodemon starts after the first completed compile.\n` +
|
|
139
|
+
`charness hot: Ctrl-C stops both watchers.\n`);
|
|
132
140
|
// Forward terminating signals. We deliberately do NOT re-raise on
|
|
133
141
|
// ourselves after children exit — once both watchers are down the wrapper
|
|
134
142
|
// resolves normally and Node exits with the recorded code. Re-raising
|
|
@@ -169,13 +177,13 @@ async function runHot() {
|
|
|
169
177
|
isSettled = true;
|
|
170
178
|
children.delete(child);
|
|
171
179
|
if (error) {
|
|
172
|
-
process.stderr.write(`
|
|
180
|
+
process.stderr.write(`charness hot: child error (${childName}): ${error.message}\n`);
|
|
173
181
|
if (!shuttingDown && finalCode === 0)
|
|
174
182
|
finalCode = 1;
|
|
175
183
|
}
|
|
176
184
|
else {
|
|
177
185
|
const label = childName === 'tsc' ? 'tsc -w' : 'nodemon';
|
|
178
|
-
process.stderr.write(`
|
|
186
|
+
process.stderr.write(`charness hot: ${label} exited ` +
|
|
179
187
|
`(code=${code ?? 'null'}, signal=${signal ?? 'null'})\n`);
|
|
180
188
|
if (!shuttingDown && finalCode === 0) {
|
|
181
189
|
finalCode = getUnexpectedHotChildExitCode(code);
|
|
@@ -217,7 +225,7 @@ async function runHot() {
|
|
|
217
225
|
return;
|
|
218
226
|
tscOutputTail = '';
|
|
219
227
|
if (!isWatchReady) {
|
|
220
|
-
process.stderr.write('
|
|
228
|
+
process.stderr.write('charness hot: compile has TypeScript errors; nodemon is waiting for a clean build. ' +
|
|
221
229
|
'Fix the errors and save.\n');
|
|
222
230
|
return;
|
|
223
231
|
}
|
|
@@ -225,7 +233,7 @@ async function runHot() {
|
|
|
225
233
|
startNodemon();
|
|
226
234
|
return;
|
|
227
235
|
}
|
|
228
|
-
process.stderr.write('
|
|
236
|
+
process.stderr.write('charness hot: clean compile produced no dist worker entry. ' +
|
|
229
237
|
'Check the TypeScript output path and save; nodemon will keep waiting.\n');
|
|
230
238
|
});
|
|
231
239
|
await childrenStopped;
|
|
@@ -273,7 +281,7 @@ async function prepareHotOpenCodeServer(deps = {
|
|
|
273
281
|
// extra stop also covers failures outside that startup window.
|
|
274
282
|
deps.stopOpenCodeServer();
|
|
275
283
|
const message = error instanceof Error ? error.message : error?.toString() ?? 'unknown error';
|
|
276
|
-
deps.writeWarning(`
|
|
284
|
+
deps.writeWarning(`charness hot: OpenCode pre-start failed: ${message}\n`);
|
|
277
285
|
return false;
|
|
278
286
|
}
|
|
279
287
|
}
|
|
@@ -295,7 +303,9 @@ function buildHotWorkerEnv(baseEnv, launchCwd) {
|
|
|
295
303
|
return {
|
|
296
304
|
...baseEnv,
|
|
297
305
|
WORK_ROOT: baseEnv.WORK_ROOT || launchCwd,
|
|
298
|
-
|
|
306
|
+
// Both names: this supervisor may outlive a rename of the worker's code.
|
|
307
|
+
[legacyNames_1.hotReloadEnvName.current]: installManager_1.openCodeExternalHostEnvValue,
|
|
308
|
+
[legacyNames_1.hotReloadEnvName.legacy]: installManager_1.openCodeExternalHostEnvValue,
|
|
299
309
|
};
|
|
300
310
|
}
|
|
301
311
|
/**
|
package/dist/cli/hot.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hot.js","sourceRoot":"","sources":["../../src/cli/hot.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"hot.js","sourceRoot":"","sources":["../../src/cli/hot.ts"],"names":[],"mappings":"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"}
|
package/dist/cli.js
CHANGED
|
@@ -41,7 +41,7 @@ const bot_1 = require("./cli/bot");
|
|
|
41
41
|
const hot_1 = require("./cli/hot");
|
|
42
42
|
(0, applyDnsFix_1.applyDnsFix)();
|
|
43
43
|
/**
|
|
44
|
-
* @description Print the package version to stdout for `
|
|
44
|
+
* @description Print the package version to stdout for `charness --version`.
|
|
45
45
|
*
|
|
46
46
|
* Reads it from the shipped package.json (`__dirname` is `dist/`, so the file
|
|
47
47
|
* sits one level up) — the same idiom the `/version` bot command uses — so the
|
|
@@ -62,23 +62,23 @@ function printVersion() {
|
|
|
62
62
|
* @description Print top-level usage to stderr.
|
|
63
63
|
*
|
|
64
64
|
* Keeps the message short and copy-pastable. Detailed docs live in README;
|
|
65
|
-
* we surface just enough here for someone running `
|
|
65
|
+
* we surface just enough here for someone running `charness --help`
|
|
66
66
|
* cold to know what to try next.
|
|
67
67
|
*/
|
|
68
68
|
function printUsage() {
|
|
69
69
|
process.stderr.write(`Usage:\n` +
|
|
70
|
-
`
|
|
71
|
-
`
|
|
72
|
-
`
|
|
73
|
-
`
|
|
74
|
-
`
|
|
75
|
-
`
|
|
76
|
-
`
|
|
77
|
-
`
|
|
78
|
-
`
|
|
70
|
+
` charness Start the bot (WORK_ROOT defaults to $PWD)\n` +
|
|
71
|
+
` charness hot Hot-reload dev mode: tsc -w + nodemon on dist/\n` +
|
|
72
|
+
` (rebuilds + restarts the bot on src/ edits;\n` +
|
|
73
|
+
` in-flight agent sessions are reattached)\n` +
|
|
74
|
+
` charness claude-profiles Claude account profiles + usage from the bot's cache;\n` +
|
|
75
|
+
` --best prints the CLAUDE_CONFIG_DIR to launch under\n` +
|
|
76
|
+
` (empty = default), --model <name>, --json\n` +
|
|
77
|
+
` charness --help, -h Show this help\n` +
|
|
78
|
+
` charness --version, -v Print the version\n` +
|
|
79
79
|
`\n` +
|
|
80
80
|
`Environment:\n` +
|
|
81
|
-
` Loaded from ~/.config/
|
|
81
|
+
` Loaded from ~/.config/charness/.env (base) then $PWD/.env (override),\n` +
|
|
82
82
|
` or with ENV_FILE=<absolute path> from that one file only.\n` +
|
|
83
83
|
` Required to start: TELEGRAM_BOT_TOKEN (unless CONNECTORS leaves out telegram).\n` +
|
|
84
84
|
` Access = creator + admins of the served forum group (read live; no user list).\n` +
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,uCAAyB;AACzB,2CAA6B;AAC7B,mDAAgD;AAChD,mCAAmC;AACnC,mCAAmC;AAEnC,IAAA,yBAAW,GAAE,CAAC;AAEd;;;;;;GAMG;AACH,SAAS,YAAY;IACnB,IAAI,OAAO,GAAG,SAAS,CAAC;IACxB,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,cAAc,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;QAC5F,OAAO,GAAG,GAAG,CAAC,OAAO,IAAI,OAAO,CAAC;IACnC,CAAC;IAAC,MAAM,CAAC;QACP,6BAA6B;IAC/B,CAAC;IACD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,OAAO,IAAI,CAAC,CAAC;AACvC,CAAC;AAED;;;;;;GAMG;AACH,SAAS,UAAU;IACjB,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,UAAU;QACR,8EAA8E;QAC9E,
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,uCAAyB;AACzB,2CAA6B;AAC7B,mDAAgD;AAChD,mCAAmC;AACnC,mCAAmC;AAEnC,IAAA,yBAAW,GAAE,CAAC;AAEd;;;;;;GAMG;AACH,SAAS,YAAY;IACnB,IAAI,OAAO,GAAG,SAAS,CAAC;IACxB,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,cAAc,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;QAC5F,OAAO,GAAG,GAAG,CAAC,OAAO,IAAI,OAAO,CAAC;IACnC,CAAC;IAAC,MAAM,CAAC;QACP,6BAA6B;IAC/B,CAAC;IACD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,OAAO,IAAI,CAAC,CAAC;AACvC,CAAC;AAED;;;;;;GAMG;AACH,SAAS,UAAU;IACjB,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,UAAU;QACR,0EAA0E;QAC1E,8EAA8E;QAC9E,6EAA6E;QAC7E,2EAA2E;QAC3E,qFAAqF;QACrF,qFAAqF;QACrF,2EAA2E;QAC3E,8CAA8C;QAC9C,iDAAiD;QACjD,IAAI;QACJ,gBAAgB;QAChB,2EAA2E;QAC3E,+DAA+D;QAC/D,oFAAoF;QACpF,oFAAoF;QACpF,0EAA0E;QAC1E,oEAAoE;QACpE,0CAA0C,CAC7C,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,KAAK,UAAU,IAAI;IACjB,MAAM,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAEpC,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;QACtB,MAAM,IAAA,YAAM,GAAE,CAAC;QACf,OAAO;IACT,CAAC;IAED,IAAI,GAAG,KAAK,KAAK,EAAE,CAAC;QAClB,MAAM,IAAA,YAAM,GAAE,CAAC;QACf,OAAO;IACT,CAAC;IAED,IAAI,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,MAAM,EAAE,CAAC;QACvD,UAAU,EAAE,CAAC;QACb,OAAO;IACT,CAAC;IAED,IAAI,GAAG,KAAK,WAAW,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;QAC7D,YAAY,EAAE,CAAC;QACf,OAAO;IACT,CAAC;IAED,sGAAsG;IACtG,6DAA6D;IAC7D,IAAI,GAAG,KAAK,iBAAiB,EAAE,CAAC;QAC9B,MAAM,EAAE,oBAAoB,EAAE,GAAG,wDAAa,sBAAsB,GAAC,CAAC;QACtE,OAAO,CAAC,QAAQ,GAAG,MAAM,oBAAoB,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACrE,OAAO;IACT,CAAC;IAED,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,oBAAoB,GAAG,MAAM,CAAC,CAAC;IACpD,UAAU,EAAE,CAAC;IACb,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IACnB,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACnB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
|
@@ -35,6 +35,11 @@ export declare function convertMarkdownToAdf(markdown: string): AdfDocument;
|
|
|
35
35
|
/** A text that is data, never Markdown (an operator's group name inside it): one paragraph, converted by nothing. */
|
|
36
36
|
export declare function createPlainTextAdf(text: string): AdfDocument;
|
|
37
37
|
export declare function getStringAttribute(node: AdfNode | AdfMark, name: string): string | null;
|
|
38
|
+
/**
|
|
39
|
+
* @description The account ids of every `mention` node in `node`, in document order. Read from the node's own
|
|
40
|
+
* `id` attribute — never from its display text, which anyone can type.
|
|
41
|
+
*/
|
|
42
|
+
export declare function getMentionedAccountIds(node: AdfNode | AdfDocument | null | undefined): string[];
|
|
38
43
|
/**
|
|
39
44
|
* What a media node (`media` in a `mediaSingle` / `mediaGroup`, or a `mediaInline`) stands for in the text.
|
|
40
45
|
* The caller supplies it: only it knows the issue's attachments.
|
|
@@ -71,4 +76,20 @@ export declare function createCommentBodies(markdown: string, limits?: {
|
|
|
71
76
|
markdownMaxChars: number;
|
|
72
77
|
adfMaxChars: number;
|
|
73
78
|
}): AdfDocument[];
|
|
79
|
+
/** A person a comment can notify: the account id is what Jira notifies, the name only what the node reads as. */
|
|
80
|
+
export interface AdfMentionTarget {
|
|
81
|
+
accountId: string;
|
|
82
|
+
displayName?: string;
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* @description One paragraph of real mention nodes, one per person, separated by one space, nothing else — what
|
|
86
|
+
* Jira shows as `@Name` and notifies. Only the bot builds mention nodes: an agent's own ADF never reaches a
|
|
87
|
+
* comment (R17), so an agent cannot notify anyone it was not shown.
|
|
88
|
+
*/
|
|
89
|
+
export declare function createMentionParagraph(targets: readonly AdfMentionTarget[]): AdfNode;
|
|
90
|
+
/**
|
|
91
|
+
* @description An answer as comment bodies (R19) whose FIRST body starts with `leadingNode`. The node's own
|
|
92
|
+
* serialized size is taken off the ADF limit for every body, so the first still fits once it is prepended.
|
|
93
|
+
*/
|
|
94
|
+
export declare function createCommentBodiesWithLeadingNode(markdown: string, leadingNode: AdfNode): AdfDocument[];
|
|
74
95
|
//# sourceMappingURL=adf.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adf.d.ts","sourceRoot":"","sources":["../../../src/connectors/jira/adf.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"adf.d.ts","sourceRoot":"","sources":["../../../src/connectors/jira/adf.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB;;;;;;GAMG;AAEH,+FAA+F;AAC/F,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,iBAAiB,EAAE,GAAG;IAAE,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB,CAAA;CAAE,CAAC;AAE/H,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;CAC3C;AAED,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;IAC1C,OAAO,CAAC,EAAE,OAAO,EAAE,CAAC;IACpB,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,CAAC,CAAC;IACX,IAAI,EAAE,KAAK,CAAC;IACZ,OAAO,EAAE,OAAO,EAAE,CAAC;CACpB;AAED,yGAAyG;AACzG,eAAO,MAAM,oBAAoB,EAAE,CAAC,CAAC,OAAO,CAAC,iBAAiB,CAS7D,CAAC;AAOF,6EAA6E;AAC7E,eAAO,MAAM,aAAa,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAQ5C,CAAC;AAsHF,+IAA+I;AAC/I,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,WAAW,CAMlE;AAED,qHAAqH;AACrH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,CAE5D;AAWD,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAGvF;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,OAAO,GAAG,WAAW,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,EAAE,CAI/F;AAUD;;;GAGG;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,IAAI,EAAE,OAAO,KAAK,MAAM,CAAC;AAwCzD;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,OAAO,GAAG,WAAW,GAAG,IAAI,GAAG,SAAS,EAAE,YAAY,CAAC,EAAE,gBAAgB,GAAG,MAAM,CAKlH;AAED,8DAA8D;AAC9D,eAAO,MAAM,2BAA2B,QAAS,CAAC;AAClD;;;GAGG;AACH,eAAO,MAAM,sBAAsB,QAAS,CAAC;AAiI7C;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,SAA8B,GAAG,MAAM,EAAE,CAkB3G;AAgBD;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,MAAM,EAChB,MAAM,GAAE;IAAE,gBAAgB,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAA2F,GACjJ,WAAW,EAAE,CAEf;AAED,iHAAiH;AACjH,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,SAAS,gBAAgB,EAAE,GAAG,OAAO,CAOpF;AAED;;;GAGG;AACH,wBAAgB,kCAAkC,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,GAAG,WAAW,EAAE,CAMxG"}
|