Skip to content

Commit

Permalink
Merge branch 'main' into dependabot/npm_and_yarn/packages/ansible-lan…
Browse files Browse the repository at this point in the history
…guage-server/types/vscode-1.89.0
  • Loading branch information
TamiTakamiya authored May 22, 2024
2 parents 83b81c6 + e209f91 commit 45edebf
Show file tree
Hide file tree
Showing 25 changed files with 565 additions and 182 deletions.
3 changes: 3 additions & 0 deletions .config/Taskfile_shared.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@ env: &env
vars:
HOSTNAME:
sh: echo ${HOSTNAME:-${HOST:-$(hostname)}}
PYTHON3:
sh: echo $VIRTUAL_ENV/bin/python3
tasks:
setup:
desc: Install dependencies
Expand All @@ -22,6 +24,7 @@ tasks:
- .config/requirements.in
generates:
- out/log/manifest-{{.HOSTNAME}}.yml
- "{{.PYTHON3}}"
run: once
interactive: true
install:
Expand Down
1 change: 1 addition & 0 deletions .config/dictionary.txt
Original file line number Diff line number Diff line change
Expand Up @@ -112,6 +112,7 @@ groovylint
haaaad
hbenl
hostvars
hostsvars
hotfixes
iam
icontent
Expand Down
23 changes: 3 additions & 20 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -1,26 +1,9 @@
version: 2
updates:
- package-ecosystem: npm
directory: /
schedule:
interval: weekly
labels:
- dependabot-deps-updates
- skip-changelog
versioning-strategy: increase
open-pull-requests-limit: 2
groups:
dependencies:
patterns:
- "*"
exclude-patterns:
- "@types/vscode"
ignore:
# requires ESM https://github.com/ansible/vscode-ansible/issues/1225
- dependency-name: chai
versions: ["5.x"]
- package-ecosystem: npm
directory: /packages/ansible-language-server/
directories:
- "/"
- "/packages/ansible-language-server/"
schedule:
interval: weekly
labels:
Expand Down
5 changes: 4 additions & 1 deletion .github/workflows/ci.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,9 @@ jobs:
defaults:
run:
shell: ${{ matrix.shell || 'bash'}}
permissions:
id-token: write
checks: read
# The type of runner that the job will run on
runs-on: ${{ matrix.os || 'ubuntu-22.04' }}
# see https://github.com/containers/podman/issues/13609
Expand Down Expand Up @@ -263,10 +266,10 @@ jobs:
uses: codecov/codecov-action@v4
with:
name: ${{ matrix.name }}
token: ${{ secrets.CODECOV_TOKEN }}
files: out/coverage/lcov.info
flags: unit
fail_ci_if_error: true
use_oidc: true # cspell:ignore oidc

- name: Upload vsix artifact
if: ${{ matrix.name == 'test' }}
Expand Down
6 changes: 3 additions & 3 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ exclude: >
minimum_pre_commit_version: 2.9.0 # types_or
repos:
- repo: https://github.com/streetsidesoftware/cspell-cli
rev: v8.7.0
rev: v8.8.0
hooks:
- id: cspell
# name: Spell check with cspell
Expand Down Expand Up @@ -157,15 +157,15 @@ repos:
docs/als/settings.md
)$
- repo: https://github.com/igorshubovych/markdownlint-cli
rev: v0.39.0
rev: v0.40.0
hooks:
- id: markdownlint
exclude: >
(?x)^
docs/als/settings.md
$
- repo: https://github.com/alessandrojcm/commitlint-pre-commit-hook
rev: v9.14.0
rev: v9.16.0
hooks:
- id: commitlint
stages: [commit-msg]
1 change: 1 addition & 0 deletions Taskfile.yml
Original file line number Diff line number Diff line change
Expand Up @@ -110,6 +110,7 @@ tasks:
desc: Lint the project
cmds:
- task: install
- packages/ansible-language-server/tools/can-release.sh
- $VIRTUAL_ENV/bin/python3 ./tools/precheck.py
- $VIRTUAL_ENV/bin/python3 -m pre_commit run -a
- tools/dirty.sh
Expand Down
6 changes: 6 additions & 0 deletions examples/playbooks/lint-issue.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
- name: example
hosts: "{{ hostsvars['sss'] }}"
tasks:
- name: hello world
hello.world:
27 changes: 27 additions & 0 deletions media/playbookGeneration/style.css
Original file line number Diff line number Diff line change
@@ -1,3 +1,23 @@
a:link {
text-decoration: none;
}

a:visited {
text-decoration: none;
}

a:hover {
text-decoration: none;
}

a:active {
text-decoration: none;
}

.backAnchor {
cursor: pointer;
}

.playbookGeneration {
right: 0px;
bottom: 0px;
Expand Down Expand Up @@ -152,6 +172,12 @@
display: none;
}

.promptContainer {
margin: 1em;
display: none;
color: var(--vscode-descriptionForeground);
}

.examplesContainer {
margin-top: 1em;
}
Expand All @@ -167,6 +193,7 @@
border-radius: 8px;
width: fit-content;
max-width: 90%;
color: var(--vscode-descriptionForeground);
}

.continueButtonContainer {
Expand Down
1 change: 0 additions & 1 deletion packages/ansible-language-server/Taskfile.yml
Original file line number Diff line number Diff line change
Expand Up @@ -116,7 +116,6 @@ tasks:
- task: build
- rm -f {{ .TASKFILE_DIR }}/*.tgz
- yarn pack --out '{{ .TASKFILE_DIR }}/%s-%v.tgz'
- ./tools/can-release.sh
silent: false
release:
desc: Create a new release (used by CI)
Expand Down
140 changes: 83 additions & 57 deletions packages/ansible-language-server/src/ansibleLanguageService.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import {
TextDocumentSyncKind,
} from "vscode-languageserver";
import { TextDocument } from "vscode-languageserver-textdocument";
import { v4 as uuidv4 } from "uuid";
import {
doCompletion,
doCompletionResolve,
Expand All @@ -25,6 +26,11 @@ import { WorkspaceManager } from "./services/workspaceManager";
import { getAnsibleMetaData } from "./utils/getAnsibleMetaData";
import axios from "axios";
import { getBaseUri } from "./utils/webUtils";
import {
ExplanationResponse,
GenerationResponse,
SummaryResponse,
} from "./interfaces/lightspeedApi";

/**
* Initializes the connection and registers all lifecycle event handlers.
Expand Down Expand Up @@ -354,77 +360,97 @@ export class AnsibleLanguageService {
},
);

this.connection.onRequest("playbook/explanation", async (params) => {
const accessToken: string = params["accessToken"];
const URL: string = params["URL"];
const content: string = params["content"];

const headers = {
"Content-Type": "application/json",
Authorization: `Bearer ${accessToken}`,
};

const axiosInstance = axios.create({
baseURL: `${getBaseUri(URL)}/api/v0`,
headers: headers,
});
this.connection.onRequest(
"playbook/explanation",
async (params): Promise<ExplanationResponse> => {
const accessToken: string = params["accessToken"];
const URL: string = params["URL"];
const content: string = params["content"];
const explanationId: string = params["explanationId"];

const headers = {
"Content-Type": "application/json",
Authorization: `Bearer ${accessToken}`,
};

const explanation: string = await axiosInstance
.post("/ai/explanations/", { content: content })
.then((response) => {
return response.data.content;
const axiosInstance = axios.create({
baseURL: `${getBaseUri(URL)}/api/v0`,
headers: headers,
});

return explanation;
});

this.connection.onRequest("playbook/summary", async (params) => {
const accessToken: string = params["accessToken"];
const URL: string = params["URL"];
const content: string = params["content"];
const result: ExplanationResponse = await axiosInstance
.post("/ai/explanations/", {
content: content,
explanationId: explanationId,
})
.then((response) => {
return response.data;
});
console.log(result);

return result;
},
);

const headers = {
"Content-Type": "application/json",
Authorization: `Bearer ${accessToken}`,
};
this.connection.onRequest(
"playbook/summary",
async (params): Promise<SummaryResponse> => {
const accessToken: string = params["accessToken"];
const URL: string = params["URL"];
const content: string = params["content"];

const axiosInstance = axios.create({
baseURL: `${getBaseUri(URL)}/api/v0`,
headers: headers,
});
const headers = {
"Content-Type": "application/json",
Authorization: `Bearer ${accessToken}`,
};

const result: string = await axiosInstance
.post("/ai/summaries/", { content: content })
.then((response) => {
return response.data.content;
const axiosInstance = axios.create({
baseURL: `${getBaseUri(URL)}/api/v0`,
headers: headers,
});

return result;
});
const result: SummaryResponse = await axiosInstance
.post("/ai/summaries/", {
content: content,
summaryId: uuidv4(),
})
.then((response) => {
return response.data;
});

this.connection.onRequest("playbook/generation", async (params) => {
const accessToken: string = params["accessToken"];
const URL: string = params["URL"];
const content: string = params["content"];
return result;
},
);

const headers = {
"Content-Type": "application/json",
Authorization: `Bearer ${accessToken}`,
};
this.connection.onRequest(
"playbook/generation",
async (params): Promise<GenerationResponse> => {
const accessToken: string = params["accessToken"];
const URL: string = params["URL"];
const content: string = params["content"];

const axiosInstance = axios.create({
baseURL: `${getBaseUri(URL)}/api/v0`,
headers: headers,
});
const headers = {
"Content-Type": "application/json",
Authorization: `Bearer ${accessToken}`,
};

const result: string = await axiosInstance
.post("/ai/generations/", { content: content })
.then((response) => {
return response.data.content;
const axiosInstance = axios.create({
baseURL: `${getBaseUri(URL)}/api/v0`,
headers: headers,
});

return result;
});
const result: GenerationResponse = await axiosInstance
.post("/ai/generations/", {
content: content,
generationId: uuidv4(),
})
.then((response) => {
return response.data;
});

return result;
},
);
}

private handleError(error: unknown, contextName: string) {
Expand Down
20 changes: 20 additions & 0 deletions packages/ansible-language-server/src/interfaces/lightspeedApi.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
/**
* Interface for Lightspeed playbook generation/explanation APIs
*/
export interface GenerationResponse {
content: string;
format: string;
generationId: string;
}

export interface SummaryResponse {
content: string;
format: string;
summaryId: string;
}

export interface ExplanationResponse {
content: string;
format: string;
explanationId: string;
}
18 changes: 12 additions & 6 deletions packages/ansible-language-server/src/services/ansibleLint.ts
Original file line number Diff line number Diff line change
Expand Up @@ -163,13 +163,19 @@ export class AnsibleLint {
typeof item.check_name === "string" &&
item.location &&
typeof item.location.path === "string" &&
item.location.lines &&
(item.location.lines.begin ||
typeof item.location.lines.begin === "number")
((item.location.positions && item.location.positions.begin) ||
(item.location.lines &&
(item.location.lines.begin ||
typeof item.location.lines.begin === "number")))
) {
const begin_line =
item.location.lines.begin.line || item.location.lines.begin || 1;
const begin_column = item.location.lines.begin.column || 1;
const begin_line = item.location.positions
? item.location.positions.begin.line
: item.location.lines.begin.line ||
item.location.lines.begin ||
1;
const begin_column = item.location.positions
? item.location.positions.begin.column
: item.location.lines.begin.column || 1;
const start: Position = {
line: begin_line - 1,
character: begin_column - 1,
Expand Down
Loading

0 comments on commit 45edebf

Please sign in to comment.