@intentic/extension-manifest 1.176.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +74 -0
- package/dist/bundle.d.ts +4 -0
- package/dist/bundle.d.ts.map +1 -0
- package/dist/bundle.js +22 -0
- package/dist/bundle.js.map +1 -0
- package/dist/contribution-point.d.ts +7 -0
- package/dist/contribution-point.d.ts.map +1 -0
- package/dist/contribution-point.js +2 -0
- package/dist/contribution-point.js.map +1 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +8 -0
- package/dist/index.js.map +1 -0
- package/dist/json-schema.d.ts +4 -0
- package/dist/json-schema.d.ts.map +1 -0
- package/dist/json-schema.js +33 -0
- package/dist/json-schema.js.map +1 -0
- package/dist/manifest.d.ts +300 -0
- package/dist/manifest.d.ts.map +1 -0
- package/dist/manifest.js +46 -0
- package/dist/manifest.js.map +1 -0
- package/dist/mark.d.ts +6 -0
- package/dist/mark.d.ts.map +1 -0
- package/dist/mark.js +12 -0
- package/dist/mark.js.map +1 -0
- package/dist/permissions.d.ts +2 -0
- package/dist/permissions.d.ts.map +1 -0
- package/dist/permissions.js +21 -0
- package/dist/permissions.js.map +1 -0
- package/dist/points/agent.d.ts +13 -0
- package/dist/points/agent.d.ts.map +1 -0
- package/dist/points/agent.js +10 -0
- package/dist/points/agent.js.map +1 -0
- package/dist/points/automation-templates.d.ts +67 -0
- package/dist/points/automation-templates.d.ts.map +1 -0
- package/dist/points/automation-templates.js +47 -0
- package/dist/points/automation-templates.js.map +1 -0
- package/dist/points/bin.d.ts +7 -0
- package/dist/points/bin.d.ts.map +1 -0
- package/dist/points/bin.js +10 -0
- package/dist/points/bin.js.map +1 -0
- package/dist/points/capabilities.d.ts +352 -0
- package/dist/points/capabilities.d.ts.map +1 -0
- package/dist/points/capabilities.js +131 -0
- package/dist/points/capabilities.js.map +1 -0
- package/dist/points/commands.d.ts +21 -0
- package/dist/points/commands.d.ts.map +1 -0
- package/dist/points/commands.js +23 -0
- package/dist/points/commands.js.map +1 -0
- package/dist/points/documents.d.ts +15 -0
- package/dist/points/documents.d.ts.map +1 -0
- package/dist/points/documents.js +14 -0
- package/dist/points/documents.js.map +1 -0
- package/dist/points/environment.d.ts +13 -0
- package/dist/points/environment.d.ts.map +1 -0
- package/dist/points/environment.js +14 -0
- package/dist/points/environment.js.map +1 -0
- package/dist/points/files.d.ts +15 -0
- package/dist/points/files.d.ts.map +1 -0
- package/dist/points/files.js +20 -0
- package/dist/points/files.js.map +1 -0
- package/dist/points/index.d.ts +609 -0
- package/dist/points/index.d.ts.map +1 -0
- package/dist/points/index.js +44 -0
- package/dist/points/index.js.map +1 -0
- package/dist/points/listener.d.ts +51 -0
- package/dist/points/listener.d.ts.map +1 -0
- package/dist/points/listener.js +44 -0
- package/dist/points/listener.js.map +1 -0
- package/dist/points/processes.d.ts +23 -0
- package/dist/points/processes.d.ts.map +1 -0
- package/dist/points/processes.js +15 -0
- package/dist/points/processes.js.map +1 -0
- package/dist/points/settings.d.ts +37 -0
- package/dist/points/settings.d.ts.map +1 -0
- package/dist/points/settings.js +24 -0
- package/dist/points/settings.js.map +1 -0
- package/dist/points/viewers.d.ts +25 -0
- package/dist/points/viewers.d.ts.map +1 -0
- package/dist/points/viewers.js +17 -0
- package/dist/points/viewers.js.map +1 -0
- package/dist/points/views.d.ts +27 -0
- package/dist/points/views.d.ts.map +1 -0
- package/dist/points/views.js +18 -0
- package/dist/points/views.js.map +1 -0
- package/dist/powers-diff.d.ts +8 -0
- package/dist/powers-diff.d.ts.map +1 -0
- package/dist/powers-diff.js +77 -0
- package/dist/powers-diff.js.map +1 -0
- package/intentic-extension.schema.json +1341 -0
- package/package.json +49 -0
- package/src/bundle.ts +41 -0
- package/src/contribution-point.ts +26 -0
- package/src/index.ts +7 -0
- package/src/json-schema.ts +62 -0
- package/src/manifest.ts +104 -0
- package/src/mark.ts +34 -0
- package/src/permissions.ts +36 -0
- package/src/points/agent.ts +17 -0
- package/src/points/automation-templates.ts +84 -0
- package/src/points/bin.ts +15 -0
- package/src/points/capabilities.ts +271 -0
- package/src/points/commands.ts +44 -0
- package/src/points/documents.ts +31 -0
- package/src/points/environment.ts +24 -0
- package/src/points/files.ts +54 -0
- package/src/points/index.ts +73 -0
- package/src/points/listener.ts +81 -0
- package/src/points/processes.ts +20 -0
- package/src/points/settings.ts +31 -0
- package/src/points/viewers.ts +36 -0
- package/src/points/views.ts +33 -0
- package/src/powers-diff.ts +100 -0
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export declare const ListenerContributionSchema: z.ZodObject<{
|
|
3
|
+
provider: z.ZodString;
|
|
4
|
+
events: z.ZodArray<z.ZodObject<{
|
|
5
|
+
type: z.ZodString;
|
|
6
|
+
label: z.ZodString;
|
|
7
|
+
}, z.core.$strip>>;
|
|
8
|
+
automation: z.ZodObject<{
|
|
9
|
+
label: z.ZodString;
|
|
10
|
+
mentionLabel: z.ZodOptional<z.ZodString>;
|
|
11
|
+
channel: z.ZodObject<{
|
|
12
|
+
label: z.ZodString;
|
|
13
|
+
placeholder: z.ZodString;
|
|
14
|
+
hint: z.ZodOptional<z.ZodString>;
|
|
15
|
+
}, z.core.$strip>;
|
|
16
|
+
branchField: z.ZodOptional<z.ZodObject<{
|
|
17
|
+
label: z.ZodString;
|
|
18
|
+
placeholder: z.ZodString;
|
|
19
|
+
hint: z.ZodOptional<z.ZodString>;
|
|
20
|
+
}, z.core.$strip>>;
|
|
21
|
+
starterPrompt: z.ZodString;
|
|
22
|
+
}, z.core.$strip>;
|
|
23
|
+
}, z.core.$strip>;
|
|
24
|
+
export type ListenerContribution = z.infer<typeof ListenerContributionSchema>;
|
|
25
|
+
export declare const listenerPoint: {
|
|
26
|
+
readonly name: "listener";
|
|
27
|
+
readonly description: "A realtime event source this extension supplies, so automations can trigger on it. One declaration feeds both halves: the daemon accepts these event types and serves this provider's control surface, and the automation editor derives its source picker, filters and starter prompt from it — so a newly installed listener is configurable without a matching app release.";
|
|
28
|
+
readonly schema: z.ZodObject<{
|
|
29
|
+
provider: z.ZodString;
|
|
30
|
+
events: z.ZodArray<z.ZodObject<{
|
|
31
|
+
type: z.ZodString;
|
|
32
|
+
label: z.ZodString;
|
|
33
|
+
}, z.core.$strip>>;
|
|
34
|
+
automation: z.ZodObject<{
|
|
35
|
+
label: z.ZodString;
|
|
36
|
+
mentionLabel: z.ZodOptional<z.ZodString>;
|
|
37
|
+
channel: z.ZodObject<{
|
|
38
|
+
label: z.ZodString;
|
|
39
|
+
placeholder: z.ZodString;
|
|
40
|
+
hint: z.ZodOptional<z.ZodString>;
|
|
41
|
+
}, z.core.$strip>;
|
|
42
|
+
branchField: z.ZodOptional<z.ZodObject<{
|
|
43
|
+
label: z.ZodString;
|
|
44
|
+
placeholder: z.ZodString;
|
|
45
|
+
hint: z.ZodOptional<z.ZodString>;
|
|
46
|
+
}, z.core.$strip>>;
|
|
47
|
+
starterPrompt: z.ZodString;
|
|
48
|
+
}, z.core.$strip>;
|
|
49
|
+
}, z.core.$strip>;
|
|
50
|
+
};
|
|
51
|
+
//# sourceMappingURL=listener.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"listener.d.ts","sourceRoot":"","sources":["../../src/points/listener.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AA2BxB,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;iBA6CrC,CAAC;AACH,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAE9E,eAAO,MAAM,aAAa;mBAChB,UAAU;0BAEZ,gXAAgX;;;;;;;;;;;;;;;;;;;;;;;CAElV,CAAC"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
const TriggerFieldContributionSchema = z.object({
|
|
3
|
+
label: z.string().min(1),
|
|
4
|
+
placeholder: z.string().min(1),
|
|
5
|
+
hint: z.string().min(1).optional().describe("The sentence under the input, for a filter whose empty case is easy to get wrong."),
|
|
6
|
+
});
|
|
7
|
+
export const ListenerContributionSchema = z.object({
|
|
8
|
+
provider: z
|
|
9
|
+
.string()
|
|
10
|
+
.regex(/^[a-z0-9][a-z0-9-]*$/)
|
|
11
|
+
.describe("The slug this source's automation triggers fire on."),
|
|
12
|
+
events: z
|
|
13
|
+
.array(z.object({
|
|
14
|
+
type: z.string().regex(/^[a-z0-9][a-z0-9_]*$/),
|
|
15
|
+
label: z.string().min(1),
|
|
16
|
+
}))
|
|
17
|
+
.min(1)
|
|
18
|
+
.refine((events) => new Set(events.map((event) => event.type)).size === events.length, {
|
|
19
|
+
message: "listener event types must be unique",
|
|
20
|
+
})
|
|
21
|
+
.describe("The event types this source can fire, with the wording the automation editor offers them under. The daemon accepts no others."),
|
|
22
|
+
automation: z
|
|
23
|
+
.object({
|
|
24
|
+
label: z.string().min(1),
|
|
25
|
+
mentionLabel: z
|
|
26
|
+
.string()
|
|
27
|
+
.min(1)
|
|
28
|
+
.optional()
|
|
29
|
+
.describe("Only for a source whose message events distinguish being addressed. Absent ⇒ the editor offers no mention-only filter, rather than inventing semantics you did not promise."),
|
|
30
|
+
channel: TriggerFieldContributionSchema.describe("The primary narrowing filter — a channel, a room, a repo."),
|
|
31
|
+
branchField: TriggerFieldContributionSchema.optional().describe('A second narrowing axis, for a source whose events carry one — a pipeline\'s git ref, so a trigger can say "the branch that ships" rather than "every agent\'s every failure".'),
|
|
32
|
+
starterPrompt: z
|
|
33
|
+
.string()
|
|
34
|
+
.min(1)
|
|
35
|
+
.describe("The first prompt a new automation on this source is prefilled with. You own the payload vocabulary, so you own the prompt that explains it."),
|
|
36
|
+
})
|
|
37
|
+
.describe("How the generic automation editor presents this source: its name, its filters, and the prompt it starts people on."),
|
|
38
|
+
});
|
|
39
|
+
export const listenerPoint = {
|
|
40
|
+
name: "listener",
|
|
41
|
+
description: "A realtime event source this extension supplies, so automations can trigger on it. One declaration feeds both halves: the daemon accepts these event types and serves this provider's control surface, and the automation editor derives its source picker, filters and starter prompt from it — so a newly installed listener is configurable without a matching app release.",
|
|
42
|
+
schema: ListenerContributionSchema,
|
|
43
|
+
};
|
|
44
|
+
//# sourceMappingURL=listener.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"listener.js","sourceRoot":"","sources":["../../src/points/listener.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,MAAM,8BAA8B,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5C,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACxB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mFAAmF,CAAC;CACnI,CAAC,CAAC;AAkBH,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,CAAC,MAAM,CAAC;IAC/C,QAAQ,EAAE,CAAC;SACN,MAAM,EAAE;SACR,KAAK,CAAC,sBAAsB,CAAC;SAC7B,QAAQ,CAAC,qDAAqD,CAAC;IACpE,MAAM,EAAE,CAAC;SACJ,KAAK,CACF,CAAC,CAAC,MAAM,CAAC;QACL,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,sBAAsB,CAAC;QAC9C,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;KAC3B,CAAC,CACL;SACA,GAAG,CAAC,CAAC,CAAC;SACN,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,MAAM,EAAE;QACnF,OAAO,EAAE,qCAAqC;KACjD,CAAC;SACD,QAAQ,CAAC,+HAA+H,CAAC;IAC9I,UAAU,EAAE,CAAC;SACR,MAAM,CAAC;QACJ,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QAGxB,YAAY,EAAE,CAAC;aACV,MAAM,EAAE;aACR,GAAG,CAAC,CAAC,CAAC;aACN,QAAQ,EAAE;aACV,QAAQ,CACL,6KAA6K,CAChL;QACL,OAAO,EAAE,8BAA8B,CAAC,QAAQ,CAAC,2DAA2D,CAAC;QAI7G,WAAW,EAAE,8BAA8B,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAC3D,gLAAgL,CACnL;QAED,aAAa,EAAE,CAAC;aACX,MAAM,EAAE;aACR,GAAG,CAAC,CAAC,CAAC;aACN,QAAQ,CACL,6IAA6I,CAChJ;KACR,CAAC;SACD,QAAQ,CAAC,oHAAoH,CAAC;CACtI,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,aAAa,GAAG;IACzB,IAAI,EAAE,UAAU;IAChB,WAAW,EACP,gXAAgX;IACpX,MAAM,EAAE,0BAA0B;CACA,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export declare const ProcessContributionSchema: z.ZodObject<{
|
|
3
|
+
name: z.ZodString;
|
|
4
|
+
command: z.ZodString;
|
|
5
|
+
cwd: z.ZodOptional<z.ZodString>;
|
|
6
|
+
port: z.ZodOptional<z.ZodLiteral<"auto">>;
|
|
7
|
+
preview: z.ZodOptional<z.ZodBoolean>;
|
|
8
|
+
autoStart: z.ZodOptional<z.ZodBoolean>;
|
|
9
|
+
}, z.core.$strip>;
|
|
10
|
+
export type ProcessContribution = z.infer<typeof ProcessContributionSchema>;
|
|
11
|
+
export declare const processesPoint: {
|
|
12
|
+
readonly name: "processes";
|
|
13
|
+
readonly description: "Long-lived background processes the daemon runs for this extension — a gateway holding a connection the daemon must not, a dev server. Managed the same way panel dev servers are, and startable and stoppable from the Extensions tab.";
|
|
14
|
+
readonly schema: z.ZodArray<z.ZodObject<{
|
|
15
|
+
name: z.ZodString;
|
|
16
|
+
command: z.ZodString;
|
|
17
|
+
cwd: z.ZodOptional<z.ZodString>;
|
|
18
|
+
port: z.ZodOptional<z.ZodLiteral<"auto">>;
|
|
19
|
+
preview: z.ZodOptional<z.ZodBoolean>;
|
|
20
|
+
autoStart: z.ZodOptional<z.ZodBoolean>;
|
|
21
|
+
}, z.core.$strip>>;
|
|
22
|
+
};
|
|
23
|
+
//# sourceMappingURL=processes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"processes.d.ts","sourceRoot":"","sources":["../../src/points/processes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,yBAAyB;;;;;;;iBAOpC,CAAC;AACH,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAE5E,eAAO,MAAM,cAAc;mBACjB,WAAW;0BAEb,yOAAyO;;;;;;;;;CAE3M,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export const ProcessContributionSchema = z.object({
|
|
3
|
+
name: z.string().regex(/^[a-z0-9][a-z0-9-]*$/),
|
|
4
|
+
command: z.string().min(1),
|
|
5
|
+
cwd: z.string().optional().describe("Relative to the extension checkout. Absent ⇒ the checkout root."),
|
|
6
|
+
port: z.literal("auto").optional().describe("Assign a free port and inject it as PORT."),
|
|
7
|
+
preview: z.boolean().optional().describe("Expose the port on a tunnelled preview hostname."),
|
|
8
|
+
autoStart: z.boolean().optional().describe("Launch it on install and on daemon boot, rather than waiting to be started."),
|
|
9
|
+
});
|
|
10
|
+
export const processesPoint = {
|
|
11
|
+
name: "processes",
|
|
12
|
+
description: "Long-lived background processes the daemon runs for this extension — a gateway holding a connection the daemon must not, a dev server. Managed the same way panel dev servers are, and startable and stoppable from the Extensions tab.",
|
|
13
|
+
schema: z.array(ProcessContributionSchema),
|
|
14
|
+
};
|
|
15
|
+
//# sourceMappingURL=processes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"processes.js","sourceRoot":"","sources":["../../src/points/processes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC9C,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,sBAAsB,CAAC;IAC9C,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1B,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iEAAiE,CAAC;IACtG,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2CAA2C,CAAC;IACxF,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kDAAkD,CAAC;IAC5F,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6EAA6E,CAAC;CAC5H,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,cAAc,GAAG;IAC1B,IAAI,EAAE,WAAW;IACjB,WAAW,EACP,yOAAyO;IAC7O,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,yBAAyB,CAAC;CACR,CAAC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export declare const SettingContributionSchema: z.ZodObject<{
|
|
3
|
+
key: z.ZodString;
|
|
4
|
+
type: z.ZodEnum<{
|
|
5
|
+
boolean: "boolean";
|
|
6
|
+
enum: "enum";
|
|
7
|
+
number: "number";
|
|
8
|
+
string: "string";
|
|
9
|
+
}>;
|
|
10
|
+
title: z.ZodString;
|
|
11
|
+
description: z.ZodOptional<z.ZodString>;
|
|
12
|
+
default: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean]>>;
|
|
13
|
+
enum: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
14
|
+
secret: z.ZodOptional<z.ZodBoolean>;
|
|
15
|
+
env: z.ZodOptional<z.ZodString>;
|
|
16
|
+
}, z.core.$strip>;
|
|
17
|
+
export type SettingContribution = z.infer<typeof SettingContributionSchema>;
|
|
18
|
+
export declare const settingsPoint: {
|
|
19
|
+
readonly name: "settings";
|
|
20
|
+
readonly description: "Typed settings the host renders into the Settings page for you and persists daemon-side. You never draw the form or store the value; you read it back with api.settings.get.";
|
|
21
|
+
readonly schema: z.ZodArray<z.ZodObject<{
|
|
22
|
+
key: z.ZodString;
|
|
23
|
+
type: z.ZodEnum<{
|
|
24
|
+
boolean: "boolean";
|
|
25
|
+
enum: "enum";
|
|
26
|
+
number: "number";
|
|
27
|
+
string: "string";
|
|
28
|
+
}>;
|
|
29
|
+
title: z.ZodString;
|
|
30
|
+
description: z.ZodOptional<z.ZodString>;
|
|
31
|
+
default: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean]>>;
|
|
32
|
+
enum: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
33
|
+
secret: z.ZodOptional<z.ZodBoolean>;
|
|
34
|
+
env: z.ZodOptional<z.ZodString>;
|
|
35
|
+
}, z.core.$strip>>;
|
|
36
|
+
};
|
|
37
|
+
//# sourceMappingURL=settings.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../../src/points/settings.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;iBAkBpC,CAAC;AACH,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAE5E,eAAO,MAAM,aAAa;mBAChB,UAAU;0BAEZ,8KAA8K;;;;;;;;;;;;;;;;CAEhJ,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export const SettingContributionSchema = z.object({
|
|
3
|
+
key: z.string().regex(/^[a-z0-9][a-zA-Z0-9-]*$/),
|
|
4
|
+
type: z.enum(["boolean", "string", "number", "enum"]).describe("Which control the Settings page draws. `enum` reads its choices from `enum`."),
|
|
5
|
+
title: z.string().min(1),
|
|
6
|
+
description: z.string().optional().describe("The line under the control."),
|
|
7
|
+
default: z.union([z.string(), z.number(), z.boolean()]).optional(),
|
|
8
|
+
enum: z.array(z.string()).optional().describe('The choices, for type "enum". Meaningless otherwise.'),
|
|
9
|
+
secret: z
|
|
10
|
+
.boolean()
|
|
11
|
+
.optional()
|
|
12
|
+
.describe("Mask the value in the UI and strip it from reads — a set secret round-trips as “still set”, never as its value."),
|
|
13
|
+
env: z
|
|
14
|
+
.string()
|
|
15
|
+
.regex(/^[A-Z][A-Z0-9_]*$/)
|
|
16
|
+
.optional()
|
|
17
|
+
.describe("Inject the stored value into the agent's shell environment under this name, every turn. How a credential you hold reaches the agent's command-line tools."),
|
|
18
|
+
});
|
|
19
|
+
export const settingsPoint = {
|
|
20
|
+
name: "settings",
|
|
21
|
+
description: "Typed settings the host renders into the Settings page for you and persists daemon-side. You never draw the form or store the value; you read it back with api.settings.get.",
|
|
22
|
+
schema: z.array(SettingContributionSchema),
|
|
23
|
+
};
|
|
24
|
+
//# sourceMappingURL=settings.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"settings.js","sourceRoot":"","sources":["../../src/points/settings.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC9C,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,yBAAyB,CAAC;IAChD,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,8EAA8E,CAAC;IAC9I,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACxB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6BAA6B,CAAC;IAC1E,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE;IAClE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sDAAsD,CAAC;IACrG,MAAM,EAAE,CAAC;SACJ,OAAO,EAAE;SACT,QAAQ,EAAE;SACV,QAAQ,CAAC,iHAAiH,CAAC;IAChI,GAAG,EAAE,CAAC;SACD,MAAM,EAAE;SACR,KAAK,CAAC,mBAAmB,CAAC;SAC1B,QAAQ,EAAE;SACV,QAAQ,CACL,2JAA2J,CAC9J;CACR,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,aAAa,GAAG;IACzB,IAAI,EAAE,UAAU;IAChB,WAAW,EACP,8KAA8K;IAClL,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,yBAAyB,CAAC;CACR,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export declare const ViewerContributionSchema: z.ZodObject<{
|
|
3
|
+
id: z.ZodString;
|
|
4
|
+
extensions: z.ZodArray<z.ZodString>;
|
|
5
|
+
fetch: z.ZodEnum<{
|
|
6
|
+
blob: "blob";
|
|
7
|
+
text: "text";
|
|
8
|
+
url: "url";
|
|
9
|
+
}>;
|
|
10
|
+
}, z.core.$strip>;
|
|
11
|
+
export type ViewerContribution = z.infer<typeof ViewerContributionSchema>;
|
|
12
|
+
export declare const viewersPoint: {
|
|
13
|
+
readonly name: "viewers";
|
|
14
|
+
readonly description: "File formats this extension can render. The host resolves an opened file to your viewer by its extension, fetches the content, and renders your component with it — you keep none of the fetch lifecycle and none of the daemon credentials.";
|
|
15
|
+
readonly schema: z.ZodArray<z.ZodObject<{
|
|
16
|
+
id: z.ZodString;
|
|
17
|
+
extensions: z.ZodArray<z.ZodString>;
|
|
18
|
+
fetch: z.ZodEnum<{
|
|
19
|
+
blob: "blob";
|
|
20
|
+
text: "text";
|
|
21
|
+
url: "url";
|
|
22
|
+
}>;
|
|
23
|
+
}, z.core.$strip>>;
|
|
24
|
+
};
|
|
25
|
+
//# sourceMappingURL=viewers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"viewers.d.ts","sourceRoot":"","sources":["../../src/points/viewers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAOxB,eAAO,MAAM,wBAAwB;;;;;;;;iBAoBnC,CAAC;AACH,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAE1E,eAAO,MAAM,YAAY;mBACf,SAAS;0BAEX,8OAA8O;;;;;;;;;;CAEhN,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export const ViewerContributionSchema = z.object({
|
|
3
|
+
id: z.string().regex(/^[a-z0-9][a-z0-9-]*$/),
|
|
4
|
+
extensions: z
|
|
5
|
+
.array(z.string().regex(/^[a-z0-9]+$/))
|
|
6
|
+
.min(1)
|
|
7
|
+
.describe('Bare file extensions, no dot — e.g. ["docx", "xlsx"].'),
|
|
8
|
+
fetch: z
|
|
9
|
+
.enum(["text", "blob", "url"])
|
|
10
|
+
.describe("How much of the file the host hands you. `text` for a format that is text (svg, a subtitle track). `blob` for one that must be parsed end to end before any of it shows (a .docx, a spreadsheet) — bounded by the daemon's raw-read cap. `url` for anything range-read rather than parsed (audio, video): your component gets a streaming URL to point an element at, never the bytes."),
|
|
11
|
+
});
|
|
12
|
+
export const viewersPoint = {
|
|
13
|
+
name: "viewers",
|
|
14
|
+
description: "File formats this extension can render. The host resolves an opened file to your viewer by its extension, fetches the content, and renders your component with it — you keep none of the fetch lifecycle and none of the daemon credentials.",
|
|
15
|
+
schema: z.array(ViewerContributionSchema),
|
|
16
|
+
};
|
|
17
|
+
//# sourceMappingURL=viewers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"viewers.js","sourceRoot":"","sources":["../../src/points/viewers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAOxB,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC7C,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,sBAAsB,CAAC;IAC5C,UAAU,EAAE,CAAC;SACR,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;SACtC,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,CAAC,uDAAuD,CAAC;IAUtE,KAAK,EAAE,CAAC;SACH,IAAI,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;SAC7B,QAAQ,CACL,wXAAwX,CAC3X;CACR,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,YAAY,GAAG;IACxB,IAAI,EAAE,SAAS;IACf,WAAW,EACP,8OAA8O;IAClP,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,wBAAwB,CAAC;CACP,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export declare const ViewContributionSchema: z.ZodObject<{
|
|
3
|
+
id: z.ZodString;
|
|
4
|
+
label: z.ZodString;
|
|
5
|
+
surface: z.ZodEnum<{
|
|
6
|
+
directory: "directory";
|
|
7
|
+
rail: "rail";
|
|
8
|
+
sandbox: "sandbox";
|
|
9
|
+
}>;
|
|
10
|
+
badge: z.ZodOptional<z.ZodBoolean>;
|
|
11
|
+
}, z.core.$strip>;
|
|
12
|
+
export type ViewContribution = z.infer<typeof ViewContributionSchema>;
|
|
13
|
+
export declare const viewsPoint: {
|
|
14
|
+
readonly name: "views";
|
|
15
|
+
readonly description: "Sidebar elements this extension may register at runtime. Each entry reserves an id and a surface; the extension supplies the component with api.views.register, and the host refuses any registration this list does not cover.";
|
|
16
|
+
readonly schema: z.ZodArray<z.ZodObject<{
|
|
17
|
+
id: z.ZodString;
|
|
18
|
+
label: z.ZodString;
|
|
19
|
+
surface: z.ZodEnum<{
|
|
20
|
+
directory: "directory";
|
|
21
|
+
rail: "rail";
|
|
22
|
+
sandbox: "sandbox";
|
|
23
|
+
}>;
|
|
24
|
+
badge: z.ZodOptional<z.ZodBoolean>;
|
|
25
|
+
}, z.core.$strip>>;
|
|
26
|
+
};
|
|
27
|
+
//# sourceMappingURL=views.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"views.d.ts","sourceRoot":"","sources":["../../src/points/views.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAOxB,eAAO,MAAM,sBAAsB;;;;;;;;;iBAiBjC,CAAC;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAEtE,eAAO,MAAM,UAAU;mBACb,OAAO;0BAET,iOAAiO;;;;;;;;;;;CAEnM,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export const ViewContributionSchema = z.object({
|
|
3
|
+
id: z.string().regex(/^[a-z0-9][a-z0-9-]*$/),
|
|
4
|
+
label: z.string().min(1).describe("The name shown on the tile or tab. The manifest's value wins over the one passed at registration."),
|
|
5
|
+
surface: z
|
|
6
|
+
.enum(["rail", "directory", "sandbox"])
|
|
7
|
+
.describe("Where it appears. `rail` is a tile in the global left rail; `directory` is a panel opened from a repo in the Workspace tree; `sandbox` is a tab on the Sandbox hub, for a view whose subject is the box rather than the work."),
|
|
8
|
+
badge: z
|
|
9
|
+
.boolean()
|
|
10
|
+
.optional()
|
|
11
|
+
.describe("Allow this view to put a count on its tile. Declared because a badge interrupts from every other screen in the app; leave it out and any badge the extension registers is dropped."),
|
|
12
|
+
});
|
|
13
|
+
export const viewsPoint = {
|
|
14
|
+
name: "views",
|
|
15
|
+
description: "Sidebar elements this extension may register at runtime. Each entry reserves an id and a surface; the extension supplies the component with api.views.register, and the host refuses any registration this list does not cover.",
|
|
16
|
+
schema: z.array(ViewContributionSchema),
|
|
17
|
+
};
|
|
18
|
+
//# sourceMappingURL=views.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"views.js","sourceRoot":"","sources":["../../src/points/views.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAOxB,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3C,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,sBAAsB,CAAC;IAC5C,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,mGAAmG,CAAC;IACtI,OAAO,EAAE,CAAC;SACL,IAAI,CAAC,CAAC,MAAM,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;SACtC,QAAQ,CACL,+NAA+N,CAClO;IAIL,KAAK,EAAE,CAAC;SACH,OAAO,EAAE;SACT,QAAQ,EAAE;SACV,QAAQ,CACL,oLAAoL,CACvL;CACR,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,UAAU,GAAG;IACtB,IAAI,EAAE,OAAO;IACb,WAAW,EACP,iOAAiO;IACrO,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,sBAAsB,CAAC;CACL,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { ExtensionManifest } from "./manifest.js";
|
|
2
|
+
export interface PowersDiff {
|
|
3
|
+
readonly added: string[];
|
|
4
|
+
readonly removed: string[];
|
|
5
|
+
readonly unchanged: string[];
|
|
6
|
+
}
|
|
7
|
+
export declare const diffPowers: (before: ExtensionManifest | undefined, after: ExtensionManifest) => PowersDiff;
|
|
8
|
+
//# sourceMappingURL=powers-diff.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"powers-diff.d.ts","sourceRoot":"","sources":["../src/powers-diff.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAcvD,MAAM,WAAW,UAAU;IAEvB,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,CAAC;CAChC;AAiED,eAAO,MAAM,UAAU,WAAY,iBAAiB,GAAG,SAAS,SAAS,iBAAiB,KAAG,UAe5F,CAAC"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
const powersOf = (manifest) => {
|
|
2
|
+
const powers = new Map();
|
|
3
|
+
if (manifest.entry !== undefined) {
|
|
4
|
+
powers.set("entry", "runs a UI bundle in your browser");
|
|
5
|
+
}
|
|
6
|
+
if (manifest.server !== undefined) {
|
|
7
|
+
powers.set("server", "runs a backend bundle inside the daemon's extension host");
|
|
8
|
+
}
|
|
9
|
+
for (const route of manifest.permissions?.sandbox ?? []) {
|
|
10
|
+
powers.set(`sandbox:${route}`, `its UI calls the sandbox route ${route}`);
|
|
11
|
+
}
|
|
12
|
+
for (const route of manifest.permissions?.daemon ?? []) {
|
|
13
|
+
powers.set(`daemon:${route}`, `its backend calls the daemon route ${route}`);
|
|
14
|
+
}
|
|
15
|
+
for (const view of manifest.contributes?.views ?? []) {
|
|
16
|
+
powers.set(`view:${view.id}`, `a ${view.surface} view "${view.label}"`);
|
|
17
|
+
if (view.badge === true) {
|
|
18
|
+
powers.set(`view-badge:${view.id}`, `may badge the "${view.label}" tile from any screen`);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
for (const viewer of manifest.contributes?.viewers ?? []) {
|
|
22
|
+
powers.set(`viewer:${viewer.id}`, `opens .${viewer.extensions.join(", .")} files (${viewer.fetch})`);
|
|
23
|
+
}
|
|
24
|
+
for (const document of manifest.contributes?.documents ?? []) {
|
|
25
|
+
powers.set(`document:${document.id}`, `marks workspace directories ("${document.label}")`);
|
|
26
|
+
}
|
|
27
|
+
for (const command of manifest.contributes?.commands ?? []) {
|
|
28
|
+
powers.set(`command:${command.command}`, `a palette command "${command.title}"`);
|
|
29
|
+
if (command.keybinding !== undefined) {
|
|
30
|
+
powers.set(`keybinding:${command.command}`, `the global shortcut ${command.keybinding} ("${command.title}")`);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
for (const setting of manifest.contributes?.settings ?? []) {
|
|
34
|
+
if (setting.env !== undefined) {
|
|
35
|
+
powers.set(`setting-env:${setting.key}`, `puts the "${setting.key}" setting into the agent's environment as ${setting.env}`);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
for (const process of manifest.contributes?.processes ?? []) {
|
|
39
|
+
powers.set(`process:${process.name}`, `a background process "${process.name}"${process.autoStart === true ? " (starts on boot)" : ""}`);
|
|
40
|
+
}
|
|
41
|
+
for (const file of manifest.contributes?.files ?? []) {
|
|
42
|
+
powers.set(`files:${file.path}`, `is told when ${file.path} changes`);
|
|
43
|
+
}
|
|
44
|
+
if (manifest.contributes?.agent !== undefined) {
|
|
45
|
+
powers.set("agent", "contributes skills, agents and hooks to the agent's turns");
|
|
46
|
+
}
|
|
47
|
+
if (manifest.contributes?.environment !== undefined) {
|
|
48
|
+
powers.set("environment", "bakes an environment fragment into the sandbox image");
|
|
49
|
+
}
|
|
50
|
+
for (const capability of manifest.contributes?.capabilities ?? []) {
|
|
51
|
+
powers.set(`capability:${capability.id}`, `a ${capability.kind} capability card "${capability.catalog.name}"`);
|
|
52
|
+
}
|
|
53
|
+
if (manifest.contributes?.listener !== undefined) {
|
|
54
|
+
powers.set(`listener:${manifest.contributes.listener.provider}`, `a realtime listener provider "${manifest.contributes.listener.provider}"`);
|
|
55
|
+
}
|
|
56
|
+
if (manifest.contributes?.bin !== undefined) {
|
|
57
|
+
powers.set("bin", "puts its shipped tools on the agent's PATH");
|
|
58
|
+
}
|
|
59
|
+
return powers;
|
|
60
|
+
};
|
|
61
|
+
export const diffPowers = (before, after) => {
|
|
62
|
+
const from = before === undefined ? new Map() : powersOf(before);
|
|
63
|
+
const to = powersOf(after);
|
|
64
|
+
const added = [];
|
|
65
|
+
const removed = [];
|
|
66
|
+
const unchanged = [];
|
|
67
|
+
for (const [key, label] of to) {
|
|
68
|
+
(from.has(key) ? unchanged : added).push(label);
|
|
69
|
+
}
|
|
70
|
+
for (const [key, label] of from) {
|
|
71
|
+
if (!to.has(key)) {
|
|
72
|
+
removed.push(label);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
return { added, removed, unchanged };
|
|
76
|
+
};
|
|
77
|
+
//# sourceMappingURL=powers-diff.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"powers-diff.js","sourceRoot":"","sources":["../src/powers-diff.ts"],"names":[],"mappings":"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"}
|