@steipete/oracle 0.17.0 → 0.17.2
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/bin/oracle-cli.js +1 -1
- package/dist/docs-site/browser-mode.html +9 -7
- package/dist/docs-site/cli-reference.html +1 -1
- package/dist/docs-site/configuration.html +1 -1
- package/dist/docs-site/manual-tests.html +2 -1
- package/dist/docs-site/mcp.html +2 -2
- package/dist/docs-site/mythical-pro-agents.html +1 -1
- package/dist/docs-site/windows-work.html +1 -1
- package/dist/docs-site/windows.html +1 -1
- package/dist/scripts/git-policy.js +0 -8
- package/dist/scripts/runner.js +1 -5
- package/dist/src/browser/actions/modelSelection.js +164 -5
- package/dist/src/browser/actions/thinkingTime.js +267 -82
- package/dist/src/browser/chromeLifecycle.js +6 -0
- package/dist/src/cli/browserConfig.js +5 -2
- package/dist/src/cli/options.js +1 -1
- package/dist/src/oracle/thinkingTime.js +15 -3
- package/dist/src/sessionManager.js +90 -9
- package/package.json +14 -14
- package/dist/vendor/oracle-notifier/OracleNotifier.app/Contents/CodeResources +0 -0
- package/dist/vendor/oracle-notifier/OracleNotifier.app/Contents/Info.plist +0 -20
- package/dist/vendor/oracle-notifier/OracleNotifier.app/Contents/MacOS/OracleNotifier +0 -0
- package/dist/vendor/oracle-notifier/OracleNotifier.app/Contents/Resources/OracleIcon.icns +0 -0
- package/dist/vendor/oracle-notifier/OracleNotifier.app/Contents/_CodeSignature/CodeResources +0 -128
- package/vendor/oracle-notifier/OracleNotifier.app/Contents/CodeResources +0 -0
- package/vendor/oracle-notifier/OracleNotifier.app/Contents/Info.plist +0 -20
- package/vendor/oracle-notifier/OracleNotifier.app/Contents/MacOS/OracleNotifier +0 -0
- package/vendor/oracle-notifier/OracleNotifier.app/Contents/Resources/OracleIcon.icns +0 -0
- package/vendor/oracle-notifier/OracleNotifier.app/Contents/_CodeSignature/CodeResources +0 -128
|
@@ -23,11 +23,86 @@ const DEFAULT_SLUG = "session";
|
|
|
23
23
|
const MAX_SLUG_WORDS = 5;
|
|
24
24
|
const MIN_CUSTOM_SLUG_WORDS = 3;
|
|
25
25
|
const MAX_SLUG_WORD_LENGTH = 10;
|
|
26
|
+
// Session artifacts (prompt, attached file contents, model responses) are sensitive.
|
|
27
|
+
// Keep them owner-only, matching the meta.json / bridge-config posture (0o600/0o700).
|
|
28
|
+
const SESSION_DIR_MODE = 0o700;
|
|
29
|
+
const SESSION_FILE_MODE = 0o600;
|
|
30
|
+
const sessionStorageHardening = new Map();
|
|
26
31
|
async function ensureDir(dirPath) {
|
|
27
|
-
await fs.mkdir(dirPath, { recursive: true });
|
|
32
|
+
await fs.mkdir(dirPath, { recursive: true, mode: SESSION_DIR_MODE });
|
|
33
|
+
}
|
|
34
|
+
function isMissingPathError(error) {
|
|
35
|
+
return typeof error === "object" && error !== null && "code" in error && error.code === "ENOENT";
|
|
36
|
+
}
|
|
37
|
+
async function chmodIfPresent(targetPath, mode) {
|
|
38
|
+
try {
|
|
39
|
+
await fs.chmod(targetPath, mode);
|
|
40
|
+
return true;
|
|
41
|
+
}
|
|
42
|
+
catch (error) {
|
|
43
|
+
if (isMissingPathError(error)) {
|
|
44
|
+
return false;
|
|
45
|
+
}
|
|
46
|
+
throw error;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
async function hardenSessionStorageEntry(targetPath) {
|
|
50
|
+
let stats;
|
|
51
|
+
try {
|
|
52
|
+
stats = await fs.lstat(targetPath);
|
|
53
|
+
}
|
|
54
|
+
catch (error) {
|
|
55
|
+
if (isMissingPathError(error)) {
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
throw error;
|
|
59
|
+
}
|
|
60
|
+
if (stats.isSymbolicLink()) {
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
if (stats.isDirectory()) {
|
|
64
|
+
if (!(await chmodIfPresent(targetPath, SESSION_DIR_MODE))) {
|
|
65
|
+
return;
|
|
66
|
+
}
|
|
67
|
+
let entries;
|
|
68
|
+
try {
|
|
69
|
+
entries = await fs.readdir(targetPath);
|
|
70
|
+
}
|
|
71
|
+
catch (error) {
|
|
72
|
+
if (isMissingPathError(error)) {
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
75
|
+
throw error;
|
|
76
|
+
}
|
|
77
|
+
for (const entry of entries) {
|
|
78
|
+
await hardenSessionStorageEntry(path.join(targetPath, entry));
|
|
79
|
+
}
|
|
80
|
+
return;
|
|
81
|
+
}
|
|
82
|
+
if (stats.isFile()) {
|
|
83
|
+
await chmodIfPresent(targetPath, SESSION_FILE_MODE);
|
|
84
|
+
}
|
|
28
85
|
}
|
|
29
86
|
export async function ensureSessionStorage() {
|
|
30
|
-
|
|
87
|
+
const sessionsDir = getSessionsDir();
|
|
88
|
+
await ensureDir(sessionsDir);
|
|
89
|
+
if (process.platform === "win32") {
|
|
90
|
+
return;
|
|
91
|
+
}
|
|
92
|
+
const stats = await fs.lstat(sessionsDir);
|
|
93
|
+
if (stats.isSymbolicLink() || !stats.isDirectory()) {
|
|
94
|
+
return;
|
|
95
|
+
}
|
|
96
|
+
const identity = `${sessionsDir}:${stats.dev}:${stats.ino}`;
|
|
97
|
+
let hardening = sessionStorageHardening.get(identity);
|
|
98
|
+
if (!hardening) {
|
|
99
|
+
hardening = hardenSessionStorageEntry(sessionsDir).catch((error) => {
|
|
100
|
+
sessionStorageHardening.delete(identity);
|
|
101
|
+
throw error;
|
|
102
|
+
});
|
|
103
|
+
sessionStorageHardening.set(identity, hardening);
|
|
104
|
+
}
|
|
105
|
+
await hardening;
|
|
31
106
|
}
|
|
32
107
|
function slugify(text, maxWords = MAX_SLUG_WORDS) {
|
|
33
108
|
const normalized = text?.toLowerCase() ?? "";
|
|
@@ -110,7 +185,7 @@ async function reserveUniqueSessionDir(baseSlug) {
|
|
|
110
185
|
for (;;) {
|
|
111
186
|
const dir = sessionDir(candidate);
|
|
112
187
|
try {
|
|
113
|
-
await fs.mkdir(dir, { recursive: false });
|
|
188
|
+
await fs.mkdir(dir, { recursive: false, mode: SESSION_DIR_MODE });
|
|
114
189
|
return candidate;
|
|
115
190
|
}
|
|
116
191
|
catch (error) {
|
|
@@ -171,7 +246,10 @@ export async function updateModelRunMetadata(sessionId, model, updates) {
|
|
|
171
246
|
...updates,
|
|
172
247
|
model,
|
|
173
248
|
});
|
|
174
|
-
await fs.writeFile(modelJsonPath(sessionId, model), JSON.stringify(next, null, 2),
|
|
249
|
+
await fs.writeFile(modelJsonPath(sessionId, model), JSON.stringify(next, null, 2), {
|
|
250
|
+
encoding: "utf8",
|
|
251
|
+
mode: SESSION_FILE_MODE,
|
|
252
|
+
});
|
|
175
253
|
return next;
|
|
176
254
|
}
|
|
177
255
|
export async function readModelRunMetadata(sessionId, model) {
|
|
@@ -261,10 +339,13 @@ export async function initializeSession(options, cwd, notifications, baseSlugOve
|
|
|
261
339
|
status: "pending",
|
|
262
340
|
log: { path: path.relative(sessionDir(sessionId), logFilePath) },
|
|
263
341
|
};
|
|
264
|
-
await fs.writeFile(jsonPath, JSON.stringify(modelRecord, null, 2),
|
|
265
|
-
|
|
342
|
+
await fs.writeFile(jsonPath, JSON.stringify(modelRecord, null, 2), {
|
|
343
|
+
encoding: "utf8",
|
|
344
|
+
mode: SESSION_FILE_MODE,
|
|
345
|
+
});
|
|
346
|
+
await fs.writeFile(logFilePath, "", { encoding: "utf8", mode: SESSION_FILE_MODE });
|
|
266
347
|
}));
|
|
267
|
-
await fs.writeFile(logPath(sessionId), "", "utf8");
|
|
348
|
+
await fs.writeFile(logPath(sessionId), "", { encoding: "utf8", mode: SESSION_FILE_MODE });
|
|
268
349
|
return metadata;
|
|
269
350
|
}
|
|
270
351
|
export async function readSessionMetadata(sessionId) {
|
|
@@ -350,9 +431,9 @@ async function attachModelRuns(meta, sessionId) {
|
|
|
350
431
|
export function createSessionLogWriter(sessionId, model) {
|
|
351
432
|
const targetPath = model ? modelLogPath(sessionId, model) : logPath(sessionId);
|
|
352
433
|
if (model) {
|
|
353
|
-
mkdirSync(modelsDir(sessionId), { recursive: true });
|
|
434
|
+
mkdirSync(modelsDir(sessionId), { recursive: true, mode: SESSION_DIR_MODE });
|
|
354
435
|
}
|
|
355
|
-
const stream = createWriteStream(targetPath, { flags: "a" });
|
|
436
|
+
const stream = createWriteStream(targetPath, { flags: "a", mode: SESSION_FILE_MODE });
|
|
356
437
|
const logLine = (line = "") => {
|
|
357
438
|
stream.write(`${line}\n`);
|
|
358
439
|
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@steipete/oracle",
|
|
3
|
-
"version": "0.17.
|
|
3
|
+
"version": "0.17.2",
|
|
4
4
|
"description": "CLI wrapper around OpenAI Responses API with GPT-5.6 Sol, GPT-5.6, GPT-5.5 Pro, GPT-5.5, GPT-5.4, GPT-5.2, GPT-5.1, and GPT-5.1 Codex high reasoning modes.",
|
|
5
5
|
"keywords": [],
|
|
6
6
|
"homepage": "https://askoracle.sh",
|
|
@@ -58,7 +58,7 @@
|
|
|
58
58
|
},
|
|
59
59
|
"dependencies": {
|
|
60
60
|
"@anthropic-ai/tokenizer": "^0.0.4",
|
|
61
|
-
"@google/genai": "^2.
|
|
61
|
+
"@google/genai": "^2.16.0",
|
|
62
62
|
"@google/generative-ai": "^0.24.1",
|
|
63
63
|
"@modelcontextprotocol/sdk": "^1.30.0",
|
|
64
64
|
"@steipete/sweet-cookie": "^0.4.1",
|
|
@@ -73,28 +73,28 @@
|
|
|
73
73
|
"inquirer": "14.0.2",
|
|
74
74
|
"json5": "^2.2.3",
|
|
75
75
|
"kleur": "^4.1.5",
|
|
76
|
-
"markdansi": "0.3.
|
|
77
|
-
"openai": "^7.
|
|
76
|
+
"markdansi": "0.3.3",
|
|
77
|
+
"openai": "^7.4.0",
|
|
78
78
|
"osc-progress": "^0.3.2",
|
|
79
79
|
"qs": "^6.15.3",
|
|
80
|
-
"shiki": "^4.4.
|
|
80
|
+
"shiki": "^4.4.3",
|
|
81
81
|
"toasted-notifier": "^10.1.0",
|
|
82
|
-
"tokentally": "^0.1.
|
|
82
|
+
"tokentally": "^0.1.4",
|
|
83
83
|
"zod": "^4.4.3"
|
|
84
84
|
},
|
|
85
85
|
"devDependencies": {
|
|
86
86
|
"@anthropic-ai/tokenizer": "^0.0.4",
|
|
87
87
|
"@types/chrome-remote-interface": "^0.34.0",
|
|
88
88
|
"@types/inquirer": "^9.0.10",
|
|
89
|
-
"@types/node": "^26.
|
|
89
|
+
"@types/node": "^26.2.0",
|
|
90
90
|
"@vitest/coverage-v8": "4.1.10",
|
|
91
|
-
"devtools-protocol": "0.0.
|
|
91
|
+
"devtools-protocol": "0.0.1676105",
|
|
92
92
|
"es-toolkit": "^1.50.0",
|
|
93
|
-
"esbuild": "^0.28.
|
|
94
|
-
"oxfmt": "0.
|
|
95
|
-
"oxlint": "^1.
|
|
96
|
-
"puppeteer-core": "^25.
|
|
97
|
-
"tsx": "^4.23.
|
|
93
|
+
"esbuild": "^0.28.2",
|
|
94
|
+
"oxfmt": "0.63.0",
|
|
95
|
+
"oxlint": "^1.78.0",
|
|
96
|
+
"puppeteer-core": "^25.5.0",
|
|
97
|
+
"tsx": "^4.23.12",
|
|
98
98
|
"typescript": "^7.0.2",
|
|
99
99
|
"vitest": "^4.1.10"
|
|
100
100
|
},
|
|
@@ -109,5 +109,5 @@
|
|
|
109
109
|
"engines": {
|
|
110
110
|
"node": ">=24"
|
|
111
111
|
},
|
|
112
|
-
"packageManager": "pnpm@10.
|
|
112
|
+
"packageManager": "pnpm@10.34.5"
|
|
113
113
|
}
|
|
Binary file
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
-
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
|
3
|
-
<plist version="1.0">
|
|
4
|
-
<dict>
|
|
5
|
-
<key>CFBundleIdentifier</key>
|
|
6
|
-
<string>com.steipete.oracle.notifier</string>
|
|
7
|
-
<key>CFBundleName</key>
|
|
8
|
-
<string>OracleNotifier</string>
|
|
9
|
-
<key>CFBundleDisplayName</key>
|
|
10
|
-
<string>Oracle Notifier</string>
|
|
11
|
-
<key>CFBundleExecutable</key>
|
|
12
|
-
<string>OracleNotifier</string>
|
|
13
|
-
<key>CFBundleIconFile</key>
|
|
14
|
-
<string>OracleIcon</string>
|
|
15
|
-
<key>CFBundlePackageType</key>
|
|
16
|
-
<string>APPL</string>
|
|
17
|
-
<key>LSMinimumSystemVersion</key>
|
|
18
|
-
<string>13.0</string>
|
|
19
|
-
</dict>
|
|
20
|
-
</plist>
|
|
Binary file
|
|
Binary file
|
package/dist/vendor/oracle-notifier/OracleNotifier.app/Contents/_CodeSignature/CodeResources
DELETED
|
@@ -1,128 +0,0 @@
|
|
|
1
|
-
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
-
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
|
3
|
-
<plist version="1.0">
|
|
4
|
-
<dict>
|
|
5
|
-
<key>files</key>
|
|
6
|
-
<dict>
|
|
7
|
-
<key>Resources/OracleIcon.icns</key>
|
|
8
|
-
<data>
|
|
9
|
-
edUHAMetayIv3xtc3Vb92VXRLfM=
|
|
10
|
-
</data>
|
|
11
|
-
</dict>
|
|
12
|
-
<key>files2</key>
|
|
13
|
-
<dict>
|
|
14
|
-
<key>Resources/OracleIcon.icns</key>
|
|
15
|
-
<dict>
|
|
16
|
-
<key>hash2</key>
|
|
17
|
-
<data>
|
|
18
|
-
AVPJK/6w6IOsDLmZTW4hL+Za+/4wHMxZiIp0t6m3NRA=
|
|
19
|
-
</data>
|
|
20
|
-
</dict>
|
|
21
|
-
</dict>
|
|
22
|
-
<key>rules</key>
|
|
23
|
-
<dict>
|
|
24
|
-
<key>^Resources/</key>
|
|
25
|
-
<true/>
|
|
26
|
-
<key>^Resources/.*\.lproj/</key>
|
|
27
|
-
<dict>
|
|
28
|
-
<key>optional</key>
|
|
29
|
-
<true/>
|
|
30
|
-
<key>weight</key>
|
|
31
|
-
<real>1000</real>
|
|
32
|
-
</dict>
|
|
33
|
-
<key>^Resources/.*\.lproj/locversion.plist$</key>
|
|
34
|
-
<dict>
|
|
35
|
-
<key>omit</key>
|
|
36
|
-
<true/>
|
|
37
|
-
<key>weight</key>
|
|
38
|
-
<real>1100</real>
|
|
39
|
-
</dict>
|
|
40
|
-
<key>^Resources/Base\.lproj/</key>
|
|
41
|
-
<dict>
|
|
42
|
-
<key>weight</key>
|
|
43
|
-
<real>1010</real>
|
|
44
|
-
</dict>
|
|
45
|
-
<key>^version.plist$</key>
|
|
46
|
-
<true/>
|
|
47
|
-
</dict>
|
|
48
|
-
<key>rules2</key>
|
|
49
|
-
<dict>
|
|
50
|
-
<key>.*\.dSYM($|/)</key>
|
|
51
|
-
<dict>
|
|
52
|
-
<key>weight</key>
|
|
53
|
-
<real>11</real>
|
|
54
|
-
</dict>
|
|
55
|
-
<key>^(.*/)?\.DS_Store$</key>
|
|
56
|
-
<dict>
|
|
57
|
-
<key>omit</key>
|
|
58
|
-
<true/>
|
|
59
|
-
<key>weight</key>
|
|
60
|
-
<real>2000</real>
|
|
61
|
-
</dict>
|
|
62
|
-
<key>^(Frameworks|SharedFrameworks|PlugIns|Plug-ins|XPCServices|Helpers|MacOS|Library/(Automator|Spotlight|LoginItems))/</key>
|
|
63
|
-
<dict>
|
|
64
|
-
<key>nested</key>
|
|
65
|
-
<true/>
|
|
66
|
-
<key>weight</key>
|
|
67
|
-
<real>10</real>
|
|
68
|
-
</dict>
|
|
69
|
-
<key>^.*</key>
|
|
70
|
-
<true/>
|
|
71
|
-
<key>^Info\.plist$</key>
|
|
72
|
-
<dict>
|
|
73
|
-
<key>omit</key>
|
|
74
|
-
<true/>
|
|
75
|
-
<key>weight</key>
|
|
76
|
-
<real>20</real>
|
|
77
|
-
</dict>
|
|
78
|
-
<key>^PkgInfo$</key>
|
|
79
|
-
<dict>
|
|
80
|
-
<key>omit</key>
|
|
81
|
-
<true/>
|
|
82
|
-
<key>weight</key>
|
|
83
|
-
<real>20</real>
|
|
84
|
-
</dict>
|
|
85
|
-
<key>^Resources/</key>
|
|
86
|
-
<dict>
|
|
87
|
-
<key>weight</key>
|
|
88
|
-
<real>20</real>
|
|
89
|
-
</dict>
|
|
90
|
-
<key>^Resources/.*\.lproj/</key>
|
|
91
|
-
<dict>
|
|
92
|
-
<key>optional</key>
|
|
93
|
-
<true/>
|
|
94
|
-
<key>weight</key>
|
|
95
|
-
<real>1000</real>
|
|
96
|
-
</dict>
|
|
97
|
-
<key>^Resources/.*\.lproj/locversion.plist$</key>
|
|
98
|
-
<dict>
|
|
99
|
-
<key>omit</key>
|
|
100
|
-
<true/>
|
|
101
|
-
<key>weight</key>
|
|
102
|
-
<real>1100</real>
|
|
103
|
-
</dict>
|
|
104
|
-
<key>^Resources/Base\.lproj/</key>
|
|
105
|
-
<dict>
|
|
106
|
-
<key>weight</key>
|
|
107
|
-
<real>1010</real>
|
|
108
|
-
</dict>
|
|
109
|
-
<key>^[^/]+$</key>
|
|
110
|
-
<dict>
|
|
111
|
-
<key>nested</key>
|
|
112
|
-
<true/>
|
|
113
|
-
<key>weight</key>
|
|
114
|
-
<real>10</real>
|
|
115
|
-
</dict>
|
|
116
|
-
<key>^embedded\.provisionprofile$</key>
|
|
117
|
-
<dict>
|
|
118
|
-
<key>weight</key>
|
|
119
|
-
<real>20</real>
|
|
120
|
-
</dict>
|
|
121
|
-
<key>^version\.plist$</key>
|
|
122
|
-
<dict>
|
|
123
|
-
<key>weight</key>
|
|
124
|
-
<real>20</real>
|
|
125
|
-
</dict>
|
|
126
|
-
</dict>
|
|
127
|
-
</dict>
|
|
128
|
-
</plist>
|
|
Binary file
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
-
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
|
3
|
-
<plist version="1.0">
|
|
4
|
-
<dict>
|
|
5
|
-
<key>CFBundleIdentifier</key>
|
|
6
|
-
<string>com.steipete.oracle.notifier</string>
|
|
7
|
-
<key>CFBundleName</key>
|
|
8
|
-
<string>OracleNotifier</string>
|
|
9
|
-
<key>CFBundleDisplayName</key>
|
|
10
|
-
<string>Oracle Notifier</string>
|
|
11
|
-
<key>CFBundleExecutable</key>
|
|
12
|
-
<string>OracleNotifier</string>
|
|
13
|
-
<key>CFBundleIconFile</key>
|
|
14
|
-
<string>OracleIcon</string>
|
|
15
|
-
<key>CFBundlePackageType</key>
|
|
16
|
-
<string>APPL</string>
|
|
17
|
-
<key>LSMinimumSystemVersion</key>
|
|
18
|
-
<string>13.0</string>
|
|
19
|
-
</dict>
|
|
20
|
-
</plist>
|
|
Binary file
|
|
Binary file
|
|
@@ -1,128 +0,0 @@
|
|
|
1
|
-
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
-
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
|
3
|
-
<plist version="1.0">
|
|
4
|
-
<dict>
|
|
5
|
-
<key>files</key>
|
|
6
|
-
<dict>
|
|
7
|
-
<key>Resources/OracleIcon.icns</key>
|
|
8
|
-
<data>
|
|
9
|
-
edUHAMetayIv3xtc3Vb92VXRLfM=
|
|
10
|
-
</data>
|
|
11
|
-
</dict>
|
|
12
|
-
<key>files2</key>
|
|
13
|
-
<dict>
|
|
14
|
-
<key>Resources/OracleIcon.icns</key>
|
|
15
|
-
<dict>
|
|
16
|
-
<key>hash2</key>
|
|
17
|
-
<data>
|
|
18
|
-
AVPJK/6w6IOsDLmZTW4hL+Za+/4wHMxZiIp0t6m3NRA=
|
|
19
|
-
</data>
|
|
20
|
-
</dict>
|
|
21
|
-
</dict>
|
|
22
|
-
<key>rules</key>
|
|
23
|
-
<dict>
|
|
24
|
-
<key>^Resources/</key>
|
|
25
|
-
<true/>
|
|
26
|
-
<key>^Resources/.*\.lproj/</key>
|
|
27
|
-
<dict>
|
|
28
|
-
<key>optional</key>
|
|
29
|
-
<true/>
|
|
30
|
-
<key>weight</key>
|
|
31
|
-
<real>1000</real>
|
|
32
|
-
</dict>
|
|
33
|
-
<key>^Resources/.*\.lproj/locversion.plist$</key>
|
|
34
|
-
<dict>
|
|
35
|
-
<key>omit</key>
|
|
36
|
-
<true/>
|
|
37
|
-
<key>weight</key>
|
|
38
|
-
<real>1100</real>
|
|
39
|
-
</dict>
|
|
40
|
-
<key>^Resources/Base\.lproj/</key>
|
|
41
|
-
<dict>
|
|
42
|
-
<key>weight</key>
|
|
43
|
-
<real>1010</real>
|
|
44
|
-
</dict>
|
|
45
|
-
<key>^version.plist$</key>
|
|
46
|
-
<true/>
|
|
47
|
-
</dict>
|
|
48
|
-
<key>rules2</key>
|
|
49
|
-
<dict>
|
|
50
|
-
<key>.*\.dSYM($|/)</key>
|
|
51
|
-
<dict>
|
|
52
|
-
<key>weight</key>
|
|
53
|
-
<real>11</real>
|
|
54
|
-
</dict>
|
|
55
|
-
<key>^(.*/)?\.DS_Store$</key>
|
|
56
|
-
<dict>
|
|
57
|
-
<key>omit</key>
|
|
58
|
-
<true/>
|
|
59
|
-
<key>weight</key>
|
|
60
|
-
<real>2000</real>
|
|
61
|
-
</dict>
|
|
62
|
-
<key>^(Frameworks|SharedFrameworks|PlugIns|Plug-ins|XPCServices|Helpers|MacOS|Library/(Automator|Spotlight|LoginItems))/</key>
|
|
63
|
-
<dict>
|
|
64
|
-
<key>nested</key>
|
|
65
|
-
<true/>
|
|
66
|
-
<key>weight</key>
|
|
67
|
-
<real>10</real>
|
|
68
|
-
</dict>
|
|
69
|
-
<key>^.*</key>
|
|
70
|
-
<true/>
|
|
71
|
-
<key>^Info\.plist$</key>
|
|
72
|
-
<dict>
|
|
73
|
-
<key>omit</key>
|
|
74
|
-
<true/>
|
|
75
|
-
<key>weight</key>
|
|
76
|
-
<real>20</real>
|
|
77
|
-
</dict>
|
|
78
|
-
<key>^PkgInfo$</key>
|
|
79
|
-
<dict>
|
|
80
|
-
<key>omit</key>
|
|
81
|
-
<true/>
|
|
82
|
-
<key>weight</key>
|
|
83
|
-
<real>20</real>
|
|
84
|
-
</dict>
|
|
85
|
-
<key>^Resources/</key>
|
|
86
|
-
<dict>
|
|
87
|
-
<key>weight</key>
|
|
88
|
-
<real>20</real>
|
|
89
|
-
</dict>
|
|
90
|
-
<key>^Resources/.*\.lproj/</key>
|
|
91
|
-
<dict>
|
|
92
|
-
<key>optional</key>
|
|
93
|
-
<true/>
|
|
94
|
-
<key>weight</key>
|
|
95
|
-
<real>1000</real>
|
|
96
|
-
</dict>
|
|
97
|
-
<key>^Resources/.*\.lproj/locversion.plist$</key>
|
|
98
|
-
<dict>
|
|
99
|
-
<key>omit</key>
|
|
100
|
-
<true/>
|
|
101
|
-
<key>weight</key>
|
|
102
|
-
<real>1100</real>
|
|
103
|
-
</dict>
|
|
104
|
-
<key>^Resources/Base\.lproj/</key>
|
|
105
|
-
<dict>
|
|
106
|
-
<key>weight</key>
|
|
107
|
-
<real>1010</real>
|
|
108
|
-
</dict>
|
|
109
|
-
<key>^[^/]+$</key>
|
|
110
|
-
<dict>
|
|
111
|
-
<key>nested</key>
|
|
112
|
-
<true/>
|
|
113
|
-
<key>weight</key>
|
|
114
|
-
<real>10</real>
|
|
115
|
-
</dict>
|
|
116
|
-
<key>^embedded\.provisionprofile$</key>
|
|
117
|
-
<dict>
|
|
118
|
-
<key>weight</key>
|
|
119
|
-
<real>20</real>
|
|
120
|
-
</dict>
|
|
121
|
-
<key>^version\.plist$</key>
|
|
122
|
-
<dict>
|
|
123
|
-
<key>weight</key>
|
|
124
|
-
<real>20</real>
|
|
125
|
-
</dict>
|
|
126
|
-
</dict>
|
|
127
|
-
</dict>
|
|
128
|
-
</plist>
|