pair-mode 0.3.0 → 0.3.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/.claude-plugin/plugin.json +1 -1
- package/.codex-plugin/plugin.json +1 -1
- package/README.md +66 -9
- package/assets/syntax/clojure.yaml +36 -0
- package/assets/syntax/cmake.yaml +41 -0
- package/assets/syntax/crystal.yaml +71 -0
- package/assets/syntax/csharp.yaml +51 -0
- package/assets/syntax/dart.yaml +45 -0
- package/assets/syntax/elm.yaml +38 -0
- package/assets/syntax/erb.yaml +42 -0
- package/assets/syntax/erlang.yaml +45 -0
- package/assets/syntax/fsharp.yaml +48 -0
- package/assets/syntax/graphql.yaml +47 -0
- package/assets/syntax/groovy.yaml +111 -0
- package/assets/syntax/haml.yaml +16 -0
- package/assets/syntax/haskell.yaml +52 -0
- package/assets/syntax/ini.yaml +23 -0
- package/assets/syntax/java.yaml +36 -0
- package/assets/syntax/julia.yaml +56 -0
- package/assets/syntax/kotlin.yaml +65 -0
- package/assets/syntax/makefile.yaml +37 -0
- package/assets/syntax/nginx.yaml +22 -0
- package/assets/syntax/nim.yaml +27 -0
- package/assets/syntax/nix.yaml +32 -0
- package/assets/syntax/objc.yaml +60 -0
- package/assets/syntax/ocaml.yaml +43 -0
- package/assets/syntax/perl.yaml +58 -0
- package/assets/syntax/php.yaml +60 -0
- package/assets/syntax/r.yaml +30 -0
- package/assets/syntax/scala.yaml +32 -0
- package/assets/syntax/svelte.yaml +27 -0
- package/assets/syntax/swift.yaml +102 -0
- package/assets/syntax/vue.yaml +63 -0
- package/assets/syntax/xml.yaml +37 -0
- package/assets/syntax/zig.yaml +52 -0
- package/dist/claude-code.js +461 -149
- package/dist/cli.js +1490 -476
- package/dist/codex.js +461 -149
- package/dist/opencode.js +453 -142
- package/dist/pair-tui.js +172 -26
- package/dist/pi.js +508 -155
- package/package.json +4 -4
- package/skills/toggle/SKILL.md +24 -0
- package/commands/pair.md +0 -18
- package/skills/pair/SKILL.md +0 -20
package/dist/pair-tui.js
CHANGED
|
@@ -1835,59 +1835,205 @@ function paint(options) {
|
|
|
1835
1835
|
}
|
|
1836
1836
|
|
|
1837
1837
|
// src/editors/languages.ts
|
|
1838
|
-
import {
|
|
1839
|
-
|
|
1838
|
+
import { openSync, readSync, closeSync } from "node:fs";
|
|
1839
|
+
import { basename as basename2, extname } from "node:path";
|
|
1840
|
+
var EXTENSIONS = {
|
|
1840
1841
|
".go": "go",
|
|
1841
1842
|
".rb": "ruby",
|
|
1842
1843
|
".rake": "ruby",
|
|
1844
|
+
".gemspec": "ruby",
|
|
1845
|
+
".ru": "ruby",
|
|
1846
|
+
".erb": "erb",
|
|
1847
|
+
".haml": "haml",
|
|
1843
1848
|
".ts": "typescript",
|
|
1844
|
-
".
|
|
1849
|
+
".mts": "typescript",
|
|
1850
|
+
".cts": "typescript",
|
|
1851
|
+
".tsx": "tsx",
|
|
1845
1852
|
".js": "javascript",
|
|
1846
|
-
".jsx": "javascript",
|
|
1847
1853
|
".mjs": "javascript",
|
|
1848
|
-
".
|
|
1854
|
+
".cjs": "javascript",
|
|
1855
|
+
".jsx": "jsx",
|
|
1856
|
+
".vue": "vue",
|
|
1857
|
+
".svelte": "svelte",
|
|
1858
|
+
".astro": "astro",
|
|
1859
|
+
".py": "python",
|
|
1860
|
+
".pyi": "python",
|
|
1849
1861
|
".ex": "elixir",
|
|
1850
1862
|
".exs": "elixir",
|
|
1863
|
+
".heex": "elixir",
|
|
1864
|
+
".erl": "erlang",
|
|
1865
|
+
".hrl": "erlang",
|
|
1851
1866
|
".rs": "rust",
|
|
1852
|
-
".sh": "
|
|
1853
|
-
".bash": "
|
|
1854
|
-
".
|
|
1867
|
+
".sh": "shellscript",
|
|
1868
|
+
".bash": "shellscript",
|
|
1869
|
+
".ksh": "shellscript",
|
|
1855
1870
|
".zsh": "zsh",
|
|
1871
|
+
".fish": "fish",
|
|
1872
|
+
".ps1": "powershell",
|
|
1873
|
+
".psm1": "powershell",
|
|
1874
|
+
".bat": "bat",
|
|
1875
|
+
".cmd": "bat",
|
|
1856
1876
|
".sql": "sql",
|
|
1857
1877
|
".json": "json",
|
|
1878
|
+
".jsonc": "jsonc",
|
|
1879
|
+
".json5": "json5",
|
|
1858
1880
|
".tf": "terraform",
|
|
1881
|
+
".tfvars": "terraform",
|
|
1882
|
+
".hcl": "hcl",
|
|
1859
1883
|
".proto": "proto",
|
|
1860
|
-
".dockerfile": "
|
|
1884
|
+
".dockerfile": "docker",
|
|
1861
1885
|
".toml": "toml",
|
|
1862
1886
|
".yaml": "yaml",
|
|
1863
1887
|
".yml": "yaml",
|
|
1888
|
+
".ini": "ini",
|
|
1889
|
+
".cfg": "ini",
|
|
1890
|
+
".properties": "properties",
|
|
1891
|
+
".env": "dotenv",
|
|
1864
1892
|
".md": "markdown",
|
|
1893
|
+
".markdown": "markdown",
|
|
1894
|
+
".mdx": "mdx",
|
|
1865
1895
|
".css": "css",
|
|
1896
|
+
".scss": "scss",
|
|
1897
|
+
".sass": "sass",
|
|
1898
|
+
".less": "less",
|
|
1899
|
+
".styl": "stylus",
|
|
1866
1900
|
".html": "html",
|
|
1867
|
-
".
|
|
1901
|
+
".htm": "html",
|
|
1902
|
+
".xml": "xml",
|
|
1903
|
+
".xsl": "xml",
|
|
1904
|
+
".svg": "xml",
|
|
1868
1905
|
".lua": "lua",
|
|
1869
1906
|
".c": "c",
|
|
1870
|
-
".h": "c"
|
|
1907
|
+
".h": "c",
|
|
1908
|
+
".cc": "cpp",
|
|
1909
|
+
".cpp": "cpp",
|
|
1910
|
+
".cxx": "cpp",
|
|
1911
|
+
".hpp": "cpp",
|
|
1912
|
+
".hh": "cpp",
|
|
1913
|
+
".cs": "csharp",
|
|
1914
|
+
".java": "java",
|
|
1915
|
+
".kt": "kotlin",
|
|
1916
|
+
".kts": "kotlin",
|
|
1917
|
+
".swift": "swift",
|
|
1918
|
+
".m": "objective-c",
|
|
1919
|
+
".mm": "objective-c",
|
|
1920
|
+
".php": "php",
|
|
1921
|
+
".pl": "perl",
|
|
1922
|
+
".pm": "perl",
|
|
1923
|
+
".scala": "scala",
|
|
1924
|
+
".sc": "scala",
|
|
1925
|
+
".clj": "clojure",
|
|
1926
|
+
".cljs": "clojure",
|
|
1927
|
+
".cljc": "clojure",
|
|
1928
|
+
".hs": "haskell",
|
|
1929
|
+
".nix": "nix",
|
|
1930
|
+
".r": "r",
|
|
1931
|
+
".jl": "julia",
|
|
1932
|
+
".zig": "zig",
|
|
1933
|
+
".nim": "nim",
|
|
1934
|
+
".dart": "dart",
|
|
1935
|
+
".groovy": "groovy",
|
|
1936
|
+
".gradle": "groovy",
|
|
1937
|
+
".cr": "crystal",
|
|
1938
|
+
".ml": "ocaml",
|
|
1939
|
+
".mli": "ocaml",
|
|
1940
|
+
".fs": "fsharp",
|
|
1941
|
+
".fsx": "fsharp",
|
|
1942
|
+
".elm": "elm",
|
|
1943
|
+
".graphql": "graphql",
|
|
1944
|
+
".gql": "graphql",
|
|
1945
|
+
".prisma": "prisma",
|
|
1946
|
+
".sol": "solidity",
|
|
1947
|
+
".vim": "viml",
|
|
1948
|
+
".diff": "diff",
|
|
1949
|
+
".patch": "diff",
|
|
1950
|
+
".tex": "latex",
|
|
1951
|
+
".wgsl": "wgsl",
|
|
1952
|
+
".glsl": "glsl",
|
|
1953
|
+
".cue": "cue"
|
|
1871
1954
|
};
|
|
1872
|
-
|
|
1873
|
-
|
|
1874
|
-
|
|
1875
|
-
|
|
1876
|
-
|
|
1877
|
-
|
|
1878
|
-
|
|
1879
|
-
|
|
1880
|
-
|
|
1881
|
-
|
|
1955
|
+
var FILENAMES = {
|
|
1956
|
+
gemfile: "ruby",
|
|
1957
|
+
rakefile: "ruby",
|
|
1958
|
+
capfile: "ruby",
|
|
1959
|
+
vagrantfile: "ruby",
|
|
1960
|
+
guardfile: "ruby",
|
|
1961
|
+
podfile: "ruby",
|
|
1962
|
+
fastfile: "ruby",
|
|
1963
|
+
appfile: "ruby",
|
|
1964
|
+
brewfile: "ruby",
|
|
1965
|
+
"config.ru": "ruby",
|
|
1882
1966
|
dockerfile: "docker",
|
|
1883
|
-
|
|
1967
|
+
containerfile: "docker",
|
|
1968
|
+
makefile: "make",
|
|
1969
|
+
gnumakefile: "make",
|
|
1970
|
+
"cmakelists.txt": "cmake",
|
|
1971
|
+
"cargo.lock": "toml",
|
|
1972
|
+
"gemfile.lock": "toml",
|
|
1973
|
+
".babelrc": "json",
|
|
1974
|
+
".eslintrc": "json",
|
|
1975
|
+
".prettierrc": "json",
|
|
1976
|
+
".env": "dotenv",
|
|
1977
|
+
".gitconfig": "ini",
|
|
1978
|
+
".editorconfig": "ini",
|
|
1979
|
+
"nginx.conf": "nginx",
|
|
1980
|
+
"pnpm-workspace.yaml": "yaml"
|
|
1884
1981
|
};
|
|
1885
|
-
|
|
1886
|
-
|
|
1887
|
-
|
|
1982
|
+
var SHEBANGS = [
|
|
1983
|
+
{ pattern: /^#!.*\/(env\s+)?ruby(\s|$)/, id: "ruby" },
|
|
1984
|
+
{ pattern: /^#!.*\/(env\s+)?python[\d.]*(\s|$)/, id: "python" },
|
|
1985
|
+
{ pattern: /^#!.*\/(env\s+)?(node|bun|deno)(\s|$)/, id: "javascript" },
|
|
1986
|
+
{ pattern: /^#!.*\/(env\s+)?(bash|sh|ksh|dash)(\s|$)/, id: "shellscript" },
|
|
1987
|
+
{ pattern: /^#!.*\/(env\s+)?zsh(\s|$)/, id: "zsh" },
|
|
1988
|
+
{ pattern: /^#!.*\/(env\s+)?fish(\s|$)/, id: "fish" },
|
|
1989
|
+
{ pattern: /^#!.*\/(env\s+)?perl(\s|$)/, id: "perl" },
|
|
1990
|
+
{ pattern: /^#!.*\/(env\s+)?php(\s|$)/, id: "php" },
|
|
1991
|
+
{ pattern: /^#!.*\/(env\s+)?(elixir|iex)(\s|$)/, id: "elixir" },
|
|
1992
|
+
{ pattern: /^#!.*\/(env\s+)?lua(\s|$)/, id: "lua" },
|
|
1993
|
+
{ pattern: /^#!.*\/(env\s+)?Rscript(\s|$)/, id: "r" },
|
|
1994
|
+
{ pattern: /^#!.*\/(env\s+)?pwsh(\s|$)/, id: "powershell" }
|
|
1995
|
+
];
|
|
1996
|
+
var FIRST_LINE_BYTES = 256;
|
|
1997
|
+
function firstLine(sourcePath) {
|
|
1998
|
+
let handle = null;
|
|
1999
|
+
try {
|
|
2000
|
+
handle = openSync(sourcePath, "r");
|
|
2001
|
+
const buffer = Buffer.alloc(FIRST_LINE_BYTES);
|
|
2002
|
+
const read = readSync(handle, buffer, 0, FIRST_LINE_BYTES, 0);
|
|
2003
|
+
const text = buffer.toString("utf-8", 0, read);
|
|
2004
|
+
const newline = text.indexOf("\n");
|
|
2005
|
+
return newline === -1 ? text : text.slice(0, newline);
|
|
2006
|
+
} catch {
|
|
1888
2007
|
return null;
|
|
2008
|
+
} finally {
|
|
2009
|
+
if (handle !== null) {
|
|
2010
|
+
try {
|
|
2011
|
+
closeSync(handle);
|
|
2012
|
+
} catch {
|
|
2013
|
+
}
|
|
2014
|
+
}
|
|
1889
2015
|
}
|
|
1890
|
-
|
|
2016
|
+
}
|
|
2017
|
+
function shebangLanguage(sourcePath) {
|
|
2018
|
+
const line = firstLine(sourcePath);
|
|
2019
|
+
if (line === null || !line.startsWith("#!")) {
|
|
2020
|
+
return null;
|
|
2021
|
+
}
|
|
2022
|
+
return SHEBANGS.find((rule) => rule.pattern.test(line))?.id ?? null;
|
|
2023
|
+
}
|
|
2024
|
+
function detectLanguage(sourcePath) {
|
|
2025
|
+
const name = basename2(sourcePath).toLowerCase();
|
|
2026
|
+
const ext = extname(name);
|
|
2027
|
+
if (ext !== "" && EXTENSIONS[ext] !== void 0) {
|
|
2028
|
+
return EXTENSIONS[ext];
|
|
2029
|
+
}
|
|
2030
|
+
if (FILENAMES[name] !== void 0) {
|
|
2031
|
+
return FILENAMES[name];
|
|
2032
|
+
}
|
|
2033
|
+
return shebangLanguage(sourcePath);
|
|
2034
|
+
}
|
|
2035
|
+
function shikiLanguage(sourcePath) {
|
|
2036
|
+
return detectLanguage(sourcePath);
|
|
1891
2037
|
}
|
|
1892
2038
|
|
|
1893
2039
|
// src/tui/syntax/syntax.ts
|