@karmaniverous/jeeves-meta-openclaw 0.12.2 → 0.12.4
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/content/skills/coding.md +149 -0
- package/content/skills/jeeves.md +122 -0
- package/content/skills/operations.md +125 -0
- package/content/skills/playbooks.md +75 -0
- package/content/skills/slack-bot-provisioner.md +57 -0
- package/dist/cli.js +651 -158
- package/dist/index.js +346 -150
- package/dist/rollup.config.d.ts +11 -0
- package/dist/{serviceClient.d.ts → src/serviceClient.d.ts} +4 -39
- package/dist/vitest.config.d.ts +2 -0
- package/openclaw.plugin.json +18 -2
- package/package.json +15 -24
- /package/dist/{cli.d.ts → src/cli.d.ts} +0 -0
- /package/dist/{cli.test.d.ts → src/cli.test.d.ts} +0 -0
- /package/dist/{constants.d.ts → src/constants.d.ts} +0 -0
- /package/dist/{customTools.d.ts → src/customTools.d.ts} +0 -0
- /package/dist/{helpers.d.ts → src/helpers.d.ts} +0 -0
- /package/dist/{helpers.test.d.ts → src/helpers.test.d.ts} +0 -0
- /package/dist/{index.d.ts → src/index.d.ts} +0 -0
- /package/dist/{promptInjection.d.ts → src/promptInjection.d.ts} +0 -0
- /package/dist/{promptInjection.test.d.ts → src/promptInjection.test.d.ts} +0 -0
- /package/dist/{tools.d.ts → src/tools.d.ts} +0 -0
package/dist/cli.js
CHANGED
|
@@ -1180,11 +1180,11 @@ var hasRequiredRetry$1;
|
|
|
1180
1180
|
function requireRetry$1 () {
|
|
1181
1181
|
if (hasRequiredRetry$1) return retry$1;
|
|
1182
1182
|
hasRequiredRetry$1 = 1;
|
|
1183
|
-
(function (exports
|
|
1183
|
+
(function (exports) {
|
|
1184
1184
|
var RetryOperation = requireRetry_operation();
|
|
1185
1185
|
|
|
1186
|
-
exports
|
|
1187
|
-
var timeouts = exports
|
|
1186
|
+
exports.operation = function(options) {
|
|
1187
|
+
var timeouts = exports.timeouts(options);
|
|
1188
1188
|
return new RetryOperation(timeouts, {
|
|
1189
1189
|
forever: options && options.forever,
|
|
1190
1190
|
unref: options && options.unref,
|
|
@@ -1192,7 +1192,7 @@ function requireRetry$1 () {
|
|
|
1192
1192
|
});
|
|
1193
1193
|
};
|
|
1194
1194
|
|
|
1195
|
-
exports
|
|
1195
|
+
exports.timeouts = function(options) {
|
|
1196
1196
|
if (options instanceof Array) {
|
|
1197
1197
|
return [].concat(options);
|
|
1198
1198
|
}
|
|
@@ -1229,7 +1229,7 @@ function requireRetry$1 () {
|
|
|
1229
1229
|
return timeouts;
|
|
1230
1230
|
};
|
|
1231
1231
|
|
|
1232
|
-
exports
|
|
1232
|
+
exports.createTimeout = function(attempt, opts) {
|
|
1233
1233
|
var random = (opts.randomize)
|
|
1234
1234
|
? (Math.random() + 1)
|
|
1235
1235
|
: 1;
|
|
@@ -1240,7 +1240,7 @@ function requireRetry$1 () {
|
|
|
1240
1240
|
return timeout;
|
|
1241
1241
|
};
|
|
1242
1242
|
|
|
1243
|
-
exports
|
|
1243
|
+
exports.wrap = function(obj, options, methods) {
|
|
1244
1244
|
if (options instanceof Array) {
|
|
1245
1245
|
methods = options;
|
|
1246
1246
|
options = null;
|
|
@@ -1260,7 +1260,7 @@ function requireRetry$1 () {
|
|
|
1260
1260
|
var original = obj[method];
|
|
1261
1261
|
|
|
1262
1262
|
obj[method] = function retryWrapper(original) {
|
|
1263
|
-
var op = exports
|
|
1263
|
+
var op = exports.operation(options);
|
|
1264
1264
|
var args = Array.prototype.slice.call(arguments, 1);
|
|
1265
1265
|
var callback = args.pop();
|
|
1266
1266
|
|
|
@@ -3404,7 +3404,7 @@ var hasRequiredRe;
|
|
|
3404
3404
|
function requireRe () {
|
|
3405
3405
|
if (hasRequiredRe) return re.exports;
|
|
3406
3406
|
hasRequiredRe = 1;
|
|
3407
|
-
(function (module, exports
|
|
3407
|
+
(function (module, exports) {
|
|
3408
3408
|
|
|
3409
3409
|
const {
|
|
3410
3410
|
MAX_SAFE_COMPONENT_LENGTH,
|
|
@@ -3412,14 +3412,14 @@ function requireRe () {
|
|
|
3412
3412
|
MAX_LENGTH,
|
|
3413
3413
|
} = requireConstants();
|
|
3414
3414
|
const debug = requireDebug();
|
|
3415
|
-
exports
|
|
3415
|
+
exports = module.exports = {};
|
|
3416
3416
|
|
|
3417
3417
|
// The actual regexps go on exports.re
|
|
3418
|
-
const re = exports
|
|
3419
|
-
const safeRe = exports
|
|
3420
|
-
const src = exports
|
|
3421
|
-
const safeSrc = exports
|
|
3422
|
-
const t = exports
|
|
3418
|
+
const re = exports.re = [];
|
|
3419
|
+
const safeRe = exports.safeRe = [];
|
|
3420
|
+
const src = exports.src = [];
|
|
3421
|
+
const safeSrc = exports.safeSrc = [];
|
|
3422
|
+
const t = exports.t = {};
|
|
3423
3423
|
let R = 0;
|
|
3424
3424
|
|
|
3425
3425
|
const LETTERDASHNUMBER = '[a-zA-Z0-9-]';
|
|
@@ -3542,7 +3542,7 @@ function requireRe () {
|
|
|
3542
3542
|
createToken('GTLT', '((?:<|>)?=?)');
|
|
3543
3543
|
|
|
3544
3544
|
// Something like "2.*" or "1.2.x".
|
|
3545
|
-
// Note that "x.x" is a valid xRange
|
|
3545
|
+
// Note that "x.x" is a valid xRange identifier, meaning "any version"
|
|
3546
3546
|
// Only the first item is strictly required.
|
|
3547
3547
|
createToken('XRANGEIDENTIFIERLOOSE', `${src[t.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`);
|
|
3548
3548
|
createToken('XRANGEIDENTIFIER', `${src[t.NUMERICIDENTIFIER]}|x|X|\\*`);
|
|
@@ -3583,7 +3583,7 @@ function requireRe () {
|
|
|
3583
3583
|
createToken('LONETILDE', '(?:~>?)');
|
|
3584
3584
|
|
|
3585
3585
|
createToken('TILDETRIM', `(\\s*)${src[t.LONETILDE]}\\s+`, true);
|
|
3586
|
-
exports
|
|
3586
|
+
exports.tildeTrimReplace = '$1~';
|
|
3587
3587
|
|
|
3588
3588
|
createToken('TILDE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAIN]}$`);
|
|
3589
3589
|
createToken('TILDELOOSE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAINLOOSE]}$`);
|
|
@@ -3593,7 +3593,7 @@ function requireRe () {
|
|
|
3593
3593
|
createToken('LONECARET', '(?:\\^)');
|
|
3594
3594
|
|
|
3595
3595
|
createToken('CARETTRIM', `(\\s*)${src[t.LONECARET]}\\s+`, true);
|
|
3596
|
-
exports
|
|
3596
|
+
exports.caretTrimReplace = '$1^';
|
|
3597
3597
|
|
|
3598
3598
|
createToken('CARET', `^${src[t.LONECARET]}${src[t.XRANGEPLAIN]}$`);
|
|
3599
3599
|
createToken('CARETLOOSE', `^${src[t.LONECARET]}${src[t.XRANGEPLAINLOOSE]}$`);
|
|
@@ -3606,7 +3606,7 @@ function requireRe () {
|
|
|
3606
3606
|
// it modifies, so that `> 1.2.3` ==> `>1.2.3`
|
|
3607
3607
|
createToken('COMPARATORTRIM', `(\\s*)${src[t.GTLT]
|
|
3608
3608
|
}\\s*(${src[t.LOOSEPLAIN]}|${src[t.XRANGEPLAIN]})`, true);
|
|
3609
|
-
exports
|
|
3609
|
+
exports.comparatorTrimReplace = '$1$2$3';
|
|
3610
3610
|
|
|
3611
3611
|
// Something like `1.2.3 - 1.2.4`
|
|
3612
3612
|
// Note that these all use the loose form, because they'll be
|
|
@@ -4538,6 +4538,62 @@ function requireCoerce () {
|
|
|
4538
4538
|
return coerce_1;
|
|
4539
4539
|
}
|
|
4540
4540
|
|
|
4541
|
+
var truncate_1;
|
|
4542
|
+
var hasRequiredTruncate;
|
|
4543
|
+
|
|
4544
|
+
function requireTruncate () {
|
|
4545
|
+
if (hasRequiredTruncate) return truncate_1;
|
|
4546
|
+
hasRequiredTruncate = 1;
|
|
4547
|
+
|
|
4548
|
+
const parse = requireParse();
|
|
4549
|
+
const constants = requireConstants();
|
|
4550
|
+
const SemVer = requireSemver$1();
|
|
4551
|
+
|
|
4552
|
+
const truncate = (version, truncation, options) => {
|
|
4553
|
+
if (!constants.RELEASE_TYPES.includes(truncation)) {
|
|
4554
|
+
return null
|
|
4555
|
+
}
|
|
4556
|
+
|
|
4557
|
+
const clonedVersion = cloneInputVersion(version, options);
|
|
4558
|
+
return clonedVersion && doTruncation(clonedVersion, truncation)
|
|
4559
|
+
};
|
|
4560
|
+
|
|
4561
|
+
const cloneInputVersion = (version, options) => {
|
|
4562
|
+
const versionStringToParse = (
|
|
4563
|
+
version instanceof SemVer ? version.version : version
|
|
4564
|
+
);
|
|
4565
|
+
|
|
4566
|
+
return parse(versionStringToParse, options)
|
|
4567
|
+
};
|
|
4568
|
+
|
|
4569
|
+
const doTruncation = (version, truncation) => {
|
|
4570
|
+
if (isPrerelease(truncation)) {
|
|
4571
|
+
return version.version
|
|
4572
|
+
}
|
|
4573
|
+
|
|
4574
|
+
version.prerelease = [];
|
|
4575
|
+
|
|
4576
|
+
switch (truncation) {
|
|
4577
|
+
case 'major':
|
|
4578
|
+
version.minor = 0;
|
|
4579
|
+
version.patch = 0;
|
|
4580
|
+
break
|
|
4581
|
+
case 'minor':
|
|
4582
|
+
version.patch = 0;
|
|
4583
|
+
break
|
|
4584
|
+
}
|
|
4585
|
+
|
|
4586
|
+
return version.format()
|
|
4587
|
+
};
|
|
4588
|
+
|
|
4589
|
+
const isPrerelease = (type) => {
|
|
4590
|
+
return type.startsWith('pre')
|
|
4591
|
+
};
|
|
4592
|
+
|
|
4593
|
+
truncate_1 = truncate;
|
|
4594
|
+
return truncate_1;
|
|
4595
|
+
}
|
|
4596
|
+
|
|
4541
4597
|
var lrucache;
|
|
4542
4598
|
var hasRequiredLrucache;
|
|
4543
4599
|
|
|
@@ -5987,6 +6043,7 @@ function requireSemver () {
|
|
|
5987
6043
|
const lte = requireLte();
|
|
5988
6044
|
const cmp = requireCmp();
|
|
5989
6045
|
const coerce = requireCoerce();
|
|
6046
|
+
const truncate = requireTruncate();
|
|
5990
6047
|
const Comparator = requireComparator();
|
|
5991
6048
|
const Range = requireRange();
|
|
5992
6049
|
const satisfies = requireSatisfies();
|
|
@@ -6025,6 +6082,7 @@ function requireSemver () {
|
|
|
6025
6082
|
lte,
|
|
6026
6083
|
cmp,
|
|
6027
6084
|
coerce,
|
|
6085
|
+
truncate,
|
|
6028
6086
|
Comparator,
|
|
6029
6087
|
Range,
|
|
6030
6088
|
satisfies,
|
|
@@ -7251,7 +7309,7 @@ class Doc {
|
|
|
7251
7309
|
const version = {
|
|
7252
7310
|
major: 4,
|
|
7253
7311
|
minor: 4,
|
|
7254
|
-
patch:
|
|
7312
|
+
patch: 3,
|
|
7255
7313
|
};
|
|
7256
7314
|
|
|
7257
7315
|
const $ZodType = /*@__PURE__*/ $constructor("$ZodType", (inst, def) => {
|
|
@@ -8555,6 +8613,7 @@ const $ZodEnum = /*@__PURE__*/ $constructor("$ZodEnum", (inst, def) => {
|
|
|
8555
8613
|
});
|
|
8556
8614
|
const $ZodTransform = /*@__PURE__*/ $constructor("$ZodTransform", (inst, def) => {
|
|
8557
8615
|
$ZodType.init(inst, def);
|
|
8616
|
+
inst._zod.optin = "optional";
|
|
8558
8617
|
inst._zod.parse = (payload, ctx) => {
|
|
8559
8618
|
if (ctx.direction === "backward") {
|
|
8560
8619
|
throw new $ZodEncodeError(inst.constructor.name);
|
|
@@ -8564,6 +8623,7 @@ const $ZodTransform = /*@__PURE__*/ $constructor("$ZodTransform", (inst, def) =>
|
|
|
8564
8623
|
const output = _out instanceof Promise ? _out : Promise.resolve(_out);
|
|
8565
8624
|
return output.then((output) => {
|
|
8566
8625
|
payload.value = output;
|
|
8626
|
+
payload.fallback = true;
|
|
8567
8627
|
return payload;
|
|
8568
8628
|
});
|
|
8569
8629
|
}
|
|
@@ -8571,11 +8631,12 @@ const $ZodTransform = /*@__PURE__*/ $constructor("$ZodTransform", (inst, def) =>
|
|
|
8571
8631
|
throw new $ZodAsyncError();
|
|
8572
8632
|
}
|
|
8573
8633
|
payload.value = _out;
|
|
8634
|
+
payload.fallback = true;
|
|
8574
8635
|
return payload;
|
|
8575
8636
|
};
|
|
8576
8637
|
});
|
|
8577
8638
|
function handleOptionalResult(result, input) {
|
|
8578
|
-
if (result.issues.length
|
|
8639
|
+
if (input === undefined && (result.issues.length || result.fallback)) {
|
|
8579
8640
|
return { issues: [], value: undefined };
|
|
8580
8641
|
}
|
|
8581
8642
|
return result;
|
|
@@ -8593,10 +8654,11 @@ const $ZodOptional = /*@__PURE__*/ $constructor("$ZodOptional", (inst, def) => {
|
|
|
8593
8654
|
});
|
|
8594
8655
|
inst._zod.parse = (payload, ctx) => {
|
|
8595
8656
|
if (def.innerType._zod.optin === "optional") {
|
|
8657
|
+
const input = payload.value;
|
|
8596
8658
|
const result = def.innerType._zod.run(payload, ctx);
|
|
8597
8659
|
if (result instanceof Promise)
|
|
8598
|
-
return result.then((r) => handleOptionalResult(r,
|
|
8599
|
-
return handleOptionalResult(result,
|
|
8660
|
+
return result.then((r) => handleOptionalResult(r, input));
|
|
8661
|
+
return handleOptionalResult(result, input);
|
|
8600
8662
|
}
|
|
8601
8663
|
if (payload.value === undefined) {
|
|
8602
8664
|
return payload;
|
|
@@ -8706,7 +8768,7 @@ function handleNonOptionalResult(payload, inst) {
|
|
|
8706
8768
|
}
|
|
8707
8769
|
const $ZodCatch = /*@__PURE__*/ $constructor("$ZodCatch", (inst, def) => {
|
|
8708
8770
|
$ZodType.init(inst, def);
|
|
8709
|
-
|
|
8771
|
+
inst._zod.optin = "optional";
|
|
8710
8772
|
defineLazy(inst._zod, "optout", () => def.innerType._zod.optout);
|
|
8711
8773
|
defineLazy(inst._zod, "values", () => def.innerType._zod.values);
|
|
8712
8774
|
inst._zod.parse = (payload, ctx) => {
|
|
@@ -8727,6 +8789,7 @@ const $ZodCatch = /*@__PURE__*/ $constructor("$ZodCatch", (inst, def) => {
|
|
|
8727
8789
|
input: payload.value,
|
|
8728
8790
|
});
|
|
8729
8791
|
payload.issues = [];
|
|
8792
|
+
payload.fallback = true;
|
|
8730
8793
|
}
|
|
8731
8794
|
return payload;
|
|
8732
8795
|
});
|
|
@@ -8741,6 +8804,7 @@ const $ZodCatch = /*@__PURE__*/ $constructor("$ZodCatch", (inst, def) => {
|
|
|
8741
8804
|
input: payload.value,
|
|
8742
8805
|
});
|
|
8743
8806
|
payload.issues = [];
|
|
8807
|
+
payload.fallback = true;
|
|
8744
8808
|
}
|
|
8745
8809
|
return payload;
|
|
8746
8810
|
};
|
|
@@ -8772,7 +8836,7 @@ function handlePipeResult(left, next, ctx) {
|
|
|
8772
8836
|
left.aborted = true;
|
|
8773
8837
|
return left;
|
|
8774
8838
|
}
|
|
8775
|
-
return next._zod.run({ value: left.value, issues: left.issues }, ctx);
|
|
8839
|
+
return next._zod.run({ value: left.value, issues: left.issues, fallback: left.fallback }, ctx);
|
|
8776
8840
|
}
|
|
8777
8841
|
const $ZodReadonly = /*@__PURE__*/ $constructor("$ZodReadonly", (inst, def) => {
|
|
8778
8842
|
$ZodType.init(inst, def);
|
|
@@ -11113,10 +11177,12 @@ const ZodTransform = /*@__PURE__*/ $constructor("ZodTransform", (inst, def) => {
|
|
|
11113
11177
|
if (output instanceof Promise) {
|
|
11114
11178
|
return output.then((output) => {
|
|
11115
11179
|
payload.value = output;
|
|
11180
|
+
payload.fallback = true;
|
|
11116
11181
|
return payload;
|
|
11117
11182
|
});
|
|
11118
11183
|
}
|
|
11119
11184
|
payload.value = output;
|
|
11185
|
+
payload.fallback = true;
|
|
11120
11186
|
return payload;
|
|
11121
11187
|
};
|
|
11122
11188
|
});
|
|
@@ -15845,9 +15911,9 @@ var hasRequiredException;
|
|
|
15845
15911
|
function requireException () {
|
|
15846
15912
|
if (hasRequiredException) return exception.exports;
|
|
15847
15913
|
hasRequiredException = 1;
|
|
15848
|
-
(function (module, exports
|
|
15914
|
+
(function (module, exports) {
|
|
15849
15915
|
|
|
15850
|
-
exports
|
|
15916
|
+
exports.__esModule = true;
|
|
15851
15917
|
var errorProps = ['description', 'fileName', 'lineNumber', 'endLineNumber', 'message', 'name', 'number', 'stack'];
|
|
15852
15918
|
|
|
15853
15919
|
function Exception(message, node) {
|
|
@@ -15906,8 +15972,8 @@ function requireException () {
|
|
|
15906
15972
|
|
|
15907
15973
|
Exception.prototype = new Error();
|
|
15908
15974
|
|
|
15909
|
-
exports
|
|
15910
|
-
module.exports = exports
|
|
15975
|
+
exports['default'] = Exception;
|
|
15976
|
+
module.exports = exports['default'];
|
|
15911
15977
|
|
|
15912
15978
|
} (exception, exception.exports));
|
|
15913
15979
|
return exception.exports;
|
|
@@ -15922,13 +15988,13 @@ var hasRequiredBlockHelperMissing;
|
|
|
15922
15988
|
function requireBlockHelperMissing () {
|
|
15923
15989
|
if (hasRequiredBlockHelperMissing) return blockHelperMissing.exports;
|
|
15924
15990
|
hasRequiredBlockHelperMissing = 1;
|
|
15925
|
-
(function (module, exports
|
|
15991
|
+
(function (module, exports) {
|
|
15926
15992
|
|
|
15927
|
-
exports
|
|
15993
|
+
exports.__esModule = true;
|
|
15928
15994
|
|
|
15929
15995
|
var _utils = requireUtils();
|
|
15930
15996
|
|
|
15931
|
-
exports
|
|
15997
|
+
exports['default'] = function (instance) {
|
|
15932
15998
|
instance.registerHelper('blockHelperMissing', function (context, options) {
|
|
15933
15999
|
var inverse = options.inverse,
|
|
15934
16000
|
fn = options.fn;
|
|
@@ -15959,7 +16025,7 @@ function requireBlockHelperMissing () {
|
|
|
15959
16025
|
});
|
|
15960
16026
|
};
|
|
15961
16027
|
|
|
15962
|
-
module.exports = exports
|
|
16028
|
+
module.exports = exports['default'];
|
|
15963
16029
|
|
|
15964
16030
|
} (blockHelperMissing, blockHelperMissing.exports));
|
|
15965
16031
|
return blockHelperMissing.exports;
|
|
@@ -15972,9 +16038,9 @@ var hasRequiredEach;
|
|
|
15972
16038
|
function requireEach () {
|
|
15973
16039
|
if (hasRequiredEach) return each.exports;
|
|
15974
16040
|
hasRequiredEach = 1;
|
|
15975
|
-
(function (module, exports
|
|
16041
|
+
(function (module, exports) {
|
|
15976
16042
|
|
|
15977
|
-
exports
|
|
16043
|
+
exports.__esModule = true;
|
|
15978
16044
|
// istanbul ignore next
|
|
15979
16045
|
|
|
15980
16046
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
|
|
@@ -15985,7 +16051,7 @@ function requireEach () {
|
|
|
15985
16051
|
|
|
15986
16052
|
var _exception2 = _interopRequireDefault(_exception);
|
|
15987
16053
|
|
|
15988
|
-
exports
|
|
16054
|
+
exports['default'] = function (instance) {
|
|
15989
16055
|
instance.registerHelper('each', function (context, options) {
|
|
15990
16056
|
if (!options) {
|
|
15991
16057
|
throw new _exception2['default']('Must pass iterator to #each');
|
|
@@ -16074,7 +16140,7 @@ function requireEach () {
|
|
|
16074
16140
|
});
|
|
16075
16141
|
};
|
|
16076
16142
|
|
|
16077
|
-
module.exports = exports
|
|
16143
|
+
module.exports = exports['default'];
|
|
16078
16144
|
|
|
16079
16145
|
} (each, each.exports));
|
|
16080
16146
|
return each.exports;
|
|
@@ -16087,9 +16153,9 @@ var hasRequiredHelperMissing;
|
|
|
16087
16153
|
function requireHelperMissing () {
|
|
16088
16154
|
if (hasRequiredHelperMissing) return helperMissing.exports;
|
|
16089
16155
|
hasRequiredHelperMissing = 1;
|
|
16090
|
-
(function (module, exports
|
|
16156
|
+
(function (module, exports) {
|
|
16091
16157
|
|
|
16092
|
-
exports
|
|
16158
|
+
exports.__esModule = true;
|
|
16093
16159
|
// istanbul ignore next
|
|
16094
16160
|
|
|
16095
16161
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
|
|
@@ -16098,7 +16164,7 @@ function requireHelperMissing () {
|
|
|
16098
16164
|
|
|
16099
16165
|
var _exception2 = _interopRequireDefault(_exception);
|
|
16100
16166
|
|
|
16101
|
-
exports
|
|
16167
|
+
exports['default'] = function (instance) {
|
|
16102
16168
|
instance.registerHelper('helperMissing', function () /* [args, ]options */{
|
|
16103
16169
|
if (arguments.length === 1) {
|
|
16104
16170
|
// A missing field in a {{foo}} construct.
|
|
@@ -16110,7 +16176,7 @@ function requireHelperMissing () {
|
|
|
16110
16176
|
});
|
|
16111
16177
|
};
|
|
16112
16178
|
|
|
16113
|
-
module.exports = exports
|
|
16179
|
+
module.exports = exports['default'];
|
|
16114
16180
|
|
|
16115
16181
|
} (helperMissing, helperMissing.exports));
|
|
16116
16182
|
return helperMissing.exports;
|
|
@@ -16123,9 +16189,9 @@ var hasRequired_if;
|
|
|
16123
16189
|
function require_if () {
|
|
16124
16190
|
if (hasRequired_if) return _if.exports;
|
|
16125
16191
|
hasRequired_if = 1;
|
|
16126
|
-
(function (module, exports
|
|
16192
|
+
(function (module, exports) {
|
|
16127
16193
|
|
|
16128
|
-
exports
|
|
16194
|
+
exports.__esModule = true;
|
|
16129
16195
|
// istanbul ignore next
|
|
16130
16196
|
|
|
16131
16197
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
|
|
@@ -16136,7 +16202,7 @@ function require_if () {
|
|
|
16136
16202
|
|
|
16137
16203
|
var _exception2 = _interopRequireDefault(_exception);
|
|
16138
16204
|
|
|
16139
|
-
exports
|
|
16205
|
+
exports['default'] = function (instance) {
|
|
16140
16206
|
instance.registerHelper('if', function (conditional, options) {
|
|
16141
16207
|
if (arguments.length != 2) {
|
|
16142
16208
|
throw new _exception2['default']('#if requires exactly one argument');
|
|
@@ -16167,7 +16233,7 @@ function require_if () {
|
|
|
16167
16233
|
});
|
|
16168
16234
|
};
|
|
16169
16235
|
|
|
16170
|
-
module.exports = exports
|
|
16236
|
+
module.exports = exports['default'];
|
|
16171
16237
|
|
|
16172
16238
|
} (_if, _if.exports));
|
|
16173
16239
|
return _if.exports;
|
|
@@ -16180,11 +16246,11 @@ var hasRequiredLog;
|
|
|
16180
16246
|
function requireLog () {
|
|
16181
16247
|
if (hasRequiredLog) return log.exports;
|
|
16182
16248
|
hasRequiredLog = 1;
|
|
16183
|
-
(function (module, exports
|
|
16249
|
+
(function (module, exports) {
|
|
16184
16250
|
|
|
16185
|
-
exports
|
|
16251
|
+
exports.__esModule = true;
|
|
16186
16252
|
|
|
16187
|
-
exports
|
|
16253
|
+
exports['default'] = function (instance) {
|
|
16188
16254
|
instance.registerHelper('log', function () /* message, options */{
|
|
16189
16255
|
var args = [undefined],
|
|
16190
16256
|
options = arguments[arguments.length - 1];
|
|
@@ -16204,7 +16270,7 @@ function requireLog () {
|
|
|
16204
16270
|
});
|
|
16205
16271
|
};
|
|
16206
16272
|
|
|
16207
|
-
module.exports = exports
|
|
16273
|
+
module.exports = exports['default'];
|
|
16208
16274
|
|
|
16209
16275
|
} (log, log.exports));
|
|
16210
16276
|
return log.exports;
|
|
@@ -16217,11 +16283,11 @@ var hasRequiredLookup;
|
|
|
16217
16283
|
function requireLookup () {
|
|
16218
16284
|
if (hasRequiredLookup) return lookup.exports;
|
|
16219
16285
|
hasRequiredLookup = 1;
|
|
16220
|
-
(function (module, exports
|
|
16286
|
+
(function (module, exports) {
|
|
16221
16287
|
|
|
16222
|
-
exports
|
|
16288
|
+
exports.__esModule = true;
|
|
16223
16289
|
|
|
16224
|
-
exports
|
|
16290
|
+
exports['default'] = function (instance) {
|
|
16225
16291
|
instance.registerHelper('lookup', function (obj, field, options) {
|
|
16226
16292
|
if (!obj) {
|
|
16227
16293
|
// Note for 5.0: Change to "obj == null" in 5.0
|
|
@@ -16231,7 +16297,7 @@ function requireLookup () {
|
|
|
16231
16297
|
});
|
|
16232
16298
|
};
|
|
16233
16299
|
|
|
16234
|
-
module.exports = exports
|
|
16300
|
+
module.exports = exports['default'];
|
|
16235
16301
|
|
|
16236
16302
|
} (lookup, lookup.exports));
|
|
16237
16303
|
return lookup.exports;
|
|
@@ -16244,9 +16310,9 @@ var hasRequired_with;
|
|
|
16244
16310
|
function require_with () {
|
|
16245
16311
|
if (hasRequired_with) return _with.exports;
|
|
16246
16312
|
hasRequired_with = 1;
|
|
16247
|
-
(function (module, exports
|
|
16313
|
+
(function (module, exports) {
|
|
16248
16314
|
|
|
16249
|
-
exports
|
|
16315
|
+
exports.__esModule = true;
|
|
16250
16316
|
// istanbul ignore next
|
|
16251
16317
|
|
|
16252
16318
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
|
|
@@ -16257,7 +16323,7 @@ function require_with () {
|
|
|
16257
16323
|
|
|
16258
16324
|
var _exception2 = _interopRequireDefault(_exception);
|
|
16259
16325
|
|
|
16260
|
-
exports
|
|
16326
|
+
exports['default'] = function (instance) {
|
|
16261
16327
|
instance.registerHelper('with', function (context, options) {
|
|
16262
16328
|
if (arguments.length != 2) {
|
|
16263
16329
|
throw new _exception2['default']('#with requires exactly one argument');
|
|
@@ -16285,7 +16351,7 @@ function require_with () {
|
|
|
16285
16351
|
});
|
|
16286
16352
|
};
|
|
16287
16353
|
|
|
16288
|
-
module.exports = exports
|
|
16354
|
+
module.exports = exports['default'];
|
|
16289
16355
|
|
|
16290
16356
|
} (_with, _with.exports));
|
|
16291
16357
|
return _with.exports;
|
|
@@ -16364,13 +16430,13 @@ var hasRequiredInline;
|
|
|
16364
16430
|
function requireInline () {
|
|
16365
16431
|
if (hasRequiredInline) return inline.exports;
|
|
16366
16432
|
hasRequiredInline = 1;
|
|
16367
|
-
(function (module, exports
|
|
16433
|
+
(function (module, exports) {
|
|
16368
16434
|
|
|
16369
|
-
exports
|
|
16435
|
+
exports.__esModule = true;
|
|
16370
16436
|
|
|
16371
16437
|
var _utils = requireUtils();
|
|
16372
16438
|
|
|
16373
|
-
exports
|
|
16439
|
+
exports['default'] = function (instance) {
|
|
16374
16440
|
instance.registerDecorator('inline', function (fn, props, container, options) {
|
|
16375
16441
|
var ret = fn;
|
|
16376
16442
|
if (!props.partials) {
|
|
@@ -16391,7 +16457,7 @@ function requireInline () {
|
|
|
16391
16457
|
});
|
|
16392
16458
|
};
|
|
16393
16459
|
|
|
16394
|
-
module.exports = exports
|
|
16460
|
+
module.exports = exports['default'];
|
|
16395
16461
|
|
|
16396
16462
|
} (inline, inline.exports));
|
|
16397
16463
|
return inline.exports;
|
|
@@ -16427,9 +16493,9 @@ var hasRequiredLogger;
|
|
|
16427
16493
|
function requireLogger () {
|
|
16428
16494
|
if (hasRequiredLogger) return logger.exports;
|
|
16429
16495
|
hasRequiredLogger = 1;
|
|
16430
|
-
(function (module, exports
|
|
16496
|
+
(function (module, exports) {
|
|
16431
16497
|
|
|
16432
|
-
exports
|
|
16498
|
+
exports.__esModule = true;
|
|
16433
16499
|
|
|
16434
16500
|
var _utils = requireUtils();
|
|
16435
16501
|
|
|
@@ -16471,8 +16537,8 @@ function requireLogger () {
|
|
|
16471
16537
|
}
|
|
16472
16538
|
};
|
|
16473
16539
|
|
|
16474
|
-
exports
|
|
16475
|
-
module.exports = exports
|
|
16540
|
+
exports['default'] = logger;
|
|
16541
|
+
module.exports = exports['default'];
|
|
16476
16542
|
|
|
16477
16543
|
} (logger, logger.exports));
|
|
16478
16544
|
return logger.exports;
|
|
@@ -16695,9 +16761,9 @@ var hasRequiredSafeString;
|
|
|
16695
16761
|
function requireSafeString () {
|
|
16696
16762
|
if (hasRequiredSafeString) return safeString.exports;
|
|
16697
16763
|
hasRequiredSafeString = 1;
|
|
16698
|
-
(function (module, exports
|
|
16764
|
+
(function (module, exports) {
|
|
16699
16765
|
|
|
16700
|
-
exports
|
|
16766
|
+
exports.__esModule = true;
|
|
16701
16767
|
function SafeString(string) {
|
|
16702
16768
|
this.string = string;
|
|
16703
16769
|
}
|
|
@@ -16706,8 +16772,8 @@ function requireSafeString () {
|
|
|
16706
16772
|
return '' + this.string;
|
|
16707
16773
|
};
|
|
16708
16774
|
|
|
16709
|
-
exports
|
|
16710
|
-
module.exports = exports
|
|
16775
|
+
exports['default'] = SafeString;
|
|
16776
|
+
module.exports = exports['default'];
|
|
16711
16777
|
|
|
16712
16778
|
} (safeString, safeString.exports));
|
|
16713
16779
|
return safeString.exports;
|
|
@@ -17138,11 +17204,11 @@ var hasRequiredNoConflict;
|
|
|
17138
17204
|
function requireNoConflict () {
|
|
17139
17205
|
if (hasRequiredNoConflict) return noConflict.exports;
|
|
17140
17206
|
hasRequiredNoConflict = 1;
|
|
17141
|
-
(function (module, exports
|
|
17207
|
+
(function (module, exports) {
|
|
17142
17208
|
|
|
17143
|
-
exports
|
|
17209
|
+
exports.__esModule = true;
|
|
17144
17210
|
|
|
17145
|
-
exports
|
|
17211
|
+
exports['default'] = function (Handlebars) {
|
|
17146
17212
|
/* istanbul ignore next */
|
|
17147
17213
|
// https://mathiasbynens.be/notes/globalthis
|
|
17148
17214
|
(function () {
|
|
@@ -17165,7 +17231,7 @@ function requireNoConflict () {
|
|
|
17165
17231
|
};
|
|
17166
17232
|
};
|
|
17167
17233
|
|
|
17168
|
-
module.exports = exports
|
|
17234
|
+
module.exports = exports['default'];
|
|
17169
17235
|
|
|
17170
17236
|
} (noConflict, noConflict.exports));
|
|
17171
17237
|
return noConflict.exports;
|
|
@@ -17176,9 +17242,9 @@ var hasRequiredHandlebars_runtime;
|
|
|
17176
17242
|
function requireHandlebars_runtime () {
|
|
17177
17243
|
if (hasRequiredHandlebars_runtime) return handlebars_runtime.exports;
|
|
17178
17244
|
hasRequiredHandlebars_runtime = 1;
|
|
17179
|
-
(function (module, exports
|
|
17245
|
+
(function (module, exports) {
|
|
17180
17246
|
|
|
17181
|
-
exports
|
|
17247
|
+
exports.__esModule = true;
|
|
17182
17248
|
// istanbul ignore next
|
|
17183
17249
|
|
|
17184
17250
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
|
|
@@ -17239,8 +17305,8 @@ function requireHandlebars_runtime () {
|
|
|
17239
17305
|
|
|
17240
17306
|
inst['default'] = inst;
|
|
17241
17307
|
|
|
17242
|
-
exports
|
|
17243
|
-
module.exports = exports
|
|
17308
|
+
exports['default'] = inst;
|
|
17309
|
+
module.exports = exports['default'];
|
|
17244
17310
|
|
|
17245
17311
|
} (handlebars_runtime, handlebars_runtime.exports));
|
|
17246
17312
|
return handlebars_runtime.exports;
|
|
@@ -17253,9 +17319,9 @@ var hasRequiredAst;
|
|
|
17253
17319
|
function requireAst () {
|
|
17254
17320
|
if (hasRequiredAst) return ast.exports;
|
|
17255
17321
|
hasRequiredAst = 1;
|
|
17256
|
-
(function (module, exports
|
|
17322
|
+
(function (module, exports) {
|
|
17257
17323
|
|
|
17258
|
-
exports
|
|
17324
|
+
exports.__esModule = true;
|
|
17259
17325
|
var AST = {
|
|
17260
17326
|
// Public API used to evaluate derived attributes regarding AST nodes
|
|
17261
17327
|
helpers: {
|
|
@@ -17281,8 +17347,8 @@ function requireAst () {
|
|
|
17281
17347
|
|
|
17282
17348
|
// Must be exported as an object rather than the root of the module as the jison lexer
|
|
17283
17349
|
// must modify the object to operate properly.
|
|
17284
|
-
exports
|
|
17285
|
-
module.exports = exports
|
|
17350
|
+
exports['default'] = AST;
|
|
17351
|
+
module.exports = exports['default'];
|
|
17286
17352
|
|
|
17287
17353
|
} (ast, ast.exports));
|
|
17288
17354
|
return ast.exports;
|
|
@@ -17297,9 +17363,9 @@ var hasRequiredParser;
|
|
|
17297
17363
|
function requireParser () {
|
|
17298
17364
|
if (hasRequiredParser) return parser.exports;
|
|
17299
17365
|
hasRequiredParser = 1;
|
|
17300
|
-
(function (module, exports
|
|
17366
|
+
(function (module, exports) {
|
|
17301
17367
|
|
|
17302
|
-
exports
|
|
17368
|
+
exports.__esModule = true;
|
|
17303
17369
|
var handlebars = (function () {
|
|
17304
17370
|
var parser = { trace: function trace() {},
|
|
17305
17371
|
yy: {},
|
|
@@ -17965,8 +18031,8 @@ function requireParser () {
|
|
|
17965
18031
|
this.yy = {};
|
|
17966
18032
|
}Parser.prototype = parser;parser.Parser = Parser;
|
|
17967
18033
|
return new Parser();
|
|
17968
|
-
})();exports
|
|
17969
|
-
module.exports = exports
|
|
18034
|
+
})();exports["default"] = handlebars;
|
|
18035
|
+
module.exports = exports["default"];
|
|
17970
18036
|
|
|
17971
18037
|
} (parser, parser.exports));
|
|
17972
18038
|
return parser.exports;
|
|
@@ -17981,9 +18047,9 @@ var hasRequiredVisitor;
|
|
|
17981
18047
|
function requireVisitor () {
|
|
17982
18048
|
if (hasRequiredVisitor) return visitor.exports;
|
|
17983
18049
|
hasRequiredVisitor = 1;
|
|
17984
|
-
(function (module, exports
|
|
18050
|
+
(function (module, exports) {
|
|
17985
18051
|
|
|
17986
|
-
exports
|
|
18052
|
+
exports.__esModule = true;
|
|
17987
18053
|
// istanbul ignore next
|
|
17988
18054
|
|
|
17989
18055
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
|
|
@@ -18118,8 +18184,8 @@ function requireVisitor () {
|
|
|
18118
18184
|
this.acceptKey(partial, 'hash');
|
|
18119
18185
|
}
|
|
18120
18186
|
|
|
18121
|
-
exports
|
|
18122
|
-
module.exports = exports
|
|
18187
|
+
exports['default'] = Visitor;
|
|
18188
|
+
module.exports = exports['default'];
|
|
18123
18189
|
|
|
18124
18190
|
} (visitor, visitor.exports));
|
|
18125
18191
|
return visitor.exports;
|
|
@@ -18130,9 +18196,9 @@ var hasRequiredWhitespaceControl;
|
|
|
18130
18196
|
function requireWhitespaceControl () {
|
|
18131
18197
|
if (hasRequiredWhitespaceControl) return whitespaceControl.exports;
|
|
18132
18198
|
hasRequiredWhitespaceControl = 1;
|
|
18133
|
-
(function (module, exports
|
|
18199
|
+
(function (module, exports) {
|
|
18134
18200
|
|
|
18135
|
-
exports
|
|
18201
|
+
exports.__esModule = true;
|
|
18136
18202
|
// istanbul ignore next
|
|
18137
18203
|
|
|
18138
18204
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
|
|
@@ -18348,8 +18414,8 @@ function requireWhitespaceControl () {
|
|
|
18348
18414
|
return current.leftStripped;
|
|
18349
18415
|
}
|
|
18350
18416
|
|
|
18351
|
-
exports
|
|
18352
|
-
module.exports = exports
|
|
18417
|
+
exports['default'] = WhitespaceControl;
|
|
18418
|
+
module.exports = exports['default'];
|
|
18353
18419
|
|
|
18354
18420
|
} (whitespaceControl, whitespaceControl.exports));
|
|
18355
18421
|
return whitespaceControl.exports;
|
|
@@ -19536,7 +19602,7 @@ var hasRequiredUtil;
|
|
|
19536
19602
|
function requireUtil () {
|
|
19537
19603
|
if (hasRequiredUtil) return util;
|
|
19538
19604
|
hasRequiredUtil = 1;
|
|
19539
|
-
(function (exports
|
|
19605
|
+
(function (exports) {
|
|
19540
19606
|
/*
|
|
19541
19607
|
* Copyright 2011 Mozilla Foundation and contributors
|
|
19542
19608
|
* Licensed under the New BSD license. See LICENSE or:
|
|
@@ -19562,7 +19628,7 @@ function requireUtil () {
|
|
|
19562
19628
|
throw new Error('"' + aName + '" is a required argument.');
|
|
19563
19629
|
}
|
|
19564
19630
|
}
|
|
19565
|
-
exports
|
|
19631
|
+
exports.getArg = getArg;
|
|
19566
19632
|
|
|
19567
19633
|
var urlRegexp = /^(?:([\w+\-.]+):)?\/\/(?:(\w+:\w+)@)?([\w.-]*)(?::(\d+))?(.*)$/;
|
|
19568
19634
|
var dataUrlRegexp = /^data:.+\,.+$/;
|
|
@@ -19580,7 +19646,7 @@ function requireUtil () {
|
|
|
19580
19646
|
path: match[5]
|
|
19581
19647
|
};
|
|
19582
19648
|
}
|
|
19583
|
-
exports
|
|
19649
|
+
exports.urlParse = urlParse;
|
|
19584
19650
|
|
|
19585
19651
|
function urlGenerate(aParsedUrl) {
|
|
19586
19652
|
var url = '';
|
|
@@ -19602,7 +19668,7 @@ function requireUtil () {
|
|
|
19602
19668
|
}
|
|
19603
19669
|
return url;
|
|
19604
19670
|
}
|
|
19605
|
-
exports
|
|
19671
|
+
exports.urlGenerate = urlGenerate;
|
|
19606
19672
|
|
|
19607
19673
|
/**
|
|
19608
19674
|
* Normalizes a path, or the path portion of a URL:
|
|
@@ -19624,7 +19690,7 @@ function requireUtil () {
|
|
|
19624
19690
|
}
|
|
19625
19691
|
path = url.path;
|
|
19626
19692
|
}
|
|
19627
|
-
var isAbsolute = exports
|
|
19693
|
+
var isAbsolute = exports.isAbsolute(path);
|
|
19628
19694
|
|
|
19629
19695
|
var parts = path.split(/\/+/);
|
|
19630
19696
|
for (var part, up = 0, i = parts.length - 1; i >= 0; i--) {
|
|
@@ -19658,7 +19724,7 @@ function requireUtil () {
|
|
|
19658
19724
|
}
|
|
19659
19725
|
return path;
|
|
19660
19726
|
}
|
|
19661
|
-
exports
|
|
19727
|
+
exports.normalize = normalize;
|
|
19662
19728
|
|
|
19663
19729
|
/**
|
|
19664
19730
|
* Joins two paths/URLs.
|
|
@@ -19717,9 +19783,9 @@ function requireUtil () {
|
|
|
19717
19783
|
}
|
|
19718
19784
|
return joined;
|
|
19719
19785
|
}
|
|
19720
|
-
exports
|
|
19786
|
+
exports.join = join;
|
|
19721
19787
|
|
|
19722
|
-
exports
|
|
19788
|
+
exports.isAbsolute = function (aPath) {
|
|
19723
19789
|
return aPath.charAt(0) === '/' || urlRegexp.test(aPath);
|
|
19724
19790
|
};
|
|
19725
19791
|
|
|
@@ -19761,7 +19827,7 @@ function requireUtil () {
|
|
|
19761
19827
|
// Make sure we add a "../" for each component we removed from the root.
|
|
19762
19828
|
return Array(level + 1).join("../") + aPath.substr(aRoot.length + 1);
|
|
19763
19829
|
}
|
|
19764
|
-
exports
|
|
19830
|
+
exports.relative = relative;
|
|
19765
19831
|
|
|
19766
19832
|
var supportsNullProto = (function () {
|
|
19767
19833
|
var obj = Object.create(null);
|
|
@@ -19788,7 +19854,7 @@ function requireUtil () {
|
|
|
19788
19854
|
|
|
19789
19855
|
return aStr;
|
|
19790
19856
|
}
|
|
19791
|
-
exports
|
|
19857
|
+
exports.toSetString = supportsNullProto ? identity : toSetString;
|
|
19792
19858
|
|
|
19793
19859
|
function fromSetString(aStr) {
|
|
19794
19860
|
if (isProtoString(aStr)) {
|
|
@@ -19797,7 +19863,7 @@ function requireUtil () {
|
|
|
19797
19863
|
|
|
19798
19864
|
return aStr;
|
|
19799
19865
|
}
|
|
19800
|
-
exports
|
|
19866
|
+
exports.fromSetString = supportsNullProto ? identity : fromSetString;
|
|
19801
19867
|
|
|
19802
19868
|
function isProtoString(s) {
|
|
19803
19869
|
if (!s) {
|
|
@@ -19867,7 +19933,7 @@ function requireUtil () {
|
|
|
19867
19933
|
|
|
19868
19934
|
return strcmp(mappingA.name, mappingB.name);
|
|
19869
19935
|
}
|
|
19870
|
-
exports
|
|
19936
|
+
exports.compareByOriginalPositions = compareByOriginalPositions;
|
|
19871
19937
|
|
|
19872
19938
|
/**
|
|
19873
19939
|
* Comparator between two mappings with deflated source and name indices where
|
|
@@ -19906,7 +19972,7 @@ function requireUtil () {
|
|
|
19906
19972
|
|
|
19907
19973
|
return strcmp(mappingA.name, mappingB.name);
|
|
19908
19974
|
}
|
|
19909
|
-
exports
|
|
19975
|
+
exports.compareByGeneratedPositionsDeflated = compareByGeneratedPositionsDeflated;
|
|
19910
19976
|
|
|
19911
19977
|
function strcmp(aStr1, aStr2) {
|
|
19912
19978
|
if (aStr1 === aStr2) {
|
|
@@ -19960,7 +20026,7 @@ function requireUtil () {
|
|
|
19960
20026
|
|
|
19961
20027
|
return strcmp(mappingA.name, mappingB.name);
|
|
19962
20028
|
}
|
|
19963
|
-
exports
|
|
20029
|
+
exports.compareByGeneratedPositionsInflated = compareByGeneratedPositionsInflated;
|
|
19964
20030
|
|
|
19965
20031
|
/**
|
|
19966
20032
|
* Strip any JSON XSSI avoidance prefix from the string (as documented
|
|
@@ -19970,7 +20036,7 @@ function requireUtil () {
|
|
|
19970
20036
|
function parseSourceMapInput(str) {
|
|
19971
20037
|
return JSON.parse(str.replace(/^\)]}'[^\n]*\n/, ''));
|
|
19972
20038
|
}
|
|
19973
|
-
exports
|
|
20039
|
+
exports.parseSourceMapInput = parseSourceMapInput;
|
|
19974
20040
|
|
|
19975
20041
|
/**
|
|
19976
20042
|
* Compute the URL of a source given the the source root, the source's
|
|
@@ -20023,7 +20089,7 @@ function requireUtil () {
|
|
|
20023
20089
|
|
|
20024
20090
|
return normalize(sourceURL);
|
|
20025
20091
|
}
|
|
20026
|
-
exports
|
|
20092
|
+
exports.computeSourceURL = computeSourceURL;
|
|
20027
20093
|
} (util));
|
|
20028
20094
|
return util;
|
|
20029
20095
|
}
|
|
@@ -20695,15 +20761,15 @@ var hasRequiredBinarySearch;
|
|
|
20695
20761
|
function requireBinarySearch () {
|
|
20696
20762
|
if (hasRequiredBinarySearch) return binarySearch;
|
|
20697
20763
|
hasRequiredBinarySearch = 1;
|
|
20698
|
-
(function (exports
|
|
20764
|
+
(function (exports) {
|
|
20699
20765
|
/*
|
|
20700
20766
|
* Copyright 2011 Mozilla Foundation and contributors
|
|
20701
20767
|
* Licensed under the New BSD license. See LICENSE or:
|
|
20702
20768
|
* http://opensource.org/licenses/BSD-3-Clause
|
|
20703
20769
|
*/
|
|
20704
20770
|
|
|
20705
|
-
exports
|
|
20706
|
-
exports
|
|
20771
|
+
exports.GREATEST_LOWER_BOUND = 1;
|
|
20772
|
+
exports.LEAST_UPPER_BOUND = 2;
|
|
20707
20773
|
|
|
20708
20774
|
/**
|
|
20709
20775
|
* Recursive implementation of binary search.
|
|
@@ -20743,7 +20809,7 @@ function requireBinarySearch () {
|
|
|
20743
20809
|
|
|
20744
20810
|
// The exact needle element was not found in this haystack. Determine if
|
|
20745
20811
|
// we are in termination case (3) or (2) and return the appropriate thing.
|
|
20746
|
-
if (aBias == exports
|
|
20812
|
+
if (aBias == exports.LEAST_UPPER_BOUND) {
|
|
20747
20813
|
return aHigh < aHaystack.length ? aHigh : -1;
|
|
20748
20814
|
} else {
|
|
20749
20815
|
return mid;
|
|
@@ -20757,7 +20823,7 @@ function requireBinarySearch () {
|
|
|
20757
20823
|
}
|
|
20758
20824
|
|
|
20759
20825
|
// we are in termination case (3) or (2) and return the appropriate thing.
|
|
20760
|
-
if (aBias == exports
|
|
20826
|
+
if (aBias == exports.LEAST_UPPER_BOUND) {
|
|
20761
20827
|
return mid;
|
|
20762
20828
|
} else {
|
|
20763
20829
|
return aLow < 0 ? -1 : aLow;
|
|
@@ -20783,13 +20849,13 @@ function requireBinarySearch () {
|
|
|
20783
20849
|
* searching for, respectively, if the exact element cannot be found.
|
|
20784
20850
|
* Defaults to 'binarySearch.GREATEST_LOWER_BOUND'.
|
|
20785
20851
|
*/
|
|
20786
|
-
exports
|
|
20852
|
+
exports.search = function search(aNeedle, aHaystack, aCompare, aBias) {
|
|
20787
20853
|
if (aHaystack.length === 0) {
|
|
20788
20854
|
return -1;
|
|
20789
20855
|
}
|
|
20790
20856
|
|
|
20791
20857
|
var index = recursiveSearch(-1, aHaystack.length, aNeedle, aHaystack,
|
|
20792
|
-
aCompare, aBias || exports
|
|
20858
|
+
aCompare, aBias || exports.GREATEST_LOWER_BOUND);
|
|
20793
20859
|
if (index < 0) {
|
|
20794
20860
|
return -1;
|
|
20795
20861
|
}
|
|
@@ -22537,9 +22603,9 @@ var hasRequiredCodeGen;
|
|
|
22537
22603
|
function requireCodeGen () {
|
|
22538
22604
|
if (hasRequiredCodeGen) return codeGen.exports;
|
|
22539
22605
|
hasRequiredCodeGen = 1;
|
|
22540
|
-
(function (module, exports
|
|
22606
|
+
(function (module, exports) {
|
|
22541
22607
|
|
|
22542
|
-
exports
|
|
22608
|
+
exports.__esModule = true;
|
|
22543
22609
|
|
|
22544
22610
|
var _utils = requireUtils();
|
|
22545
22611
|
|
|
@@ -22701,8 +22767,8 @@ function requireCodeGen () {
|
|
|
22701
22767
|
}
|
|
22702
22768
|
};
|
|
22703
22769
|
|
|
22704
|
-
exports
|
|
22705
|
-
module.exports = exports
|
|
22770
|
+
exports['default'] = CodeGen;
|
|
22771
|
+
module.exports = exports['default'];
|
|
22706
22772
|
|
|
22707
22773
|
} (codeGen, codeGen.exports));
|
|
22708
22774
|
return codeGen.exports;
|
|
@@ -22713,9 +22779,9 @@ var hasRequiredJavascriptCompiler;
|
|
|
22713
22779
|
function requireJavascriptCompiler () {
|
|
22714
22780
|
if (hasRequiredJavascriptCompiler) return javascriptCompiler.exports;
|
|
22715
22781
|
hasRequiredJavascriptCompiler = 1;
|
|
22716
|
-
(function (module, exports
|
|
22782
|
+
(function (module, exports) {
|
|
22717
22783
|
|
|
22718
|
-
exports
|
|
22784
|
+
exports.__esModule = true;
|
|
22719
22785
|
// istanbul ignore next
|
|
22720
22786
|
|
|
22721
22787
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
|
|
@@ -23876,8 +23942,8 @@ function requireJavascriptCompiler () {
|
|
|
23876
23942
|
}
|
|
23877
23943
|
}
|
|
23878
23944
|
|
|
23879
|
-
exports
|
|
23880
|
-
module.exports = exports
|
|
23945
|
+
exports['default'] = JavaScriptCompiler;
|
|
23946
|
+
module.exports = exports['default'];
|
|
23881
23947
|
|
|
23882
23948
|
} (javascriptCompiler, javascriptCompiler.exports));
|
|
23883
23949
|
return javascriptCompiler.exports;
|
|
@@ -23888,9 +23954,9 @@ var hasRequiredHandlebars;
|
|
|
23888
23954
|
function requireHandlebars () {
|
|
23889
23955
|
if (hasRequiredHandlebars) return handlebars.exports;
|
|
23890
23956
|
hasRequiredHandlebars = 1;
|
|
23891
|
-
(function (module, exports
|
|
23957
|
+
(function (module, exports) {
|
|
23892
23958
|
|
|
23893
|
-
exports
|
|
23959
|
+
exports.__esModule = true;
|
|
23894
23960
|
// istanbul ignore next
|
|
23895
23961
|
|
|
23896
23962
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
|
|
@@ -23951,8 +24017,8 @@ function requireHandlebars () {
|
|
|
23951
24017
|
|
|
23952
24018
|
inst['default'] = inst;
|
|
23953
24019
|
|
|
23954
|
-
exports
|
|
23955
|
-
module.exports = exports
|
|
24020
|
+
exports['default'] = inst;
|
|
24021
|
+
module.exports = exports['default'];
|
|
23956
24022
|
|
|
23957
24023
|
} (handlebars, handlebars.exports));
|
|
23958
24024
|
return handlebars.exports;
|
|
@@ -24241,8 +24307,6 @@ const WORKSPACE_FILES = {
|
|
|
24241
24307
|
};
|
|
24242
24308
|
/** Skill directory name within workspace. */
|
|
24243
24309
|
const SKILLS_DIR = 'skills';
|
|
24244
|
-
/** Jeeves skill directory name. */
|
|
24245
|
-
const JEEVES_SKILL_DIR = 'jeeves';
|
|
24246
24310
|
/** Component versions state file name. */
|
|
24247
24311
|
const COMPONENT_VERSIONS_FILE = 'component-versions.json';
|
|
24248
24312
|
|
|
@@ -24282,14 +24346,14 @@ const SECTION_ORDER = [
|
|
|
24282
24346
|
* Core library version, inlined at build time.
|
|
24283
24347
|
*
|
|
24284
24348
|
* @remarks
|
|
24285
|
-
* The `0.5.
|
|
24349
|
+
* The `0.5.9` placeholder is replaced by
|
|
24286
24350
|
* `@rollup/plugin-replace` during the build with the actual version
|
|
24287
24351
|
* from `package.json`. This ensures the correct version survives
|
|
24288
24352
|
* when consumers bundle core into their own dist (where runtime
|
|
24289
24353
|
* `import.meta.url`-based resolution would find the wrong package.json).
|
|
24290
24354
|
*/
|
|
24291
24355
|
/** The core library version from package.json (inlined at build time). */
|
|
24292
|
-
const CORE_VERSION = '0.5.
|
|
24356
|
+
const CORE_VERSION = '0.5.9';
|
|
24293
24357
|
|
|
24294
24358
|
/**
|
|
24295
24359
|
* Workspace and config root initialization.
|
|
@@ -24497,31 +24561,31 @@ var hasRequiredExtraTypings;
|
|
|
24497
24561
|
function requireExtraTypings () {
|
|
24498
24562
|
if (hasRequiredExtraTypings) return extraTypings.exports;
|
|
24499
24563
|
hasRequiredExtraTypings = 1;
|
|
24500
|
-
(function (module, exports
|
|
24564
|
+
(function (module, exports) {
|
|
24501
24565
|
const commander = require$$0;
|
|
24502
24566
|
|
|
24503
|
-
exports
|
|
24567
|
+
exports = module.exports = {};
|
|
24504
24568
|
|
|
24505
24569
|
// Return a different global program than commander,
|
|
24506
24570
|
// and don't also return it as default export.
|
|
24507
|
-
exports
|
|
24571
|
+
exports.program = new commander.Command();
|
|
24508
24572
|
|
|
24509
24573
|
/**
|
|
24510
24574
|
* Expose classes. The FooT versions are just types, so return Commander original implementations!
|
|
24511
24575
|
*/
|
|
24512
24576
|
|
|
24513
|
-
exports
|
|
24514
|
-
exports
|
|
24515
|
-
exports
|
|
24516
|
-
exports
|
|
24517
|
-
exports
|
|
24518
|
-
exports
|
|
24519
|
-
exports
|
|
24577
|
+
exports.Argument = commander.Argument;
|
|
24578
|
+
exports.Command = commander.Command;
|
|
24579
|
+
exports.CommanderError = commander.CommanderError;
|
|
24580
|
+
exports.Help = commander.Help;
|
|
24581
|
+
exports.InvalidArgumentError = commander.InvalidArgumentError;
|
|
24582
|
+
exports.InvalidOptionArgumentError = commander.InvalidArgumentError; // Deprecated
|
|
24583
|
+
exports.Option = commander.Option;
|
|
24520
24584
|
|
|
24521
|
-
exports
|
|
24522
|
-
exports
|
|
24585
|
+
exports.createCommand = (name) => new commander.Command(name);
|
|
24586
|
+
exports.createOption = (flags, description) =>
|
|
24523
24587
|
new commander.Option(flags, description);
|
|
24524
|
-
exports
|
|
24588
|
+
exports.createArgument = (name, description) =>
|
|
24525
24589
|
new commander.Argument(name, description);
|
|
24526
24590
|
} (extraTypings, extraTypings.exports));
|
|
24527
24591
|
return extraTypings.exports;
|
|
@@ -24967,7 +25031,158 @@ function buildWithSections(beforeContent, userContent, sections, markers, coreVe
|
|
|
24967
25031
|
return parts.join('\n');
|
|
24968
25032
|
}
|
|
24969
25033
|
|
|
24970
|
-
var
|
|
25034
|
+
var codingContent = `---
|
|
25035
|
+
name: coding
|
|
25036
|
+
description: Engineering standards for all code work. Use when writing code, reviewing PRs, spawning coding sub-agents, or making architectural decisions in any project (not just Jeeves). Covers design-first development, schema-first patterns, testing, STAN workflow, dependency management, and pre-PR checklist.
|
|
25037
|
+
---
|
|
25038
|
+
|
|
25039
|
+
# Engineering Standards
|
|
25040
|
+
|
|
25041
|
+
These standards apply to ALL code work — whether done directly or via sub-agents.
|
|
25042
|
+
When spawning sub-agents for coding tasks, include the relevant rules in the task prompt.
|
|
25043
|
+
Sub-agents don't inherit your context — if you don't pass the rules, they don't exist.
|
|
25044
|
+
|
|
25045
|
+
---
|
|
25046
|
+
|
|
25047
|
+
## Design-First Development
|
|
25048
|
+
|
|
25049
|
+
1. **Iterate on design until convergence** — Summarize requirements, propose approach, raise questions BEFORE writing code.
|
|
25050
|
+
2. **Services-first architecture** — Core logic in services behind ports; adapters thin; side effects at boundaries.
|
|
25051
|
+
3. **Schema-first** — Runtime schema (Zod) is source of truth; TypeScript types derived via \`z.infer<>\`; validation centralized. Plain TypeScript \`interface\` declarations for config surfaces are not acceptable.
|
|
25052
|
+
4. **300 LOC hard limit** — If a file would exceed 300 lines, stop and decompose first. No exceptions.
|
|
25053
|
+
5. **Avoid \`any\`** — Prefer \`unknown\` + narrowing; if unavoidable, narrowest scope + rationale.
|
|
25054
|
+
6. **Test pairing** — Every non-trivial module gets a \`*.test.ts\`.
|
|
25055
|
+
7. **Open-source first** — Prefer established deps over home-grown solutions. Search npm/GitHub before building anything non-trivial.
|
|
25056
|
+
|
|
25057
|
+
## Module Design
|
|
25058
|
+
|
|
25059
|
+
- **Single Responsibility** applies to modules as well as functions.
|
|
25060
|
+
- Prefer many small modules over a few large ones.
|
|
25061
|
+
- Keep module boundaries explicit and cohesive; avoid "kitchen-sink" files.
|
|
25062
|
+
- Co-locate tests with modules for discoverability.
|
|
25063
|
+
|
|
25064
|
+
## Config Surfaces
|
|
25065
|
+
|
|
25066
|
+
- Define config with **Zod schemas** — never bare TypeScript interfaces.
|
|
25067
|
+
- Derive types: \`type MyConfig = z.infer<typeof myConfigSchema>\`
|
|
25068
|
+
- Generate **JSON Schema** from Zod for IDE DX (\`\$schema\` pointer in config files).
|
|
25069
|
+
- Validate at load time — fail fast with clear error messages.
|
|
25070
|
+
- \`init\` commands generate config with \`\$schema\` pointer already in place.
|
|
25071
|
+
|
|
25072
|
+
## Testing
|
|
25073
|
+
|
|
25074
|
+
- **Unit tests** for pure services (no fs/process/network).
|
|
25075
|
+
- **Integration tests** for adapters/seams (minimal end-to-end slices).
|
|
25076
|
+
- Exercise happy paths AND representative error paths.
|
|
25077
|
+
- Table-driven cases encouraged for exhaustive coverage.
|
|
25078
|
+
- Keep coverage meaningful — prefer covering branches/decisions over chasing 100% lines.
|
|
25079
|
+
|
|
25080
|
+
## STAN-Enabled Repos
|
|
25081
|
+
|
|
25082
|
+
When working in a repo with \`.stan/\`:
|
|
25083
|
+
- Run \`stan run --sequential --no-archive\` **before** each commit. Scripts must pass before you commit. Sequential runs are preferred to limit side effects. Archives are not needed (you won't use them).
|
|
25084
|
+
- **Push after every commit.** Don't accumulate unpushed local commits. Jason needs to be able to see your work at any time.
|
|
25085
|
+
- All scripts must pass before claiming work is complete.
|
|
25086
|
+
- Read \`.stan/output/<script>.txt\` for evidence on failures.
|
|
25087
|
+
- When creating stan scripts, eliminate colorized output where possible (e.g. \`--no-color\`, \`NO_COLOR=1\`) to reduce noise in script output files.
|
|
25088
|
+
|
|
25089
|
+
## Cross-Package Verification
|
|
25090
|
+
|
|
25091
|
+
When changes affect exports consumed by another repo:
|
|
25092
|
+
- Standalone scripts passing ≠ "ready for review."
|
|
25093
|
+
- Use \`npm link\` or equivalent to verify the consumer builds against your changes.
|
|
25094
|
+
- Only claim completion when BOTH repos pass.
|
|
25095
|
+
|
|
25096
|
+
## Dependencies: Latest Versions Required (HARD GATE)
|
|
25097
|
+
|
|
25098
|
+
**NEVER use a superseded version of ANY dependency without direct human authorization.** When adding a new dependency — or creating a new project — ALWAYS check the latest stable version and use it. This applies to runtime deps, dev deps, and peer deps alike.
|
|
25099
|
+
|
|
25100
|
+
- Before \`npm install <package>\`: run \`npm view <package> version\` (or check npmjs.com) to confirm you're installing the current major.
|
|
25101
|
+
- Before spawning sub-agents that install packages: include the latest version in the task prompt, or instruct the sub-agent to verify latest before installing.
|
|
25102
|
+
- If the latest major has known breaking issues that block adoption, flag it to the human — don't silently pin an old major.
|
|
25103
|
+
|
|
25104
|
+
LLMs are trained on stale data. Your training cutoff means you will default to old versions of everything. **Assume your version knowledge is wrong** and verify before every install.
|
|
25105
|
+
|
|
25106
|
+
*Earned: 2026-05-12, created the jeeves-tools repo with Zod 3 despite Zod 4 being available since mid-2025. Shipped 84 commits on the old major before catching it.*
|
|
25107
|
+
|
|
25108
|
+
## Dependencies: Local Over Global
|
|
25109
|
+
|
|
25110
|
+
- **Dev dependencies belong in the project, not the global environment.** Install with \`npm install --save-dev\`, not \`npm install -g\`.
|
|
25111
|
+
- This guarantees reproducibility across machines and CI. Global installs mask environment differences that cause "works on my machine" failures.
|
|
25112
|
+
- **Rare exceptions:** Tools that are genuinely machine-level utilities (e.g. \`stan-cli\`). If in doubt, install locally.
|
|
25113
|
+
## Dependency Failures
|
|
25114
|
+
|
|
25115
|
+
When a third-party dependency is broken:
|
|
25116
|
+
1. Summarize the failure concisely.
|
|
25117
|
+
2. Enumerate options: switch dependency → fix upstream → temporary pin → shim (last resort).
|
|
25118
|
+
3. Recommend with rationale.
|
|
25119
|
+
4. Do NOT immediately code around the problem.
|
|
25120
|
+
|
|
25121
|
+
## CHANGELOG
|
|
25122
|
+
|
|
25123
|
+
- **Do not manually update CHANGELOG.md** — it is generated as part of the release process (e.g. via \`standard-version\`, \`changesets\`, or equivalent). Conventional commit messages are the input; the tooling produces the output.
|
|
25124
|
+
|
|
25125
|
+
## Pre-PR Checklist (HARD GATE)
|
|
25126
|
+
|
|
25127
|
+
**Before creating ANY PR, run the full verification sequence. No exceptions.**
|
|
25128
|
+
|
|
25129
|
+
1. \`stan run --sequential --no-archive\` if \`.stan/\` exists — this is the canonical check suite
|
|
25130
|
+
2. In monorepos: run checks **from each package directory**, not just the root. Root-level runs may mask package-level failures due to config resolution differences.
|
|
25131
|
+
3. Exercise the release path: check \`release-it\` hooks (or equivalent) in each releasable package — run the same commands (\`lint\`, \`typecheck\`, \`test\`, \`build\`) from the same cwd the release process uses.
|
|
25132
|
+
|
|
25133
|
+
If any step fails, fix it before committing. Do NOT create the PR and "note" the failures. Do NOT claim pre-existing failures without having actually run the commands first. Skipping this sequence is how we ship broken code and fabricate diagnoses.
|
|
25134
|
+
|
|
25135
|
+
- **Compare against canonical template** (\`karmaniverous/npm-package-template-ts\`) before any npm package PR. If the project is behind the template, update it to conform. If the template is behind the project, raise the issue with Jason for template upkeep.
|
|
25136
|
+
- **Run \`ncu --peer\`** before any PR. Review the output. Update safe patches/minors. **Flag major version bumps for discussion** — never auto-apply \`ncu -u\` without reading what changed. Peer dep conflicts must be resolved, not ignored.
|
|
25137
|
+
- When spawning sub-agents, include \`ncu --peer\` in the quality gate commands: \`ncu --peer && npm run lint && npm run typecheck && npm run build && npm test\`. The sub-agent should report \`ncu\` output and only apply updates that don't involve major bumps or peer conflicts.
|
|
25138
|
+
- **Resolve ALL script warnings.** It is NOT acceptable to release code with outstanding warnings. They exist for a reason — fix them.
|
|
25139
|
+
- **Typecheck/lint rules apply to ALL authored code**, including configs at project root (\`eslint.config.ts\`, \`rollup.config.ts\`, \`vitest.config.ts\`, etc.). Only generated code (e.g. typedoc output) should be excepted from code quality checks.
|
|
25140
|
+
- **Never disable lint/typecheck rules** without surfacing it for discussion first. Disabled rules are a major code smell. If a rule must be disabled, document the rationale inline at the point of suppression.
|
|
25141
|
+
- **Multiple tsconfigs are a code smell.** Sometimes needed, but often they paper over poor configuration choices. Fix root causes rather than adding tsconfig variants.
|
|
25142
|
+
- **In a TS repo, all scripts should be authored in TS** (not JS). Prefer execution with \`tsx\`.
|
|
25143
|
+
- **Clean-room verify before claiming "all green."** Run \`rimraf node_modules && npm install && npm run build\` (or equivalent) to catch issues masked by cached state. If someone reports an error you can't reproduce, assume your cache is lying — not that they're wrong.
|
|
25144
|
+
- Verify build, test, and lint pass after updates.
|
|
25145
|
+
|
|
25146
|
+
## Dev Workspace
|
|
25147
|
+
|
|
25148
|
+
- **Clone location:** \`D:\\repos\\{org-or-userid}\\{repo}\` (e.g. \`D:\\repos\\karmaniverous\\jeeves-watcher\`)
|
|
25149
|
+
- D drive is the dev workspace. Do not clone repos elsewhere.
|
|
25150
|
+
- Fresh clones are preferred over copying existing checkouts — \`npm install\` from registry is faster than disk-copying \`node_modules\`.
|
|
25151
|
+
- D drive is NOT indexed by jeeves-watcher. Dev work stays off the archive.
|
|
25152
|
+
|
|
25153
|
+
## GitHub Auth (HARD GATE)
|
|
25154
|
+
|
|
25155
|
+
- **ALL GitHub operations use \`jgs-jeeves\` auth.** Set \`GH_TOKEN\` before any \`gh\` CLI command:
|
|
25156
|
+
\`\`\`powershell
|
|
25157
|
+
\$env:GH_TOKEN = (Get-Content "J:\\config\\credentials\\github\\jgs-jeeves.token" -Raw).Trim()
|
|
25158
|
+
\`\`\`
|
|
25159
|
+
- Never write to GitHub as \`karmaniverous\` — that's Jason's account.
|
|
25160
|
+
- If \`jgs-jeeves\` lacks permissions, **escalate to Jason** rather than falling back to \`karmaniverous\`.
|
|
25161
|
+
|
|
25162
|
+
## Issue Hygiene
|
|
25163
|
+
|
|
25164
|
+
- **Always comment rationale when closing an issue without resolution** (duplicate, won't-fix, obsolete). The close action alone doesn't explain why.
|
|
25165
|
+
- Reference the replacement issue/PR when closing as duplicate.
|
|
25166
|
+
|
|
25167
|
+
## Code Style
|
|
25168
|
+
|
|
25169
|
+
- Prettier is source of truth for formatting.
|
|
25170
|
+
- Keep imports sorted per repo tooling.
|
|
25171
|
+
- Avoid dead code.
|
|
25172
|
+
- TSDoc \`@module\` or \`@packageDocumentation\` on every non-test module.
|
|
25173
|
+
- First 160 chars of module doc should be high-signal: what it does, IO/side effects, traversal hints.
|
|
25174
|
+
|
|
25175
|
+
## eslint-disable is a HARD GATE
|
|
25176
|
+
|
|
25177
|
+
Never disable lint/typecheck rules without surfacing it for discussion first. Fix the code, don't suppress the warning. For test mocks, use properly typed partial objects (\`Partial<RealType>\`, typed \`MockReply\` interfaces) instead of \`any\`. Tests are code.
|
|
25178
|
+
|
|
25179
|
+
## Git Merge Policy
|
|
25180
|
+
|
|
25181
|
+
- **No squash merges.** Preserve commit history.
|
|
25182
|
+
- **PR reviewer:** When creating a PR under \`jgs-jeeves\` auth, always add \`karmaniverous\` (Jason) as a reviewer.
|
|
25183
|
+
`;
|
|
25184
|
+
|
|
25185
|
+
var jeevesContent = `---
|
|
24971
25186
|
name: jeeves
|
|
24972
25187
|
description: Jeeves platform architecture, data flow, component interaction, scripts repo, and coordination knowledge. Use when making architectural decisions, coordinating across components, checking platform health, managing service lifecycle, or working with the scripts repo.
|
|
24973
25188
|
---
|
|
@@ -25091,26 +25306,304 @@ When a workspace file exceeds the warning threshold, a \`## {filename}\` alert a
|
|
|
25091
25306
|
Each file heading follows the same declined/active lifecycle as component headings. Users can decline alerts by changing the heading to \`## {filename}: declined\` (e.g., \`## AGENTS.md: declined\`).
|
|
25092
25307
|
`;
|
|
25093
25308
|
|
|
25309
|
+
var operationsContent = `---
|
|
25310
|
+
name: operations
|
|
25311
|
+
description: Operational knowledge for a Jeeves installation. Covers date formatting utilities, email pipeline architecture, curation signal protocol, label taxonomy, and data flow patterns. Use when working with date formatting, email scripts, debugging email pipeline issues, or understanding how human email actions are interpreted.
|
|
25312
|
+
---
|
|
25313
|
+
|
|
25314
|
+
# Operations
|
|
25315
|
+
|
|
25316
|
+
Operational knowledge for the Jeeves platform. Covers email pipeline architecture, curation protocols, and operational conventions.
|
|
25317
|
+
|
|
25318
|
+
## Date Formatting
|
|
25319
|
+
|
|
25320
|
+
A \`date-fns\` wrapper lives at \`{configRoot}/jeeves-core/scripts/src/lib/dates.ts\`. It provides:
|
|
25321
|
+
|
|
25322
|
+
| Export | Purpose |
|
|
25323
|
+
|--------|---------|
|
|
25324
|
+
| \`dayOfWeek(dateStr)\` | Full weekday name for an ISO date string (e.g. \`'Monday'\`) |
|
|
25325
|
+
| \`formatDate(dateStr, fmt)\` | Format with any date-fns pattern |
|
|
25326
|
+
| \`relativeDays(dateStr, refStr?)\` | Human-friendly relative description (\`'today'\`, \`'tomorrow'\`, \`'3 days ago'\`) |
|
|
25327
|
+
| \`parseISO\` / \`format\` | Re-exported from date-fns for direct use |
|
|
25328
|
+
|
|
25329
|
+
### Gateway session usage
|
|
25330
|
+
|
|
25331
|
+
From a gateway session, call via \`exec\`:
|
|
25332
|
+
|
|
25333
|
+
\`\`\`
|
|
25334
|
+
node -e "import { dayOfWeek } from './src/lib/dates.js'; console.log(dayOfWeek('2026-05-11'));"
|
|
25335
|
+
\`\`\`
|
|
25336
|
+
|
|
25337
|
+
with \`workdir: {configRoot}/jeeves-core/scripts\`.
|
|
25338
|
+
|
|
25339
|
+
Or use the simpler inline form when the full wrapper isn't needed:
|
|
25340
|
+
|
|
25341
|
+
\`\`\`
|
|
25342
|
+
node -e "import { format, parseISO } from 'date-fns'; console.log(format(parseISO('2026-05-11'), 'EEEE'));"
|
|
25343
|
+
\`\`\`
|
|
25344
|
+
|
|
25345
|
+
with \`workdir: {configRoot}/jeeves-core/scripts\` (so date-fns resolves from \`node_modules\`).
|
|
25346
|
+
|
|
25347
|
+
### Hard gate
|
|
25348
|
+
|
|
25349
|
+
NEVER state a day of the week without computing it first. LLMs cannot do day-of-week arithmetic reliably.
|
|
25350
|
+
|
|
25351
|
+
## Email Curation Signal Protocol
|
|
25352
|
+
|
|
25353
|
+
Defines how human email actions in Gmail are interpreted by Jeeves email processes.
|
|
25354
|
+
|
|
25355
|
+
### Human Signals
|
|
25356
|
+
|
|
25357
|
+
| Signal | Meaning | Action |
|
|
25358
|
+
|--------|---------|--------|
|
|
25359
|
+
| Label added | Human is adjusting Jeeves classification | Update domain process inputs to reflect new classification |
|
|
25360
|
+
| Label removed | Human is adjusting Jeeves classification (removal) | Update domain process inputs to reflect removed classification |
|
|
25361
|
+
| Archived → Inbox | Human wants to keep this email in sight | Add \`watch\` label via update queue |
|
|
25362
|
+
| Starred / Flagged | Elevated attention — email is important in context | Domain processes should weight higher |
|
|
25363
|
+
| Moved to Spam | Confirmed spam — human classified as junk | Learn from classification for future triage |
|
|
25364
|
+
| Removed from Spam | False positive — human rescued from spam | Process as normal email, learn from false positive |
|
|
25365
|
+
|
|
25366
|
+
### Watch Label
|
|
25367
|
+
|
|
25368
|
+
The \`watch\` label has special semantics:
|
|
25369
|
+
- When present, never auto-archive the email
|
|
25370
|
+
- When a watched email lands in archive (by anyone), remove the watch label
|
|
25371
|
+
- Added automatically when a human moves an archived email back to inbox
|
|
25372
|
+
|
|
25373
|
+
### Label Taxonomy
|
|
25374
|
+
|
|
25375
|
+
Labels applied by Jeeves processes fall into two categories:
|
|
25376
|
+
|
|
25377
|
+
**Mechanical labels** (applied by domain extractors with high confidence):
|
|
25378
|
+
- \`meeting\` — meeting-related email (invite, notes, transcript)
|
|
25379
|
+
- \`finance\` — financial email (receipt, invoice, billing, statement)
|
|
25380
|
+
|
|
25381
|
+
**Reasoning labels** (applied by Update Email Meta, requiring cross-domain context):
|
|
25382
|
+
- \`project/<name>\` — associated with a known project
|
|
25383
|
+
- \`todo\` — requires action or work from the user
|
|
25384
|
+
- \`reply\` — someone is waiting on a response
|
|
25385
|
+
- \`alert\` — automated notification from a service
|
|
25386
|
+
- \`readme\` — newsletter or subscribed informational content
|
|
25387
|
+
|
|
25388
|
+
### Labeling Principles
|
|
25389
|
+
|
|
25390
|
+
1. Label at the earliest point where confidence is high enough
|
|
25391
|
+
2. Domain extractors label what they know with certainty
|
|
25392
|
+
3. Update Email Meta labels what requires cross-domain context
|
|
25393
|
+
4. A thread can have multiple labels
|
|
25394
|
+
5. Do not re-label threads that already have the label
|
|
25395
|
+
6. **Prefer false negatives over false positives**
|
|
25396
|
+
|
|
25397
|
+
### Poll Scope
|
|
25398
|
+
|
|
25399
|
+
Query: \`newer_than:1d in:anywhere\`
|
|
25400
|
+
|
|
25401
|
+
Must include spam and trash to detect human curation signals (e.g., moving to/from spam).
|
|
25402
|
+
|
|
25403
|
+
## Email Pipeline Architecture
|
|
25404
|
+
|
|
25405
|
+
### Directory Layout
|
|
25406
|
+
|
|
25407
|
+
\`\`\`
|
|
25408
|
+
{configRoot}/jeeves-core/email-config.json — pipeline configuration (accounts, buckets)
|
|
25409
|
+
{workspace}/../email/threads/{account}/ — canonical email archive (thread.json + per-message JSONs)
|
|
25410
|
+
\`\`\`
|
|
25411
|
+
|
|
25412
|
+
### Data Flow
|
|
25413
|
+
|
|
25414
|
+
1. **Poll** (\`email/poll.ts\`) — searches Gmail for recent threads, classifies, enqueues important ones for metadata fetch
|
|
25415
|
+
2. **Fetch** (\`email/email-fetch.ts\`) — fetches full thread metadata from Gmail, creates/updates \`thread.json\` cache, enqueues for body download
|
|
25416
|
+
3. **Download** (\`email/download.ts\`) — downloads full message bodies, writes per-message JSONs to \`threads/{account}/{threadId}/\`
|
|
25417
|
+
4. **Drain Updates** (\`email/drain-updates.ts\`) — applies label changes and other queued updates back to Gmail
|
|
25418
|
+
5. **Meta synthesis** — jeeves-meta synthesizes email archives into searchable summaries
|
|
25419
|
+
|
|
25420
|
+
### thread.json (Cache Format)
|
|
25421
|
+
|
|
25422
|
+
Each \`threads/{account}/{threadId}/thread.json\` contains:
|
|
25423
|
+
- \`threadId\`, \`account\`, \`subject\`, \`participants\`
|
|
25424
|
+
- \`messages\` — record of \`{ messageId → { from, to, cc, date, internalDateMs, labels, snippet, attachments } }\`
|
|
25425
|
+
- \`provenance\` — label change history
|
|
25426
|
+
- \`cachedAt\`, \`updatedAt\`
|
|
25427
|
+
|
|
25428
|
+
### Per-Message JSONs
|
|
25429
|
+
|
|
25430
|
+
Each \`threads/{account}/{threadId}/{messageId}.json\` contains full message data:
|
|
25431
|
+
- \`messageId\`, \`threadId\`, \`account\`, \`subject\`, \`from\`, \`to\`, \`cc\`
|
|
25432
|
+
- \`date\` (RFC 2822), \`internalDateMs\` (epoch ms)
|
|
25433
|
+
- \`labels\`, \`body\`, \`attachments\`, \`downloadedAt\`
|
|
25434
|
+
`;
|
|
25435
|
+
|
|
25436
|
+
var playbooksContent = `---
|
|
25437
|
+
name: playbooks
|
|
25438
|
+
description: >
|
|
25439
|
+
Reusable operational workflow patterns for the Jeeves platform. Use when asked to
|
|
25440
|
+
set up a daily briefing for a person or team, create standing meeting ops (notes +
|
|
25441
|
+
agenda generation), replicate an existing workflow pattern for a new context, or
|
|
25442
|
+
understand how recurring intelligence/ops workflows are structured. Covers the
|
|
25443
|
+
full stack: content directory, TASK files, standing orders, runner jobs, dispatcher
|
|
25444
|
+
scripts, Slack channel integration, and meta synthesis.
|
|
25445
|
+
---
|
|
25446
|
+
|
|
25447
|
+
# Playbooks
|
|
25448
|
+
|
|
25449
|
+
Proven, replicable operational patterns. Each playbook describes what it does, what
|
|
25450
|
+
infrastructure it needs, and how to instantiate a new instance.
|
|
25451
|
+
|
|
25452
|
+
## Common Infrastructure
|
|
25453
|
+
|
|
25454
|
+
All playbooks share these building blocks:
|
|
25455
|
+
|
|
25456
|
+
| Component | Purpose |
|
|
25457
|
+
|-----------|---------|
|
|
25458
|
+
| **Content directory** | \`{workspace}/../<silo>/<domain>/\` — stores output files, \`.meta/\`, standing orders |
|
|
25459
|
+
| **TASK file** | Markdown prompt that defines the LLM session's entire job |
|
|
25460
|
+
| **Standing orders** | \`standing-orders.md\` — append-only file for persistent stakeholder preferences |
|
|
25461
|
+
| **Dispatcher script** | TypeScript in \`{configRoot}/jeeves-core/scripts/src/\` — reads TASK, spawns worker |
|
|
25462
|
+
| **Runner job** | jeeves-runner job with cron schedule, timezone, and rrstack |
|
|
25463
|
+
| **Slack channel** | Delivery surface — summary posts, quick-link pins, feedback loop |
|
|
25464
|
+
| **Meta entity** | \`.meta/\` directory seeded so jeeves-meta synthesizes context over time |
|
|
25465
|
+
|
|
25466
|
+
### Dispatcher Pattern
|
|
25467
|
+
|
|
25468
|
+
All dispatchers use \`taskFileDispatcher\` from \`dispatchers/lib/task-file-dispatcher.ts\`:
|
|
25469
|
+
|
|
25470
|
+
\`\`\`typescript
|
|
25471
|
+
import { taskFileDispatcher } from '../dispatchers/lib/task-file-dispatcher.js';
|
|
25472
|
+
|
|
25473
|
+
taskFileDispatcher({
|
|
25474
|
+
scriptName: '<silo>/<job-name>',
|
|
25475
|
+
jobId: '<runner-job-id>',
|
|
25476
|
+
taskFile: '<path-to-TASK.md>',
|
|
25477
|
+
timeout: 600,
|
|
25478
|
+
injectDateContext: true,
|
|
25479
|
+
dateTimezone: '<IANA timezone>',
|
|
25480
|
+
});
|
|
25481
|
+
\`\`\`
|
|
25482
|
+
|
|
25483
|
+
\`injectDateContext: true\` prepends an authoritative date line so the LLM knows today's date.
|
|
25484
|
+
|
|
25485
|
+
### Standing Orders Convention
|
|
25486
|
+
|
|
25487
|
+
- Append-only — never modify existing entries
|
|
25488
|
+
- TASK files instruct the LLM to read standing orders at Step 0
|
|
25489
|
+
- TASK files instruct the LLM to append new persistent preferences from channel feedback
|
|
25490
|
+
- Include initial configuration section with participants, timezones, channel rules
|
|
25491
|
+
|
|
25492
|
+
## Available Playbook Patterns
|
|
25493
|
+
|
|
25494
|
+
| Pattern | Description |
|
|
25495
|
+
|---------|-------------|
|
|
25496
|
+
| **Daily Briefing** | Recurring intelligence or action-item report for a stakeholder |
|
|
25497
|
+
| **Standing Meeting Ops** | Post-meeting notes + next-day agenda generation for a recurring meeting |
|
|
25498
|
+
|
|
25499
|
+
## Instantiation Checklist
|
|
25500
|
+
|
|
25501
|
+
When creating a new playbook instance:
|
|
25502
|
+
|
|
25503
|
+
1. Choose the appropriate pattern from the table above
|
|
25504
|
+
2. Create the content directory with \`.meta/\` and \`standing-orders.md\`
|
|
25505
|
+
3. Write the TASK file(s) — adapt from an existing instance. Ensure Step 0 reads feedback from the *delivery channel* (where output is posted), not only a DM
|
|
25506
|
+
4. Write the dispatcher script(s) in \`{configRoot}/jeeves-core/scripts/src/<silo>/\`
|
|
25507
|
+
5. Register the runner job(s) with appropriate cron, timezone, rrstack
|
|
25508
|
+
6. Set up the Slack channel — pin a quick-links message if the pattern calls for it
|
|
25509
|
+
7. Seed \`.meta/\` so meta synthesis begins
|
|
25510
|
+
8. Test with \`--dry-run\` before going live
|
|
25511
|
+
`;
|
|
25512
|
+
|
|
25513
|
+
var slackBotProvisionerContent = `---
|
|
25514
|
+
name: slack-bot-provisioner
|
|
25515
|
+
description: Provision a new Slack bot identity for Clawdbot on a fresh server. Guides through Slack App creation steps, collects tokens, writes local config/env, and verifies connectivity.
|
|
25516
|
+
---
|
|
25517
|
+
|
|
25518
|
+
# Slack bot provisioner (per-bot server)
|
|
25519
|
+
|
|
25520
|
+
Use this when you are setting up **a new Clawdbot instance** that should have **its own Slack bot identity** (one Slack App per bot), and you want a repeatable guided setup.
|
|
25521
|
+
|
|
25522
|
+
This skill assumes:
|
|
25523
|
+
- The user is a Slack workspace admin.
|
|
25524
|
+
- Each bot runs on its own server with its own Gateway config.
|
|
25525
|
+
|
|
25526
|
+
## What can be automated vs not
|
|
25527
|
+
|
|
25528
|
+
**Automated (this skill):**
|
|
25529
|
+
- Create local folders.
|
|
25530
|
+
- Write a \`slack.env\` (bot token, signing secret).
|
|
25531
|
+
- Patch the Clawdbot gateway config to enable Slack for this instance (user approves).
|
|
25532
|
+
- Run a connectivity test (send a message to a channel).
|
|
25533
|
+
|
|
25534
|
+
**Not fully automatable (Slack-side):**
|
|
25535
|
+
- Creating/installing the Slack App and granting scopes (UI/OAuth).
|
|
25536
|
+
- Verifying event subscription URLs (requires public HTTPS endpoint).
|
|
25537
|
+
|
|
25538
|
+
## Recommended mode
|
|
25539
|
+
Start with **outbound-only** (post messages) and expand to event subscriptions later.
|
|
25540
|
+
|
|
25541
|
+
## Quick start
|
|
25542
|
+
|
|
25543
|
+
1) Have the user do the Slack UI steps in \`references/slack-app-checklist.md\`.
|
|
25544
|
+
2) Run the provisioning script:
|
|
25545
|
+
|
|
25546
|
+
- PowerShell:
|
|
25547
|
+
- \`powershell -NoProfile -ExecutionPolicy Bypass -File scripts/provision.ps1\`
|
|
25548
|
+
|
|
25549
|
+
The script will prompt for:
|
|
25550
|
+
- bot name
|
|
25551
|
+
- Slack bot token (\`xoxb-...\`)
|
|
25552
|
+
- Slack signing secret
|
|
25553
|
+
- (optional) test channel id
|
|
25554
|
+
|
|
25555
|
+
## Files
|
|
25556
|
+
- Script: \`scripts/provision.ps1\`
|
|
25557
|
+
- Reference checklist: \`references/slack-app-checklist.md\`
|
|
25558
|
+
- Reference scopes: \`references/scopes.md\`
|
|
25559
|
+
|
|
25560
|
+
## Secrets (best practices)
|
|
25561
|
+
- **Do not** store secrets inside the skill folder (skills are meant to be shareable/publishable).
|
|
25562
|
+
- Store secrets **per-instance** in the Clawdbot runtime directory (recommended):
|
|
25563
|
+
- \`C:\\Users\\Administrator\\.clawdbot\\credentials\\...\`
|
|
25564
|
+
- Prefer environment variables / local credential files loaded by the Gateway/service manager.
|
|
25565
|
+
- Never paste Slack secrets into public chats.
|
|
25566
|
+
|
|
25567
|
+
## Safety notes
|
|
25568
|
+
- Store secrets per-instance. Do not reuse tokens across bot identities.
|
|
25569
|
+
- Avoid bot-to-bot loops: bots should ignore messages from other bots by default.
|
|
25570
|
+
`;
|
|
25571
|
+
|
|
25094
25572
|
/**
|
|
25095
|
-
* Skill seeding: write
|
|
25573
|
+
* Skill seeding: write all bundled platform skills to the workspace.
|
|
25096
25574
|
*
|
|
25097
25575
|
* @remarks
|
|
25098
|
-
*
|
|
25099
|
-
* Every installer (core CLI and component plugins) writes
|
|
25576
|
+
* Skill files are entirely generated — no user-authored content (Decision 48).
|
|
25577
|
+
* Every installer (core CLI and component plugins) writes them unconditionally.
|
|
25100
25578
|
* Content is inlined at build time via `rollup-plugin-md.ts`.
|
|
25579
|
+
*
|
|
25580
|
+
* @module
|
|
25101
25581
|
*/
|
|
25582
|
+
/** Map of skill directory name to inlined content. */
|
|
25583
|
+
const BUNDLED_SKILLS = {
|
|
25584
|
+
jeeves: jeevesContent,
|
|
25585
|
+
coding: codingContent,
|
|
25586
|
+
'slack-bot-provisioner': slackBotProvisionerContent,
|
|
25587
|
+
operations: operationsContent,
|
|
25588
|
+
playbooks: playbooksContent,
|
|
25589
|
+
};
|
|
25102
25590
|
/**
|
|
25103
|
-
* Seed
|
|
25591
|
+
* Seed all bundled platform skills into the workspace.
|
|
25592
|
+
*
|
|
25593
|
+
* @remarks
|
|
25594
|
+
* Writes each skill to `{workspace}/skills/{name}/SKILL.md`, creating
|
|
25595
|
+
* directories as needed. Overwrites existing content unconditionally.
|
|
25104
25596
|
*
|
|
25105
25597
|
* @param workspacePath - Workspace root directory.
|
|
25106
25598
|
*/
|
|
25107
|
-
function
|
|
25108
|
-
const
|
|
25109
|
-
|
|
25110
|
-
|
|
25599
|
+
function seedSkills(workspacePath) {
|
|
25600
|
+
for (const [name, content] of Object.entries(BUNDLED_SKILLS)) {
|
|
25601
|
+
const skillDir = join(workspacePath, SKILLS_DIR, name);
|
|
25602
|
+
if (!existsSync(skillDir)) {
|
|
25603
|
+
mkdirSync(skillDir, { recursive: true });
|
|
25604
|
+
}
|
|
25605
|
+
writeFileSync(join(skillDir, 'SKILL.md'), content, 'utf-8');
|
|
25111
25606
|
}
|
|
25112
|
-
const skillPath = join(skillDir, 'SKILL.md');
|
|
25113
|
-
writeFileSync(skillPath, skillContent, 'utf-8');
|
|
25114
25607
|
}
|
|
25115
25608
|
|
|
25116
25609
|
/**
|
|
@@ -25565,11 +26058,11 @@ function createPluginCli(options) {
|
|
|
25565
26058
|
console.log(' ⚠ Could not write HEARTBEAT entry');
|
|
25566
26059
|
}
|
|
25567
26060
|
try {
|
|
25568
|
-
|
|
25569
|
-
console.log(' ✓
|
|
26061
|
+
seedSkills(ws);
|
|
26062
|
+
console.log(' ✓ Platform skills seeded');
|
|
25570
26063
|
}
|
|
25571
26064
|
catch {
|
|
25572
|
-
console.log(' ⚠ Could not seed
|
|
26065
|
+
console.log(' ⚠ Could not seed platform skills');
|
|
25573
26066
|
}
|
|
25574
26067
|
}
|
|
25575
26068
|
}
|