copilot-operator 0.1.35 → 0.1.37
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/src/api/operator.service.js +2 -2
- package/dist/src/config/schema.js +6 -0
- package/dist/src/orchestrator/taskRunner.js +84 -32
- package/dist/src/plan/systemGuide.js +16 -0
- package/dist/src/transport/copilotTransport.js +63 -0
- package/dist/web/404.html +2 -2
- package/dist/web/_next/static/chunks/867-d4f5bd8c5805bffb.js +1 -0
- package/dist/web/_next/static/chunks/app/defaults/page-879158e9e550eea7.js +1 -0
- package/dist/web/_next/static/chunks/app/layout-630b663626cebe4a.js +1 -0
- package/dist/web/appearance.html +2 -2
- package/dist/web/appearance.txt +10 -10
- package/dist/web/defaults.html +2 -2
- package/dist/web/defaults.txt +10 -10
- package/dist/web/history.html +2 -2
- package/dist/web/history.txt +10 -10
- package/dist/web/import.html +2 -2
- package/dist/web/import.txt +10 -10
- package/dist/web/index.html +2 -2
- package/dist/web/index.txt +10 -10
- package/dist/web/level1.html +2 -2
- package/dist/web/level1.txt +10 -10
- package/dist/web/presets.html +2 -2
- package/dist/web/presets.txt +10 -10
- package/dist/web/sessions/view.html +2 -2
- package/dist/web/sessions/view.txt +10 -10
- package/dist/web/system.html +2 -2
- package/dist/web/system.txt +10 -10
- package/package.json +1 -1
- package/dist/web/_next/static/chunks/867-562abd8d5f8c3dc8.js +0 -1
- package/dist/web/_next/static/chunks/app/defaults/page-54f8f1ab4cac47fa.js +0 -1
- package/dist/web/_next/static/chunks/app/layout-df7bec3acad93f15.js +0 -1
- /package/dist/web/_next/static/{k4MMPCGaEGVTHKLfTmYlf → _BisGyWJ_FTyOA5V_ZfaP}/_buildManifest.js +0 -0
- /package/dist/web/_next/static/{k4MMPCGaEGVTHKLfTmYlf → _BisGyWJ_FTyOA5V_ZfaP}/_ssgManifest.js +0 -0
|
@@ -1883,9 +1883,9 @@ let OperatorService = class OperatorService {
|
|
|
1883
1883
|
sessionId: ask.sessionId,
|
|
1884
1884
|
taskId: '',
|
|
1885
1885
|
stepId: 0,
|
|
1886
|
-
description: `Choose "${ask.asked}" in the Copilot window
|
|
1886
|
+
description: ask.asked ? `Choose "${ask.asked}" in the Copilot window` : 'Choose the model in the Copilot window',
|
|
1887
1887
|
createdAt: new Date().toISOString(),
|
|
1888
|
-
model: { asked: ask.asked, shown: ask.shown, why: ask.why, tries: ask.tries },
|
|
1888
|
+
model: { asked: ask.asked, shown: ask.shown, why: ask.why, tries: ask.tries, ...(ask.manual ? { manual: true } : {}) },
|
|
1889
1889
|
};
|
|
1890
1890
|
this.waiting.set(approval.id, {
|
|
1891
1891
|
approval,
|
|
@@ -97,6 +97,12 @@ export const RunConfigSchema = z.object({
|
|
|
97
97
|
* different from whatever did the work.
|
|
98
98
|
*/
|
|
99
99
|
defaultReviewModel: z.string().default(''),
|
|
100
|
+
/**
|
|
101
|
+
* Choose the model by hand (operator's workaround, 2026-10-06): at the start of a run, and of a review's
|
|
102
|
+
* conversation, the runner does not touch the picker; a card in the UI asks the operator to choose the
|
|
103
|
+
* model in the Copilot window and press "Ready". A conversation already on the model is not asked about.
|
|
104
|
+
*/
|
|
105
|
+
manualModel: z.boolean().default(false),
|
|
100
106
|
replyTimeoutSec: z.number().int().positive().default(900),
|
|
101
107
|
signInTimeoutSec: z.number().int().positive().default(900),
|
|
102
108
|
humanWaitSec: z.number().int().positive().default(900),
|
|
@@ -533,39 +533,44 @@ export function effectiveModels(session, cfg) {
|
|
|
533
533
|
async function applySessionModel(transport, session, bus, cfg, store, hooks) {
|
|
534
534
|
const { model: wanted, modelFrom } = effectiveModels(session, cfg);
|
|
535
535
|
const fromSettings = modelFrom === 'settings';
|
|
536
|
-
|
|
536
|
+
const manual = !!cfg.copilot.manualModel && !!hooks?.askHelp;
|
|
537
|
+
if (!wanted && !manual)
|
|
537
538
|
return {};
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
/*
|
|
545
|
-
* The operator's hand, when the runner could not do it (operator's request, 2026-10-06): the run waits
|
|
546
|
-
* on a card in the UI asking them to choose the model in the Copilot window; "check and go on" reads
|
|
547
|
-
* the picker button again, and asks again while it still shows another model.
|
|
548
|
-
*/
|
|
549
|
-
let goOnAsItIs = false;
|
|
550
|
-
for (let tries = 1; !result.ok && hooks?.askHelp; tries += 1) {
|
|
539
|
+
let result;
|
|
540
|
+
if (manual) {
|
|
541
|
+
/*
|
|
542
|
+
* Chosen by hand (operator's workaround, 2026-10-06): the picker is not touched. A conversation already
|
|
543
|
+
* on the model — the chat keeps its model — is not asked about; otherwise the card asks for it.
|
|
544
|
+
*/
|
|
551
545
|
const shown = await transport.currentModel().catch(() => null);
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
546
|
+
const hand = wanted && buttonShows(shown, wanted)
|
|
547
|
+
? { result: { ok: true, current: wanted, by: 'already' }, goOnAsItIs: false }
|
|
548
|
+
: await withOperatorHand(transport, wanted, { ok: false, current: shown, reason: 'Settings ask for the model to be chosen by hand' }, hooks, session.id, bus, true);
|
|
549
|
+
if (!wanted) {
|
|
550
|
+
const now = await transport.currentModel().catch(() => null);
|
|
551
|
+
if (hand.result.ok || hand.goOnAsItIs) {
|
|
552
|
+
await store?.updateSession(session.id, (s) => { s.modelInUse = now ?? undefined; }).catch(() => undefined);
|
|
553
|
+
return { current: now ?? undefined };
|
|
554
|
+
}
|
|
555
|
+
return { refused: 'The model was to be chosen by hand, and the operator stopped the run. Nothing was sent.' };
|
|
556
|
+
}
|
|
557
|
+
result = hand.result;
|
|
558
|
+
if (hand.goOnAsItIs) {
|
|
559
|
+
bus.publish({ sessionId: session.id, type: 'model-selected', level: 'warn', message: `model: ${result.current ?? 'unknown'} (chosen by hand; not "${wanted}")`, data: { asked: wanted, current: result.current, ok: false, by: 'hand' } });
|
|
560
|
+
return { current: result.current ?? undefined };
|
|
563
561
|
}
|
|
564
|
-
const now = await transport.currentModel().catch(() => null);
|
|
565
|
-
result = buttonShows(now, wanted)
|
|
566
|
-
? { ok: true, current: wanted, by: 'hand' }
|
|
567
|
-
: { ok: false, current: now, reason: `the picker still shows "${now ?? 'nothing'}", not "${wanted}"` };
|
|
568
562
|
}
|
|
563
|
+
else {
|
|
564
|
+
const locator = await hooks?.locate?.(wanted).catch(() => undefined);
|
|
565
|
+
result = await transport.selectModel(wanted, { locator }).catch((e) => ({
|
|
566
|
+
ok: false,
|
|
567
|
+
current: null,
|
|
568
|
+
reason: e.message,
|
|
569
|
+
}));
|
|
570
|
+
}
|
|
571
|
+
const hand = await withOperatorHand(transport, wanted, result, hooks, session.id, bus, false);
|
|
572
|
+
result = hand.result;
|
|
573
|
+
const goOnAsItIs = hand.goOnAsItIs;
|
|
569
574
|
const renamed = await followPageModels('model', wanted, result, session, store, hooks, modelFrom);
|
|
570
575
|
if (renamed)
|
|
571
576
|
bus.publish({ sessionId: session.id, type: 'model-renamed', level: 'warn', message: renamed, data: { asked: wanted, chosen: result.matched } });
|
|
@@ -576,7 +581,7 @@ async function applySessionModel(transport, session, bus, cfg, store, hooks) {
|
|
|
576
581
|
message: result.ok
|
|
577
582
|
? `model: ${result.current ?? wanted} (${modelFrom === 'settings' ? 'from Settings' : modelFrom === 'session' ? "the session's own" : 'from the plan'})`
|
|
578
583
|
: `could not switch to "${wanted}" (${modelFrom === 'settings' ? 'the default model in Settings' : modelFrom === 'session' ? "the session's own" : 'from the plan'}): ${(result.reason ?? 'unknown reason').replace(/[.\s]+$/, '')}. Nothing is sent on ${result.current ?? 'the chat default'} instead.`,
|
|
579
|
-
data: { asked: wanted, from: modelFrom, fromSettings, current: result.current, ok: result.ok, by: result.by ?? null,
|
|
584
|
+
data: { asked: wanted, from: modelFrom, fromSettings, current: result.current, ok: result.ok, by: result.by ?? null, manual },
|
|
580
585
|
});
|
|
581
586
|
// Kept on the session, so each task's record says which model it ran on and why (see `runTask`).
|
|
582
587
|
await store
|
|
@@ -607,6 +612,43 @@ async function applySessionModel(transport, session, bus, cfg, store, hooks) {
|
|
|
607
612
|
}
|
|
608
613
|
return { current: result.current ?? undefined };
|
|
609
614
|
}
|
|
615
|
+
/**
|
|
616
|
+
* The operator's hand, when the runner could not put the chat on the model, or when Settings ask for it to
|
|
617
|
+
* be chosen by hand (operator's requests, 2026-10-06): the run waits on a card in the UI asking them to
|
|
618
|
+
* choose it in the Copilot window; "check and go on" reads the picker button again, and asks again while it
|
|
619
|
+
* still shows another model. With no model asked for, whatever the operator chose is taken.
|
|
620
|
+
*/
|
|
621
|
+
async function withOperatorHand(transport, wanted, first, hooks, sessionId, bus, manual) {
|
|
622
|
+
let result = first;
|
|
623
|
+
for (let tries = 1; !result.ok && hooks?.askHelp; tries += 1) {
|
|
624
|
+
const shown = await transport.currentModel().catch(() => null);
|
|
625
|
+
bus.publish({ sessionId, type: 'model-help-asked', level: 'warn',
|
|
626
|
+
message: manual
|
|
627
|
+
? `asking the operator to choose ${wanted ? `"${wanted}"` : 'the model'} in the Copilot window (Settings: by hand; picker shows "${shown ?? 'nothing'}")`
|
|
628
|
+
: `the chat could not be put on "${wanted}" by the runner; asking the operator to choose it in the Copilot window (picker shows "${shown ?? 'nothing'}")`,
|
|
629
|
+
data: { asked: wanted, shown, why: result.reason ?? '', tries, manual } });
|
|
630
|
+
const answer = await hooks.askHelp({ sessionId, asked: wanted, shown, why: result.reason ?? 'unknown reason', tries, ...(manual ? { manual: true } : {}) });
|
|
631
|
+
if (answer === 'stop')
|
|
632
|
+
return { result, goOnAsItIs: false };
|
|
633
|
+
if (answer === 'continue') {
|
|
634
|
+
bus.publish({ sessionId, type: 'model-help-continue', level: 'warn', message: `the operator chose to go on with the model the chat is on ("${shown ?? 'unknown'}")${wanted ? `, not "${wanted}"` : ''}`, data: { asked: wanted, shown } });
|
|
635
|
+
return { result: { ok: false, current: shown, reason: `the operator chose to go on with "${shown ?? 'unknown'}"` }, goOnAsItIs: true };
|
|
636
|
+
}
|
|
637
|
+
const now = await transport.currentModel().catch(() => null);
|
|
638
|
+
/*
|
|
639
|
+
* The operator's word is taken (2026-10-07): the picker button's text could not be relied on at work —
|
|
640
|
+
* the right model chosen by hand, and "Ready" asked again and again because the button read otherwise.
|
|
641
|
+
* What the button shows is kept in the record beside it.
|
|
642
|
+
*/
|
|
643
|
+
if (wanted && !buttonShows(now, wanted)) {
|
|
644
|
+
bus.publish({ sessionId, type: 'model-help-taken-on-word', level: 'warn',
|
|
645
|
+
message: `the operator says "${wanted}" is chosen; the picker button reads "${now ?? 'nothing'}", which the runner could not match — going on, on the operator's word`,
|
|
646
|
+
data: { asked: wanted, buttonShows: now } });
|
|
647
|
+
}
|
|
648
|
+
result = { ok: true, current: wanted || now, by: 'hand' };
|
|
649
|
+
}
|
|
650
|
+
return { result, goOnAsItIs: false };
|
|
651
|
+
}
|
|
610
652
|
/** Runs one task to completion inside an already-open transport. */
|
|
611
653
|
export async function runTask(transport, session, task, deps) {
|
|
612
654
|
const { cfg, store, bus, authorizer, signal } = deps;
|
|
@@ -1784,8 +1826,18 @@ export async function runTask(transport, session, task, deps) {
|
|
|
1784
1826
|
try {
|
|
1785
1827
|
await transport.newChat();
|
|
1786
1828
|
if (model) {
|
|
1787
|
-
|
|
1788
|
-
|
|
1829
|
+
let picked;
|
|
1830
|
+
if (cfg.copilot.manualModel && deps.models?.askHelp) {
|
|
1831
|
+
// By hand, as the work's model (see `applySessionModel`): the review's fresh conversation is asked about too.
|
|
1832
|
+
const shown = await transport.currentModel().catch(() => null);
|
|
1833
|
+
picked = buttonShows(shown, model)
|
|
1834
|
+
? { ok: true, current: model, by: 'already' }
|
|
1835
|
+
: (await withOperatorHand(transport, model, { ok: false, current: shown, reason: 'Settings ask for the model to be chosen by hand (the review)' }, deps.models, session.id, bus, true)).result;
|
|
1836
|
+
}
|
|
1837
|
+
else {
|
|
1838
|
+
const reviewLocator = await deps.models?.locate?.(model).catch(() => undefined);
|
|
1839
|
+
picked = await transport.selectModel(model, { locator: reviewLocator }).catch((e) => ({ ok: false, current: null, reason: e.message }));
|
|
1840
|
+
}
|
|
1789
1841
|
const renamed = await followPageModels('review', model, picked, session, store, deps.models, effectiveModels(session, cfg).reviewModelFrom);
|
|
1790
1842
|
if (renamed)
|
|
1791
1843
|
sink.event('model-renamed', { asked: model, chosen: picked.matched, review: true }, renamed, 'warn');
|
|
@@ -238,6 +238,14 @@ export const SYSTEM_GUIDE = [
|
|
|
238
238
|
doesEn: 'On the card that appears when the bot could not choose the model: after you chose it in the Copilot window, the bot reads the picker and goes on, or asks again if it shows another model.',
|
|
239
239
|
doesBg: 'На картата, която се появява, когато ботът не успее да избере модела: след като го изберете в прозореца на Copilot, ботът проверява менюто и продължава, или пита пак, ако то показва друг модел.',
|
|
240
240
|
},
|
|
241
|
+
{
|
|
242
|
+
key: 'approval.manualReady',
|
|
243
|
+
kind: 'button',
|
|
244
|
+
en: 'Ready — check and continue',
|
|
245
|
+
bg: 'Готово — провери и продължи',
|
|
246
|
+
doesEn: 'On the card shown when Settings ask for the model to be chosen by hand: after you chose it in the Copilot window, the bot checks the picker and starts.',
|
|
247
|
+
doesBg: 'На картата при ръчен избор на модела (от Настройки): след като го изберете в прозореца на Copilot, ботът проверява менюто и започва.',
|
|
248
|
+
},
|
|
241
249
|
{
|
|
242
250
|
key: 'approval.modelAsItIs',
|
|
243
251
|
kind: 'button',
|
|
@@ -3028,6 +3036,14 @@ export const SYSTEM_GUIDE = [
|
|
|
3028
3036
|
doesEn: 'How many different approaches a "blocked" must list (2–20); with fewer the chat is asked for another.',
|
|
3029
3037
|
doesBg: 'Колко различни подхода трябва да изброи „blocked“ (2–20); с по-малко чатът е помолен за още един.',
|
|
3030
3038
|
},
|
|
3039
|
+
{
|
|
3040
|
+
key: 'def.manualModel',
|
|
3041
|
+
kind: 'field',
|
|
3042
|
+
en: 'Choose the model by hand at the start of each run',
|
|
3043
|
+
bg: 'Избирай модела ръчно в началото на всяко пускане',
|
|
3044
|
+
doesEn: 'The bot leaves the model picker alone and asks, on a card, for the model to be chosen in the Copilot window; a conversation already on the model is not asked about.',
|
|
3045
|
+
doesBg: 'Ботът не пипа менюто с моделите и моли, с карта, моделът да бъде избран в прозореца на Copilot; разговор, който вече е на модела, не се пита.',
|
|
3046
|
+
},
|
|
3031
3047
|
{
|
|
3032
3048
|
key: 'exec.maxReviewRounds',
|
|
3033
3049
|
kind: 'field',
|
|
@@ -1022,6 +1022,55 @@ Current URL: ${url}`);
|
|
|
1022
1022
|
}
|
|
1023
1023
|
return { row };
|
|
1024
1024
|
};
|
|
1025
|
+
/*
|
|
1026
|
+
* A model in a group, by the keyboard (operator's choice, 2026-10-06: the submenu failed when it was
|
|
1027
|
+
* expanded by click or hover). The picker opened, the group's row is focused, ArrowRight opens its
|
|
1028
|
+
* submenu and puts the focus in it, ArrowDown moves the focus until it is on the model — read from the
|
|
1029
|
+
* focused row's own text — and Enter chooses it. No hover, no coordinates.
|
|
1030
|
+
*/
|
|
1031
|
+
const byKeyboard = async (attempt) => {
|
|
1032
|
+
if (!target.group)
|
|
1033
|
+
return false;
|
|
1034
|
+
const button = await waitThenFind('the picker button', async () => visible(await this.resolveModelButton(1_000)));
|
|
1035
|
+
if (!button)
|
|
1036
|
+
return false;
|
|
1037
|
+
await button.click({ timeout: 5_000 }).catch(() => undefined);
|
|
1038
|
+
await settle();
|
|
1039
|
+
if (!(await this.waitForPopup()))
|
|
1040
|
+
return false;
|
|
1041
|
+
const group = await waitThenFind(`the "${target.group.name}" group`, () => this.rowByXPath(target.group.xpath, target.group.name, 0));
|
|
1042
|
+
if (!group) {
|
|
1043
|
+
await this.closeMenu();
|
|
1044
|
+
return false;
|
|
1045
|
+
}
|
|
1046
|
+
await group.focus({ timeout: 3_000 }).catch(() => undefined);
|
|
1047
|
+
await this.p.keyboard.press('ArrowRight');
|
|
1048
|
+
this.emit('model-step', { step: 'group opened by the keyboard (ArrowRight)', attempt });
|
|
1049
|
+
await settle();
|
|
1050
|
+
const focused = () => this.p.evaluate(() => {
|
|
1051
|
+
const el = document.activeElement;
|
|
1052
|
+
const row = el?.closest('[role="menuitemradio"],[role="menuitem"]');
|
|
1053
|
+
return { text: (row?.innerText ?? '').trim(), radio: !!el?.closest('[role="menuitemradio"]') };
|
|
1054
|
+
});
|
|
1055
|
+
for (let presses = 0; presses < 12; presses += 1) {
|
|
1056
|
+
const now = await focused();
|
|
1057
|
+
const line = now.text.split('\n')[0]?.trim() ?? '';
|
|
1058
|
+
if (now.radio && (sameModel(line, name) || sameModel(line, target.model) || containsModel(now.text, target.model))) {
|
|
1059
|
+
this.emit('model-step', { step: 'model reached by the keyboard, pausing before Enter', attempt, text: line, presses, pauseMs: pause });
|
|
1060
|
+
await this.p.waitForTimeout(pause);
|
|
1061
|
+
await picture('before-enter');
|
|
1062
|
+
await this.p.keyboard.press('Enter');
|
|
1063
|
+
await settle();
|
|
1064
|
+
return true;
|
|
1065
|
+
}
|
|
1066
|
+
await this.p.keyboard.press('ArrowDown');
|
|
1067
|
+
await this.p.waitForTimeout(400);
|
|
1068
|
+
}
|
|
1069
|
+
this.emit('model-step', { step: 'model not reached by the keyboard', attempt });
|
|
1070
|
+
await this.closeMenu();
|
|
1071
|
+
await settle();
|
|
1072
|
+
return false;
|
|
1073
|
+
};
|
|
1025
1074
|
const checked = async (row) => (await row.getAttribute('aria-checked').catch(() => null)) === 'true';
|
|
1026
1075
|
/*
|
|
1027
1076
|
* The whole choice, tried again from a closed menu while the picker does not show the model as chosen,
|
|
@@ -1037,6 +1086,20 @@ Current URL: ${url}`);
|
|
|
1037
1086
|
this.emit('model-step', { step: 'not reached', attempt, why });
|
|
1038
1087
|
await this.closeMenu();
|
|
1039
1088
|
await settle();
|
|
1089
|
+
/*
|
|
1090
|
+
* The keyboard only when the clicks did not get there. Tried first on 2026-10-06, the live page did
|
|
1091
|
+
* not move the focus into the submenu (2026-10-07: "model not reached by the keyboard", 6.5 s lost),
|
|
1092
|
+
* while a click on the group's element opened it and the model was chosen at the first attempt.
|
|
1093
|
+
*/
|
|
1094
|
+
if (target.group && (await byKeyboard(attempt))) {
|
|
1095
|
+
await this.closeMenu();
|
|
1096
|
+
await settle();
|
|
1097
|
+
const shownNow = await this.currentModel();
|
|
1098
|
+
if (buttonShows(shownNow, name)) {
|
|
1099
|
+
this.emit('model-selected', { model: name, buttonShows: shownNow, by: 'operator', attempt, seenOn: 'button', how: 'keyboard' });
|
|
1100
|
+
return { ok: true, current: name, by: 'operator' };
|
|
1101
|
+
}
|
|
1102
|
+
}
|
|
1040
1103
|
continue;
|
|
1041
1104
|
}
|
|
1042
1105
|
if (await checked(found.row)) {
|
package/dist/web/404.html
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
<!DOCTYPE html><!--
|
|
1
|
+
<!DOCTYPE html><!--_BisGyWJ_FTyOA5V_ZfaP--><html lang="en" data-theme="light" data-textsize="normal" data-contrast="normal" data-motion="normal" data-links="plain" data-focus="normal"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="/_next/static/css/c37978b44194c37b.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-0f31b926d9a9c5a4.js"/><script src="/_next/static/chunks/c7879cf7-b5ab1053c1d9a2e7.js" async=""></script><script src="/_next/static/chunks/131-bae98f790a541679.js" async=""></script><script src="/_next/static/chunks/main-app-e3a5f713ba31557e.js" async=""></script><script src="/_next/static/chunks/197-f7c33a0114fc3db3.js" async=""></script><script src="/_next/static/chunks/867-d4f5bd8c5805bffb.js" async=""></script><script src="/_next/static/chunks/549-7e35e4fdefadb05d.js" async=""></script><script src="/_next/static/chunks/app/layout-630b663626cebe4a.js" async=""></script><meta name="robots" content="noindex"/><title>404: This page could not be found.</title><title>copilot-operator</title><meta name="description" content="Runs task loops with Microsoft 365 Copilot on this machine."/><script>
|
|
2
2
|
(function () {
|
|
3
3
|
try {
|
|
4
4
|
var d = document.documentElement;
|
|
@@ -13,4 +13,4 @@
|
|
|
13
13
|
d.dataset.focus = a.strongFocus ? 'strong' : 'normal';
|
|
14
14
|
} catch (e) {}
|
|
15
15
|
})();
|
|
16
|
-
</script><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body><div hidden=""><!--$--><!--/$--></div><a class="skip-link" href="#main">Skip to the content</a><div class="wrap"><header class="top"><h1><a href="/">copilot-operator</a></h1><nav aria-label="Main"><a href="/"><svg class="nav-icon" viewBox="0 0 24 24" width="16" height="16" fill="currentColor" aria-hidden="true"><path d="M4 5h16v4H4zM4 11h16v4H4zM4 17h10v2H4z"></path></svg><span>Sessions</span></a><a href="/defaults"><svg class="nav-icon" viewBox="0 0 24 24" width="16" height="16" fill="currentColor" aria-hidden="true"><path d="M12 8a4 4 0 1 0 0 8 4 4 0 0 0 0-8zm8.5 4 1.5 1-1.6 2.8-1.8-.4a7 7 0 0 1-1.5 1.5l.4 1.8L14.7 21l-1-1.5a7 7 0 0 1-3.4 0l-1 1.5-2.8-1.6.4-1.8A7 7 0 0 1 5.4 16l-1.8.4L2 13.6 3.5 12.6V11.4L2 10.4l1.6-2.8 1.8.4A7 7 0 0 1 6.9 6.5l-.4-1.8L9.3 3l1 1.5a7 7 0 0 1 3.4 0l1-1.5 2.8 1.6-.4 1.8a7 7 0 0 1 1.5 1.5l1.8-.4L22 10.4l-1.5 1z"></path></svg><span>Settings</span></a><a href="/import"><svg class="nav-icon" viewBox="0 0 24 24" width="16" height="16" fill="currentColor" aria-hidden="true"><path d="M12 3v10m0 0 4-4m-4 4-4-4M4 15v4a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-4" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path></svg><span>Plan from JSON</span></a><a href="/history"><svg class="nav-icon" viewBox="0 0 24 24" width="16" height="16" fill="currentColor" aria-hidden="true"><path d="M12 3a9 9 0 1 0 8.5 6M12 7v5l3 2M3 4v5h5" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path></svg><span>Task register</span></a><a href="/level1"><svg class="nav-icon" viewBox="0 0 24 24" width="16" height="16" fill="currentColor" aria-hidden="true"><path d="M6 3h9l5 5v13H6zM14 3v6h6M9 13h7M9 17h7" fill="none" stroke="currentColor" stroke-width="2" stroke-linejoin="round"></path></svg><span>Level 1 prompt</span></a><a href="/presets"><svg class="nav-icon" viewBox="0 0 24 24" width="16" height="16" fill="currentColor" aria-hidden="true"><path d="M5 4h14v4H5zM5 10h14v4H5zM5 16h9v4H5z" fill="none" stroke="currentColor" stroke-width="2" stroke-linejoin="round"></path></svg><span>Level 2 presets</span></a><a href="/appearance"><svg class="nav-icon" viewBox="0 0 24 24" width="16" height="16" fill="currentColor" aria-hidden="true"><path d="M12 3a9 9 0 0 0 0 18c1.5 0 2-1 2-2s-1-1.5-1-2.5S14 15 15.5 15H17a4 4 0 0 0 4-4 8 8 0 0 0-9-8zM8 9a1 1 0 1 0 0 2 1 1 0 0 0 0-2zm4-3a1 1 0 1 0 0 2 1 1 0 0 0 0-2zm4 3a1 1 0 1 0 0 2 1 1 0 0 0 0-2z"></path></svg><span>Appearance</span></a><a href="/system"><svg class="nav-icon" viewBox="0 0 24 24" width="16" height="16" fill="currentColor" aria-hidden="true"><path d="M4 5h16v10H4zM2 19h20M9 15v4M15 15v4" fill="none" stroke="currentColor" stroke-width="2" stroke-linejoin="round"></path></svg><span>System</span></a><select aria-label="Language" style="width:auto"><option value="en" selected="">English</option><option value="bg">Български</option></select></nav></header><main id="main"><div style="font-family:system-ui,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding:0 23px 0 0;font-size:24px;font-weight:500;vertical-align:top;line-height:49px">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:49px;margin:0">This page could not be found.</h2></div></div></div><!--$--><!--/$--></main></div><script src="/_next/static/chunks/webpack-0f31b926d9a9c5a4.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[8078,[\"197\",\"static/chunks/197-f7c33a0114fc3db3.js\",\"867\",\"static/chunks/867-562abd8d5f8c3dc8.js\",\"549\",\"static/chunks/549-7e35e4fdefadb05d.js\",\"177\",\"static/chunks/app/layout-df7bec3acad93f15.js\"],\"AppearanceProvider\"]\n3:I[867,[\"197\",\"static/chunks/197-f7c33a0114fc3db3.js\",\"867\",\"static/chunks/867-562abd8d5f8c3dc8.js\",\"549\",\"static/chunks/549-7e35e4fdefadb05d.js\",\"177\",\"static/chunks/app/layout-df7bec3acad93f15.js\"],\"LanguageProvider\"]\n4:I[1035,[\"197\",\"static/chunks/197-f7c33a0114fc3db3.js\",\"867\",\"static/chunks/867-562abd8d5f8c3dc8.js\",\"549\",\"static/chunks/549-7e35e4fdefadb05d.js\",\"177\",\"static/chunks/app/layout-df7bec3acad93f15.js\"],\"DialogHost\"]\n5:I[8214,[\"197\",\"static/chunks/197-f7c33a0114fc3db3.js\",\"867\",\"static/chunks/867-562abd8d5f8c3dc8.js\",\"549\",\"static/chunks/549-7e35e4fdefadb05d.js\",\"177\",\"static/chunks/app/layout-df7bec3acad93f15.js\"],\"SkipLink\"]\n6:I[8197,[\"197\",\"static/chunks/197-f7c33a0114fc3db3.js\",\"867\",\"static/chunks/867-562abd8d5f8c3dc8.js\",\"549\",\"static/chunks/549-7e35e4fdefadb05d.js\",\"177\",\"static/chunks/app/layout-df7bec3acad93f15.js\"],\"\"]\n7:I[8214,[\"197\",\"static/chunks/197-f7c33a0114fc3db3.js\",\"867\",\"static/chunks/867-562abd8d5f8c3dc8.js\",\"549\",\"static/chunks/549-7e35e4fdefadb05d.js\",\"177\",\"static/chunks/app/layout-df7bec3acad93f15.js\"],\"Nav\"]\n8:I[6657,[\"197\",\"static/chunks/197-f7c33a0114fc3db3.js\",\"867\",\"static/chunks/867-562abd8d5f8c3dc8.js\",\"549\",\"static/chunks/549-7e35e4fdefadb05d.js\",\"177\",\"static/chunks/app/layout-df7bec3acad93f15.js\"],\"GlobalApprovals\"]\n9:I[5204,[],\"\"]\na:I[2642,[],\"\"]\nb:I[7712,[\"197\",\"static/chunks/197-f7c33a0114fc3db3.js\",\"867\",\"static/chunks/867-562abd8d5f8c3dc8.js\",\"549\",\"static/chunks/549-7e35e4fdefadb05d.js\",\"177\",\"static/chunks/app/layout-df7bec3acad93f15.js\"],\"ScrollJump\"]\nc:I[433,[],\"OutletBoundary\"]\ne:I[9884,[],\"AsyncMetadataOutlet\"]\n10:I[433,[],\"ViewportBoundary\"]\n12:I[433,[],\"MetadataBoundary\"]\n13:\"$Sreact.suspense\"\n15:I[3536,[],\"\"]\n:HL[\"/_next/static/css/c37978b44194c37b.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"k4MMPCGaEGVTHKLfTmYlf\",\"p\":\"\",\"c\":[\"\",\"_not-found\"],\"i\":false,\"f\":[[[\"\",{\"children\":[\"/_not-found\",{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",true],[\"\",[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/c37978b44194c37b.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"suppressHydrationWarning\":true,\"data-theme\":\"light\",\"data-textsize\":\"normal\",\"data-contrast\":\"normal\",\"data-motion\":\"normal\",\"data-links\":\"plain\",\"data-focus\":\"normal\",\"children\":[[\"$\",\"head\",null,{\"children\":[\"$\",\"script\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"\\n(function () {\\n try {\\n var d = document.documentElement;\\n var raw = localStorage.getItem('cop.appearance');\\n var a = raw ? JSON.parse(raw) : {};\\n if (!a || typeof a !== 'object') a = {};\\n d.dataset.theme = a.theme === 'dark' ? 'dark' : 'light';\\n d.dataset.textsize = [\\\"small\\\",\\\"normal\\\",\\\"large\\\",\\\"huge\\\",\\\"giant\\\"].indexOf(a.textSize) \u003e= 0 ? a.textSize : 'normal';\\n d.dataset.contrast = a.highContrast ? 'high' : 'normal';\\n d.dataset.motion = a.reduceMotion ? 'reduced' : 'normal';\\n d.dataset.links = a.underlineLinks ? 'underline' : 'plain';\\n d.dataset.focus = a.strongFocus ? 'strong' : 'normal';\\n } catch (e) {}\\n})();\\n\"}}]}],[\"$\",\"body\",null,{\"children\":[\"$\",\"$L2\",null,{\"children\":[\"$\",\"$L3\",null,{\"children\":[\"$\",\"$L4\",null,{\"children\":[[\"$\",\"$L5\",null,{}],[\"$\",\"div\",null,{\"className\":\"wrap\",\"children\":[[\"$\",\"header\",null,{\"className\":\"top\",\"children\":[[\"$\",\"h1\",null,{\"children\":[\"$\",\"$L6\",null,{\"href\":\"/\",\"children\":\"copilot-operator\"}]}],[\"$\",\"$L7\",null,{}]]}],[\"$\",\"$L8\",null,{}],[\"$\",\"main\",null,{\"id\":\"main\",\"children\":[\"$\",\"$L9\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$La\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]]}],[\"$\",\"$Lb\",null,{}]]}]}]}]}]]}]]}],{\"children\":[\"/_not-found\",[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L9\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$La\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[\"__PAGE__\",[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],null,[\"$\",\"$Lc\",null,{\"children\":[\"$Ld\",[\"$\",\"$Le\",null,{\"promise\":\"$@f\"}]]}]]}],{},null,false]},null,false]},null,false],[\"$\",\"$1\",\"h\",{\"children\":[[\"$\",\"meta\",null,{\"name\":\"robots\",\"content\":\"noindex\"}],[[\"$\",\"$L10\",null,{\"children\":\"$L11\"}],null],[\"$\",\"$L12\",null,{\"children\":[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$13\",null,{\"fallback\":null,\"children\":\"$L14\"}]}]}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$15\",[]],\"s\":false,\"S\":true}\n"])</script><script>self.__next_f.push([1,"11:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\nd:null\n"])</script><script>self.__next_f.push([1,"f:{\"metadata\":[[\"$\",\"title\",\"0\",{\"children\":\"copilot-operator\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Runs task loops with Microsoft 365 Copilot on this machine.\"}]],\"error\":null,\"digest\":\"$undefined\"}\n"])</script><script>self.__next_f.push([1,"14:\"$f:metadata\"\n"])</script></body></html>
|
|
16
|
+
</script><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body><div hidden=""><!--$--><!--/$--></div><a class="skip-link" href="#main">Skip to the content</a><div class="wrap"><header class="top"><h1><a href="/">copilot-operator</a></h1><nav aria-label="Main"><a href="/"><svg class="nav-icon" viewBox="0 0 24 24" width="16" height="16" fill="currentColor" aria-hidden="true"><path d="M4 5h16v4H4zM4 11h16v4H4zM4 17h10v2H4z"></path></svg><span>Sessions</span></a><a href="/defaults"><svg class="nav-icon" viewBox="0 0 24 24" width="16" height="16" fill="currentColor" aria-hidden="true"><path d="M12 8a4 4 0 1 0 0 8 4 4 0 0 0 0-8zm8.5 4 1.5 1-1.6 2.8-1.8-.4a7 7 0 0 1-1.5 1.5l.4 1.8L14.7 21l-1-1.5a7 7 0 0 1-3.4 0l-1 1.5-2.8-1.6.4-1.8A7 7 0 0 1 5.4 16l-1.8.4L2 13.6 3.5 12.6V11.4L2 10.4l1.6-2.8 1.8.4A7 7 0 0 1 6.9 6.5l-.4-1.8L9.3 3l1 1.5a7 7 0 0 1 3.4 0l1-1.5 2.8 1.6-.4 1.8a7 7 0 0 1 1.5 1.5l1.8-.4L22 10.4l-1.5 1z"></path></svg><span>Settings</span></a><a href="/import"><svg class="nav-icon" viewBox="0 0 24 24" width="16" height="16" fill="currentColor" aria-hidden="true"><path d="M12 3v10m0 0 4-4m-4 4-4-4M4 15v4a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-4" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path></svg><span>Plan from JSON</span></a><a href="/history"><svg class="nav-icon" viewBox="0 0 24 24" width="16" height="16" fill="currentColor" aria-hidden="true"><path d="M12 3a9 9 0 1 0 8.5 6M12 7v5l3 2M3 4v5h5" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path></svg><span>Task register</span></a><a href="/level1"><svg class="nav-icon" viewBox="0 0 24 24" width="16" height="16" fill="currentColor" aria-hidden="true"><path d="M6 3h9l5 5v13H6zM14 3v6h6M9 13h7M9 17h7" fill="none" stroke="currentColor" stroke-width="2" stroke-linejoin="round"></path></svg><span>Level 1 prompt</span></a><a href="/presets"><svg class="nav-icon" viewBox="0 0 24 24" width="16" height="16" fill="currentColor" aria-hidden="true"><path d="M5 4h14v4H5zM5 10h14v4H5zM5 16h9v4H5z" fill="none" stroke="currentColor" stroke-width="2" stroke-linejoin="round"></path></svg><span>Level 2 presets</span></a><a href="/appearance"><svg class="nav-icon" viewBox="0 0 24 24" width="16" height="16" fill="currentColor" aria-hidden="true"><path d="M12 3a9 9 0 0 0 0 18c1.5 0 2-1 2-2s-1-1.5-1-2.5S14 15 15.5 15H17a4 4 0 0 0 4-4 8 8 0 0 0-9-8zM8 9a1 1 0 1 0 0 2 1 1 0 0 0 0-2zm4-3a1 1 0 1 0 0 2 1 1 0 0 0 0-2zm4 3a1 1 0 1 0 0 2 1 1 0 0 0 0-2z"></path></svg><span>Appearance</span></a><a href="/system"><svg class="nav-icon" viewBox="0 0 24 24" width="16" height="16" fill="currentColor" aria-hidden="true"><path d="M4 5h16v10H4zM2 19h20M9 15v4M15 15v4" fill="none" stroke="currentColor" stroke-width="2" stroke-linejoin="round"></path></svg><span>System</span></a><select aria-label="Language" style="width:auto"><option value="en" selected="">English</option><option value="bg">Български</option></select></nav></header><main id="main"><div style="font-family:system-ui,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding:0 23px 0 0;font-size:24px;font-weight:500;vertical-align:top;line-height:49px">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:49px;margin:0">This page could not be found.</h2></div></div></div><!--$--><!--/$--></main></div><script src="/_next/static/chunks/webpack-0f31b926d9a9c5a4.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[8078,[\"197\",\"static/chunks/197-f7c33a0114fc3db3.js\",\"867\",\"static/chunks/867-d4f5bd8c5805bffb.js\",\"549\",\"static/chunks/549-7e35e4fdefadb05d.js\",\"177\",\"static/chunks/app/layout-630b663626cebe4a.js\"],\"AppearanceProvider\"]\n3:I[867,[\"197\",\"static/chunks/197-f7c33a0114fc3db3.js\",\"867\",\"static/chunks/867-d4f5bd8c5805bffb.js\",\"549\",\"static/chunks/549-7e35e4fdefadb05d.js\",\"177\",\"static/chunks/app/layout-630b663626cebe4a.js\"],\"LanguageProvider\"]\n4:I[1035,[\"197\",\"static/chunks/197-f7c33a0114fc3db3.js\",\"867\",\"static/chunks/867-d4f5bd8c5805bffb.js\",\"549\",\"static/chunks/549-7e35e4fdefadb05d.js\",\"177\",\"static/chunks/app/layout-630b663626cebe4a.js\"],\"DialogHost\"]\n5:I[8214,[\"197\",\"static/chunks/197-f7c33a0114fc3db3.js\",\"867\",\"static/chunks/867-d4f5bd8c5805bffb.js\",\"549\",\"static/chunks/549-7e35e4fdefadb05d.js\",\"177\",\"static/chunks/app/layout-630b663626cebe4a.js\"],\"SkipLink\"]\n6:I[8197,[\"197\",\"static/chunks/197-f7c33a0114fc3db3.js\",\"867\",\"static/chunks/867-d4f5bd8c5805bffb.js\",\"549\",\"static/chunks/549-7e35e4fdefadb05d.js\",\"177\",\"static/chunks/app/layout-630b663626cebe4a.js\"],\"\"]\n7:I[8214,[\"197\",\"static/chunks/197-f7c33a0114fc3db3.js\",\"867\",\"static/chunks/867-d4f5bd8c5805bffb.js\",\"549\",\"static/chunks/549-7e35e4fdefadb05d.js\",\"177\",\"static/chunks/app/layout-630b663626cebe4a.js\"],\"Nav\"]\n8:I[6657,[\"197\",\"static/chunks/197-f7c33a0114fc3db3.js\",\"867\",\"static/chunks/867-d4f5bd8c5805bffb.js\",\"549\",\"static/chunks/549-7e35e4fdefadb05d.js\",\"177\",\"static/chunks/app/layout-630b663626cebe4a.js\"],\"GlobalApprovals\"]\n9:I[5204,[],\"\"]\na:I[2642,[],\"\"]\nb:I[7712,[\"197\",\"static/chunks/197-f7c33a0114fc3db3.js\",\"867\",\"static/chunks/867-d4f5bd8c5805bffb.js\",\"549\",\"static/chunks/549-7e35e4fdefadb05d.js\",\"177\",\"static/chunks/app/layout-630b663626cebe4a.js\"],\"ScrollJump\"]\nc:I[433,[],\"OutletBoundary\"]\ne:I[9884,[],\"AsyncMetadataOutlet\"]\n10:I[433,[],\"ViewportBoundary\"]\n12:I[433,[],\"MetadataBoundary\"]\n13:\"$Sreact.suspense\"\n15:I[3536,[],\"\"]\n:HL[\"/_next/static/css/c37978b44194c37b.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"_BisGyWJ_FTyOA5V_ZfaP\",\"p\":\"\",\"c\":[\"\",\"_not-found\"],\"i\":false,\"f\":[[[\"\",{\"children\":[\"/_not-found\",{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",true],[\"\",[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/c37978b44194c37b.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"suppressHydrationWarning\":true,\"data-theme\":\"light\",\"data-textsize\":\"normal\",\"data-contrast\":\"normal\",\"data-motion\":\"normal\",\"data-links\":\"plain\",\"data-focus\":\"normal\",\"children\":[[\"$\",\"head\",null,{\"children\":[\"$\",\"script\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"\\n(function () {\\n try {\\n var d = document.documentElement;\\n var raw = localStorage.getItem('cop.appearance');\\n var a = raw ? JSON.parse(raw) : {};\\n if (!a || typeof a !== 'object') a = {};\\n d.dataset.theme = a.theme === 'dark' ? 'dark' : 'light';\\n d.dataset.textsize = [\\\"small\\\",\\\"normal\\\",\\\"large\\\",\\\"huge\\\",\\\"giant\\\"].indexOf(a.textSize) \u003e= 0 ? a.textSize : 'normal';\\n d.dataset.contrast = a.highContrast ? 'high' : 'normal';\\n d.dataset.motion = a.reduceMotion ? 'reduced' : 'normal';\\n d.dataset.links = a.underlineLinks ? 'underline' : 'plain';\\n d.dataset.focus = a.strongFocus ? 'strong' : 'normal';\\n } catch (e) {}\\n})();\\n\"}}]}],[\"$\",\"body\",null,{\"children\":[\"$\",\"$L2\",null,{\"children\":[\"$\",\"$L3\",null,{\"children\":[\"$\",\"$L4\",null,{\"children\":[[\"$\",\"$L5\",null,{}],[\"$\",\"div\",null,{\"className\":\"wrap\",\"children\":[[\"$\",\"header\",null,{\"className\":\"top\",\"children\":[[\"$\",\"h1\",null,{\"children\":[\"$\",\"$L6\",null,{\"href\":\"/\",\"children\":\"copilot-operator\"}]}],[\"$\",\"$L7\",null,{}]]}],[\"$\",\"$L8\",null,{}],[\"$\",\"main\",null,{\"id\":\"main\",\"children\":[\"$\",\"$L9\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$La\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]]}],[\"$\",\"$Lb\",null,{}]]}]}]}]}]]}]]}],{\"children\":[\"/_not-found\",[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L9\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$La\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[\"__PAGE__\",[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],null,[\"$\",\"$Lc\",null,{\"children\":[\"$Ld\",[\"$\",\"$Le\",null,{\"promise\":\"$@f\"}]]}]]}],{},null,false]},null,false]},null,false],[\"$\",\"$1\",\"h\",{\"children\":[[\"$\",\"meta\",null,{\"name\":\"robots\",\"content\":\"noindex\"}],[[\"$\",\"$L10\",null,{\"children\":\"$L11\"}],null],[\"$\",\"$L12\",null,{\"children\":[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$13\",null,{\"fallback\":null,\"children\":\"$L14\"}]}]}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$15\",[]],\"s\":false,\"S\":true}\n"])</script><script>self.__next_f.push([1,"11:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\nd:null\n"])</script><script>self.__next_f.push([1,"f:{\"metadata\":[[\"$\",\"title\",\"0\",{\"children\":\"copilot-operator\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Runs task loops with Microsoft 365 Copilot on this machine.\"}]],\"error\":null,\"digest\":\"$undefined\"}\n"])</script><script>self.__next_f.push([1,"14:\"$f:metadata\"\n"])</script></body></html>
|