agency-lang 0.7.5 → 0.7.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/lib/agents/agency-agent/agent.agency +1 -1
- package/dist/lib/agents/agency-agent/agent.js +1 -1
- package/dist/lib/agents/agency-agent/lib/defaultPolicy.agency +16 -17
- package/dist/lib/agents/agency-agent/lib/defaultPolicy.js +13 -147
- package/dist/lib/runtime/policy.js +17 -5
- package/dist/lib/runtime/policy.test.js +39 -0
- package/dist/lib/stdlib/version.d.ts +1 -1
- package/dist/lib/stdlib/version.js +1 -1
- package/package.json +1 -1
|
@@ -1257,7 +1257,7 @@ node main() {
|
|
|
1257
1257
|
policy: {
|
|
1258
1258
|
type: "string",
|
|
1259
1259
|
optional: true,
|
|
1260
|
-
description: "Approval policy for this run: a built-in name (minimal, recommended, with-writes,
|
|
1260
|
+
description: "Approval policy for this run: a built-in name (minimal, recommended, with-writes, approve-all) or a path to a policy JSON file. with-writes auto-approves file writes and git changes scoped to the current directory and its children; approve-all approves EVERY interrupt with no scoping (sandbox use only). Overrides the saved policy without persisting it. Pass --policy with no value to list the built-in policies."
|
|
1261
1261
|
},
|
|
1262
1262
|
local: {
|
|
1263
1263
|
type: "string",
|
|
@@ -7354,7 +7354,7 @@ graph.node("main", async (__state) => {
|
|
|
7354
7354
|
"policy": {
|
|
7355
7355
|
"type": `string`,
|
|
7356
7356
|
"optional": true,
|
|
7357
|
-
"description": `Approval policy for this run: a built-in name (minimal, recommended, with-writes,
|
|
7357
|
+
"description": `Approval policy for this run: a built-in name (minimal, recommended, with-writes, approve-all) or a path to a policy JSON file. with-writes auto-approves file writes and git changes scoped to the current directory and its children; approve-all approves EVERY interrupt with no scoping (sandbox use only). Overrides the saved policy without persisting it. Pass --policy with no value to list the built-in policies.`
|
|
7358
7358
|
},
|
|
7359
7359
|
"local": {
|
|
7360
7360
|
"type": `string`,
|
|
@@ -163,19 +163,18 @@ export def withWritesPolicy(baseDir: string) {
|
|
|
163
163
|
}
|
|
164
164
|
}
|
|
165
165
|
|
|
166
|
-
//
|
|
167
|
-
//
|
|
168
|
-
//
|
|
169
|
-
//
|
|
170
|
-
//
|
|
171
|
-
//
|
|
172
|
-
//
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
}
|
|
166
|
+
// Approve EVERY interrupt — reads, writes, shell, git, anything, anywhere,
|
|
167
|
+
// with no path scoping. The `"*"` wildcard is a catch-all that `checkPolicy`
|
|
168
|
+
// consults for any effect without a more specific rule (see
|
|
169
|
+
// lib/runtime/policy.ts). This is NOT confined in any way: it will approve
|
|
170
|
+
// writes and shell commands outside the working directory, deletes, network
|
|
171
|
+
// calls — everything. Use it ONLY in a disposable sandbox (e.g. a benchmark
|
|
172
|
+
// container) where the whole environment is throwaway. `std::bash` cannot be
|
|
173
|
+
// meaningfully confined to a directory anyway (a command can `cd` or use
|
|
174
|
+
// absolute paths), so for autonomous sandbox runs a blanket approve-all is
|
|
175
|
+
// both simpler and more honest than a best-effort per-effect scope.
|
|
176
|
+
export static const approveAllPolicy = {
|
|
177
|
+
"*": [{ action: "approve" }]
|
|
179
178
|
}
|
|
180
179
|
|
|
181
180
|
// Built-in policies accepted by the `--policy` flag (anything else is
|
|
@@ -196,8 +195,8 @@ export static const BUILTIN_POLICIES = [
|
|
|
196
195
|
description: "recommended + auto-approve file writes and git changes, scoped to the current directory and its children."
|
|
197
196
|
},
|
|
198
197
|
{
|
|
199
|
-
name: "
|
|
200
|
-
description: "
|
|
198
|
+
name: "approve-all",
|
|
199
|
+
description: "Approve EVERY interrupt — reads, writes, shell, git, anywhere, no scoping. UNSAFE outside a disposable sandbox."
|
|
201
200
|
},
|
|
202
201
|
]
|
|
203
202
|
|
|
@@ -221,8 +220,8 @@ export def builtinPolicy(name: string, baseDir: string) {
|
|
|
221
220
|
if (name == "with-writes") {
|
|
222
221
|
return withWritesPolicy(baseDir)
|
|
223
222
|
}
|
|
224
|
-
if (name == "
|
|
225
|
-
return
|
|
223
|
+
if (name == "approve-all") {
|
|
224
|
+
return approveAllPolicy
|
|
226
225
|
}
|
|
227
226
|
return null
|
|
228
227
|
}
|
|
@@ -164,6 +164,7 @@ let __staticInitPromise = null;
|
|
|
164
164
|
let AGENCY_SAFE_SUBCOMMANDS = __UNINIT_STATIC;
|
|
165
165
|
let minimalAutoApprovePolicy = __UNINIT_STATIC;
|
|
166
166
|
let recommendedAutoApprovePolicy = __UNINIT_STATIC;
|
|
167
|
+
let approveAllPolicy = __UNINIT_STATIC;
|
|
167
168
|
let BUILTIN_POLICIES = __UNINIT_STATIC;
|
|
168
169
|
async function __initializeStatic(__ctx) {
|
|
169
170
|
if (__staticInitPromise) {
|
|
@@ -264,6 +265,11 @@ async function __initializeStatic(__ctx) {
|
|
|
264
265
|
"action": `approve`
|
|
265
266
|
}]
|
|
266
267
|
});
|
|
268
|
+
approveAllPolicy = __deepFreeze({
|
|
269
|
+
"*": [{
|
|
270
|
+
"action": `approve`
|
|
271
|
+
}]
|
|
272
|
+
});
|
|
267
273
|
BUILTIN_POLICIES = __deepFreeze([{
|
|
268
274
|
"name": `recommended`,
|
|
269
275
|
"description": `Auto-approve reads and web/search; prompt for writes, shell, and git changes. (Default.)`
|
|
@@ -274,8 +280,8 @@ async function __initializeStatic(__ctx) {
|
|
|
274
280
|
"name": `with-writes`,
|
|
275
281
|
"description": `recommended + auto-approve file writes and git changes, scoped to the current directory and its children.`
|
|
276
282
|
}, {
|
|
277
|
-
"name": `
|
|
278
|
-
"description": `
|
|
283
|
+
"name": `approve-all`,
|
|
284
|
+
"description": `Approve EVERY interrupt \u2014 reads, writes, shell, git, anywhere, no scoping. UNSAFE outside a disposable sandbox.`
|
|
279
285
|
}]);
|
|
280
286
|
})();
|
|
281
287
|
return __staticInitPromise;
|
|
@@ -285,6 +291,7 @@ function __getStaticVars() {
|
|
|
285
291
|
AGENCY_SAFE_SUBCOMMANDS,
|
|
286
292
|
minimalAutoApprovePolicy,
|
|
287
293
|
recommendedAutoApprovePolicy,
|
|
294
|
+
approveAllPolicy,
|
|
288
295
|
BUILTIN_POLICIES
|
|
289
296
|
};
|
|
290
297
|
}
|
|
@@ -728,144 +735,6 @@ const withWritesPolicy = __AgencyFunction.create({
|
|
|
728
735
|
safe: false,
|
|
729
736
|
exported: true
|
|
730
737
|
}, __toolRegistry);
|
|
731
|
-
async function __withBashPolicy_impl(baseDir) {
|
|
732
|
-
const __setupData = setupFunction();
|
|
733
|
-
const __stack = __setupData.stack;
|
|
734
|
-
const __step = __setupData.step;
|
|
735
|
-
const __self = __setupData.self;
|
|
736
|
-
const __ctx = getRuntimeContext().ctx;
|
|
737
|
-
let __forked;
|
|
738
|
-
let __functionCompleted = false;
|
|
739
|
-
if (!__globals().isInitialized("dist/lib/agents/agency-agent/lib/defaultPolicy.agency")) {
|
|
740
|
-
await __initializeGlobals(__ctx);
|
|
741
|
-
}
|
|
742
|
-
let __funcStartTime = performance.now();
|
|
743
|
-
__stack.args["baseDir"] = baseDir;
|
|
744
|
-
__self.__retryable = __self.__retryable ?? true;
|
|
745
|
-
const runner = new Runner(__ctx, __stack, { state: __stack, moduleId: "dist/lib/agents/agency-agent/lib/defaultPolicy.agency", scopeName: "withBashPolicy", threads: __setupData.threads });
|
|
746
|
-
let __resultCheckpointId = -1;
|
|
747
|
-
if (__ctx._pendingArgOverrides) {
|
|
748
|
-
const __overrides = __ctx._pendingArgOverrides;
|
|
749
|
-
__ctx._pendingArgOverrides = void 0;
|
|
750
|
-
if ("baseDir" in __overrides) {
|
|
751
|
-
baseDir = __overrides["baseDir"];
|
|
752
|
-
__stack.args["baseDir"] = baseDir;
|
|
753
|
-
}
|
|
754
|
-
}
|
|
755
|
-
try {
|
|
756
|
-
await agencyStore.run({
|
|
757
|
-
...getRuntimeContext(),
|
|
758
|
-
ctx: __ctx,
|
|
759
|
-
stack: __setupData.stateStack,
|
|
760
|
-
threads: __setupData.threads
|
|
761
|
-
}, async () => {
|
|
762
|
-
await runner.hook(0, async () => {
|
|
763
|
-
await callHook({
|
|
764
|
-
name: "onFunctionStart",
|
|
765
|
-
data: {
|
|
766
|
-
functionName: "withBashPolicy",
|
|
767
|
-
args: {
|
|
768
|
-
baseDir
|
|
769
|
-
},
|
|
770
|
-
moduleId: "dist/lib/agents/agency-agent/lib/defaultPolicy.agency"
|
|
771
|
-
}
|
|
772
|
-
});
|
|
773
|
-
});
|
|
774
|
-
await runner.step(1, async (runner2) => {
|
|
775
|
-
__stack.locals.scope = await __call(dirScope, {
|
|
776
|
-
type: "positional",
|
|
777
|
-
args: [__stack.args.baseDir]
|
|
778
|
-
});
|
|
779
|
-
if (hasInterrupts(__stack.locals.scope)) {
|
|
780
|
-
await getRuntimeContext().ctx.pendingPromises.awaitAll();
|
|
781
|
-
runner2.halt(__stack.locals.scope);
|
|
782
|
-
return;
|
|
783
|
-
}
|
|
784
|
-
});
|
|
785
|
-
await runner.step(2, async (runner2) => {
|
|
786
|
-
__functionCompleted = true;
|
|
787
|
-
runner2.halt({
|
|
788
|
-
...await __call(withWritesPolicy, {
|
|
789
|
-
type: "positional",
|
|
790
|
-
args: [__stack.args.baseDir]
|
|
791
|
-
}),
|
|
792
|
-
"std::bash": [{
|
|
793
|
-
"match": {
|
|
794
|
-
"cwd": __stack.locals.scope
|
|
795
|
-
},
|
|
796
|
-
"action": `approve`
|
|
797
|
-
}]
|
|
798
|
-
});
|
|
799
|
-
return;
|
|
800
|
-
});
|
|
801
|
-
});
|
|
802
|
-
if (runner.halted) {
|
|
803
|
-
if (isFailure(runner.haltResult)) {
|
|
804
|
-
runner.haltResult.retryable = runner.haltResult.retryable && __self.__retryable;
|
|
805
|
-
}
|
|
806
|
-
return runner.haltResult;
|
|
807
|
-
}
|
|
808
|
-
} catch (__error) {
|
|
809
|
-
if (__error instanceof RestoreSignal) {
|
|
810
|
-
throw __error;
|
|
811
|
-
}
|
|
812
|
-
if (__error instanceof AgencyAbort) {
|
|
813
|
-
throw __error;
|
|
814
|
-
}
|
|
815
|
-
{
|
|
816
|
-
const __errMsg = __error instanceof Error ? __error.message : String(__error);
|
|
817
|
-
const __errStack = __error instanceof Error && __error.stack ? __error.stack : "";
|
|
818
|
-
const __log = __createLogger(__ctx.logLevel);
|
|
819
|
-
__log.error("Function withBashPolicy threw an exception (converted to Failure): " + __errMsg);
|
|
820
|
-
if (__errStack) __log.error(__errStack);
|
|
821
|
-
__ctx.statelogClient?.error?.({
|
|
822
|
-
errorType: "runtimeError",
|
|
823
|
-
message: __errMsg,
|
|
824
|
-
functionName: "withBashPolicy",
|
|
825
|
-
retryable: __self.__retryable
|
|
826
|
-
});
|
|
827
|
-
}
|
|
828
|
-
return failure(
|
|
829
|
-
__error instanceof Error ? __error.message : String(__error),
|
|
830
|
-
{
|
|
831
|
-
checkpoint: getRuntimeContext().ctx.getResultCheckpoint(),
|
|
832
|
-
retryable: __self.__retryable,
|
|
833
|
-
functionName: "withBashPolicy",
|
|
834
|
-
args: __stack.args
|
|
835
|
-
}
|
|
836
|
-
);
|
|
837
|
-
} finally {
|
|
838
|
-
__stateStack()?.pop();
|
|
839
|
-
if (__functionCompleted) {
|
|
840
|
-
await callHook({
|
|
841
|
-
name: "onFunctionEnd",
|
|
842
|
-
data: {
|
|
843
|
-
functionName: "withBashPolicy",
|
|
844
|
-
timeTaken: performance.now() - __funcStartTime
|
|
845
|
-
}
|
|
846
|
-
});
|
|
847
|
-
}
|
|
848
|
-
}
|
|
849
|
-
}
|
|
850
|
-
const withBashPolicy = __AgencyFunction.create({
|
|
851
|
-
name: "withBashPolicy",
|
|
852
|
-
module: "dist/lib/agents/agency-agent/lib/defaultPolicy.agency",
|
|
853
|
-
fn: __withBashPolicy_impl,
|
|
854
|
-
params: [{
|
|
855
|
-
name: "baseDir",
|
|
856
|
-
hasDefault: false,
|
|
857
|
-
defaultValue: void 0,
|
|
858
|
-
variadic: false,
|
|
859
|
-
isFunctionTyped: false
|
|
860
|
-
}],
|
|
861
|
-
toolDefinition: {
|
|
862
|
-
name: "withBashPolicy",
|
|
863
|
-
description: "No description provided.",
|
|
864
|
-
schema: z.object({ "baseDir": z.string() })
|
|
865
|
-
},
|
|
866
|
-
safe: false,
|
|
867
|
-
exported: true
|
|
868
|
-
}, __toolRegistry);
|
|
869
738
|
async function __builtinPolicyNames_impl() {
|
|
870
739
|
const __setupData = setupFunction();
|
|
871
740
|
const __stack = __setupData.stack;
|
|
@@ -1081,14 +950,11 @@ async function __builtinPolicy_impl(name, baseDir) {
|
|
|
1081
950
|
]);
|
|
1082
951
|
await runner.ifElse(4, [
|
|
1083
952
|
{
|
|
1084
|
-
condition: async () => __eq(__stack.args.name, `
|
|
953
|
+
condition: async () => __eq(__stack.args.name, `approve-all`),
|
|
1085
954
|
body: async (runner2) => {
|
|
1086
955
|
await runner2.step(0, async (runner3) => {
|
|
1087
956
|
__functionCompleted = true;
|
|
1088
|
-
runner3.halt(
|
|
1089
|
-
type: "positional",
|
|
1090
|
-
args: [__stack.args.baseDir]
|
|
1091
|
-
}));
|
|
957
|
+
runner3.halt(__readStatic(approveAllPolicy, "approveAllPolicy", "dist/lib/agents/agency-agent/lib/defaultPolicy.agency"));
|
|
1092
958
|
return;
|
|
1093
959
|
});
|
|
1094
960
|
}
|
|
@@ -1174,7 +1040,7 @@ const builtinPolicy = __AgencyFunction.create({
|
|
|
1174
1040
|
exported: true
|
|
1175
1041
|
}, __toolRegistry);
|
|
1176
1042
|
var stdin_default = graph;
|
|
1177
|
-
const __sourceMap = { "dist/lib/agents/agency-agent/lib/defaultPolicy.agency:agencyExecApproveRules": { "1": { "line": 20, "col": 2 } }, "dist/lib/agents/agency-agent/lib/defaultPolicy.agency:__block_0": { "1.0": { "line": 21, "col": 4 } }, "dist/lib/agents/agency-agent/lib/defaultPolicy.agency:dirScope": { "1": { "line": 130, "col": 2 } }, "dist/lib/agents/agency-agent/lib/defaultPolicy.agency:withWritesPolicy": { "1": { "line": 141, "col": 2 }, "2": { "line": 142, "col": 2 }, "3": { "line": 143, "col": 2 }, "4": { "line": 144, "col": 2 } }, "dist/lib/agents/agency-agent/lib/defaultPolicy.agency:
|
|
1043
|
+
const __sourceMap = { "dist/lib/agents/agency-agent/lib/defaultPolicy.agency:agencyExecApproveRules": { "1": { "line": 20, "col": 2 } }, "dist/lib/agents/agency-agent/lib/defaultPolicy.agency:__block_0": { "1.0": { "line": 21, "col": 4 } }, "dist/lib/agents/agency-agent/lib/defaultPolicy.agency:dirScope": { "1": { "line": 130, "col": 2 } }, "dist/lib/agents/agency-agent/lib/defaultPolicy.agency:withWritesPolicy": { "1": { "line": 141, "col": 2 }, "2": { "line": 142, "col": 2 }, "3": { "line": 143, "col": 2 }, "4": { "line": 144, "col": 2 } }, "dist/lib/agents/agency-agent/lib/defaultPolicy.agency:builtinPolicyNames": { "1": { "line": 204, "col": 2 } }, "dist/lib/agents/agency-agent/lib/defaultPolicy.agency:__block_1": { "1.0": { "line": 205, "col": 4 } }, "dist/lib/agents/agency-agent/lib/defaultPolicy.agency:builtinPolicy": { "1": { "line": 213, "col": 2 }, "2": { "line": 216, "col": 2 }, "3": { "line": 219, "col": 2 }, "4": { "line": 222, "col": 2 }, "5": { "line": 225, "col": 2 }, "1.0": { "line": 214, "col": 4 }, "2.0": { "line": 217, "col": 4 }, "3.0": { "line": 220, "col": 4 }, "4.0": { "line": 223, "col": 4 } } };
|
|
1178
1044
|
export {
|
|
1179
1045
|
BUILTIN_POLICIES,
|
|
1180
1046
|
__getCheckpoints,
|
|
@@ -1186,6 +1052,7 @@ export {
|
|
|
1186
1052
|
__toolRegistry,
|
|
1187
1053
|
agencyExecApproveRules,
|
|
1188
1054
|
approve,
|
|
1055
|
+
approveAllPolicy,
|
|
1189
1056
|
builtinPolicy,
|
|
1190
1057
|
builtinPolicyNames,
|
|
1191
1058
|
stdin_default as default,
|
|
@@ -1199,6 +1066,5 @@ export {
|
|
|
1199
1066
|
reject,
|
|
1200
1067
|
respondToInterrupts,
|
|
1201
1068
|
rewindFrom,
|
|
1202
|
-
withBashPolicy,
|
|
1203
1069
|
withWritesPolicy
|
|
1204
1070
|
};
|
|
@@ -6,13 +6,25 @@ export const PolicyRuleSchema = z.object({
|
|
|
6
6
|
});
|
|
7
7
|
export const PolicySchema = z.record(z.string(), z.array(PolicyRuleSchema));
|
|
8
8
|
export function checkPolicy(policy, interrupt) {
|
|
9
|
+
// Effect-specific rules take precedence over the wildcard.
|
|
9
10
|
const rules = policy[interrupt.effect];
|
|
10
|
-
if (
|
|
11
|
-
|
|
11
|
+
if (rules) {
|
|
12
|
+
for (const rule of rules) {
|
|
13
|
+
if (matchesRule(rule, interrupt)) {
|
|
14
|
+
return { type: rule.action };
|
|
15
|
+
}
|
|
16
|
+
}
|
|
12
17
|
}
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
18
|
+
// Wildcard catch-all: the `"*"` effect key applies to any interrupt whose
|
|
19
|
+
// own effect had no matching rule. This is how an "approve-all" policy
|
|
20
|
+
// covers effects it doesn't enumerate (a plain per-effect map would
|
|
21
|
+
// `propagate` — i.e. prompt — on anything unlisted).
|
|
22
|
+
const wildcard = policy["*"];
|
|
23
|
+
if (wildcard) {
|
|
24
|
+
for (const rule of wildcard) {
|
|
25
|
+
if (matchesRule(rule, interrupt)) {
|
|
26
|
+
return { type: rule.action };
|
|
27
|
+
}
|
|
16
28
|
}
|
|
17
29
|
}
|
|
18
30
|
return { type: "propagate" };
|
|
@@ -111,6 +111,45 @@ describe("checkPolicy", () => {
|
|
|
111
111
|
const result = checkPolicy(policy, { effect: "test::x", message: "", data: {}, origin: "" });
|
|
112
112
|
expect(result).toEqual({ type: "reject" });
|
|
113
113
|
});
|
|
114
|
+
describe('"*" wildcard catch-all', () => {
|
|
115
|
+
it("approve-all: applies to every effect, including unlisted ones", () => {
|
|
116
|
+
const policy = { "*": [{ action: "approve" }] };
|
|
117
|
+
for (const effect of ["std::write", "std::bash", "std::remove", "anything::else"]) {
|
|
118
|
+
expect(checkPolicy(policy, { effect, message: "", data: { dir: "/etc" }, origin: "" }))
|
|
119
|
+
.toEqual({ type: "approve" });
|
|
120
|
+
}
|
|
121
|
+
});
|
|
122
|
+
it("effect-specific rules take precedence over the wildcard", () => {
|
|
123
|
+
const policy = {
|
|
124
|
+
"std::bash": [{ action: "reject" }],
|
|
125
|
+
"*": [{ action: "approve" }],
|
|
126
|
+
};
|
|
127
|
+
expect(checkPolicy(policy, { effect: "std::bash", message: "", data: {}, origin: "" }))
|
|
128
|
+
.toEqual({ type: "reject" });
|
|
129
|
+
// An effect with no specific rule falls through to the wildcard.
|
|
130
|
+
expect(checkPolicy(policy, { effect: "std::write", message: "", data: {}, origin: "" }))
|
|
131
|
+
.toEqual({ type: "approve" });
|
|
132
|
+
});
|
|
133
|
+
it("falls back to the wildcard when a specific effect's rules all miss", () => {
|
|
134
|
+
const policy = {
|
|
135
|
+
"std::write": [{ match: { dir: "/app/**" }, action: "approve" }],
|
|
136
|
+
"*": [{ action: "reject" }],
|
|
137
|
+
};
|
|
138
|
+
// Inside /app: matched by the specific rule.
|
|
139
|
+
expect(checkPolicy(policy, { effect: "std::write", message: "", data: { dir: "/app/x" }, origin: "" }))
|
|
140
|
+
.toEqual({ type: "approve" });
|
|
141
|
+
// Outside /app: the specific rule misses, so the wildcard rejects.
|
|
142
|
+
expect(checkPolicy(policy, { effect: "std::write", message: "", data: { dir: "/etc/x" }, origin: "" }))
|
|
143
|
+
.toEqual({ type: "reject" });
|
|
144
|
+
});
|
|
145
|
+
it("still propagates when neither the effect nor the wildcard matches", () => {
|
|
146
|
+
const policy = {
|
|
147
|
+
"*": [{ match: { dir: "/app/**" }, action: "approve" }],
|
|
148
|
+
};
|
|
149
|
+
expect(checkPolicy(policy, { effect: "std::write", message: "", data: { dir: "/etc/x" }, origin: "" }))
|
|
150
|
+
.toEqual({ type: "propagate" });
|
|
151
|
+
});
|
|
152
|
+
});
|
|
114
153
|
describe("./ prefix normalization (picomatch workaround)", () => {
|
|
115
154
|
// picomatch.isMatch returns false for patterns starting with `./`
|
|
116
155
|
// when combined with `**` or brace expansions — e.g.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const VERSION = "0.7.
|
|
1
|
+
export declare const VERSION = "0.7.6";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export const VERSION = "0.7.
|
|
1
|
+
export const VERSION = "0.7.6";
|